网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月26日漏签0天
单片机吧 关注:213,131贴子:1,050,847
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1回复贴,共1页
<<返回单片机吧
>0< 加载中...

定时器中断问题,高手进来分析分析

  • 取消只看楼主
  • 收藏

  • 回复
  • 激o进的农民工
  • 中尉
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
子函数是这样的:
//***数据拆分****
*void sujufenxi()
{suju_suzu[0] = number%10;
suju_suzu[1] = number/10%10;
suju_suzu[2] = number/100%10;
suju_suzu[3] = number/1000%10;
suju_suzu[4] = number/10000%10;
suju_suzu[5] = number/100000%10;
suju_suzu[6] = number/1000000%10;
sju_suzu[7] = number/10000000%10;
//位数判断*****
if (number<10) weisu = 1;
else if(10<=number&&number<100)weisu = 2;
else if(100<=number&&number<1000)weisu = 3;
else if(1000<=number&&number<10000)weisu = 4;
else if(10000<=number&&number<100000)weisu = 5;
else if(100000<=number&&number<1000000)weisu = 6;
else if(1000000<=number&&number<10000000)weisu = 7;
else if(10000000<=number&&number<100000000)weisu = 8;number++;}
定时器0中断函数:
void Timer0() interrupt 1 using 1
{ static uint16 ab;
//abr = ~abr;
TH0 = 0xfc;
TL0 = 0x18;
if (ab == 1000)
{sujufenxi();
abr = ~abr;
ab =0;
}
ab++;
refresh(); //刷新数码管
}
这样的话suju_suzu[]里面的值一直是0,改成这样就正常了:
void Timer0() interrupt 1 using 1
{ static uint16 ab;
//abr = ~abr;
TH0 = 0xfc;
TL0 = 0x18;
if (ab == 1000)
{
//sujufenxi();
abr = ~abr;
ab =0;
suju_suzu[0] = number%10;
suju_suzu[1] = number/10%10;
suju_suzu[2] = number/100%10;
suju_suzu[3] = number/1000%10;
suju_suzu[4] = number/10000%10;
suju_suzu[5] = number/100000%10;
suju_suzu[6] = number/1000000%10;
suju_suzu[7] = number/10000000%10;
//位数判断*****
if (number<10) weisu = 1;
else if(10<=number&&number<100)weisu = 2;
else if(100<=number&&number<1000)weisu = 3;
else if(1000<=number&&number<10000)weisu = 4;
else if(10000<=number&&number<100000)weisu = 5;
else if(100000<=number&&number<1000000)weisu = 6;
else if(1000000<=number&&number<10000000)weisu = 7;
else if(10000000<=number&&number<100000000)weisu = 8;
number++;
}
ab++;refresh();//刷新数码管
}
那个位高手分析分析这是为什么


  • 激o进的农民工
  • 中尉
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不是,前面是不正常的,改成后面的就正常了,变量声明时默认会赋值0吧


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回单片机吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示