中易网

单片机数码管显示秒 为什么定时器2不行?

答案:4  悬赏:70  
解决时间 2021-02-16 16:04
#include
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar value,bai,shi,ge;
uint a;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void init()
{
TMOD=0x02;
EA=1;
ET0=1;
TR0=1;
TH0=6;
TL0=6;
}
void delay(uint z)
{
uint x;
while(z--)
{
for(x=110;x>0;x--);

}
}
void display(uchar bai,uchar shi,uchar ge)
{
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);

dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);

dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);

}
void main()
{
init();
while(1)
{
if(a==3685)
{
a=0;
value++;
if(value==100)
{
value=0;
}
bai=value/100;
shi=value/100%10;
ge=value%10;

}
display(bai,shi,ge);
}

}

void time0() interrupt 1
{
a++;

}

这个是程序 为什么我把定时器工作方式改成1就能工作而自动重装的方式2为什么不行?

定时器0方式2
最佳答案
因为你显示采用的延时方式,占用的时间约为3*2*110=660us。
采用方式2时定时为250us,则a=3685时,可能程序正在延时中,因此没有让程序执行到if(a==3685)语句,等程序执行到该语句时,a的值已经超过了3568了。
而采用工作方式1,定时时间比较长。进入一次定时中断可以执行数次主程序,以保证了每次都可以执行到 if(a==3685)。
全部回答
T2需要软件清除中断标志位。

th0=(65536-15536)/256;
tl0=(65536-15536)%256;
这个是由于tl0跟th0都是8位寄存器,组合在一起就是16为寄存器,那么2^16=65536;赋值的时候减去15536,是因为定时器溢出的时候是达到计数65536的时候,那么减去这个数就是相当于你想计数器计数15536个时钟clock后溢出;即从0到15536,共计15536个时钟clock;当达到15536后th已经到了65536溢出了,因为你赋的初值为65536-165536 = 49000;计数器实际工作是从49000开始的,

至于软件延时

void delay(uchar x)
{
   int i,j;
   for(i=x;i>0l;i--)
    for(j=255;j>0;j--);
}

这个是执行一条指令有不同的clock数的,赋值是一个clock,for可能是两个,而且跟单片机的晶振也有关系,是不精确的延时,

经过分析发现,你的条件设置的太苛刻了: if(a==3685) 虽然每当250个机器周期,a加一次一, 但是加到3685的时候,未必正好是在执行这条语句的位置上。 可以改成: if(a>=3685) 就可以了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
“更无山与齐”的前一句是什么?
怎么把图片改为幻灯片背景?
文化艺术幼儿园(明州路)地址在什么地方,想过
韩束精华液多少钱一瓶
unichi牡蛎精和好健康牡蛎精哪个好
金华大酒店(信阳息县)地址在什么地方,想过去
新疆伊犁旅游哪个季节去好
谁了解vans?从这双鞋鞋底来看它是不是正版
尚雅商务宾馆(一桥街)地址在什么地方,我要处
数学问题2的1.5次方是多少.怎么算的
虾风干还有营养吗?
全峰快递(天佑六路酱香饼士多东)怎么去啊,我
ultraiso可以打开多大的ISO文件
免实名手机卡哪里有卖的
菏泽机场什么时候开飞
推荐资讯
好慢呀,啥时候才有答案呢
翻译公司惊天内幕:为什么你买便宜的翻译服
和平副食批发地址有知道的么?有点事想过去
象山新桥供电营业厅地址在什么地方,我要处理
有没有人需要家教呀,本人暑假过
手环充不上电
有一张号为P65R662666的百元币,后面数字变小
屁股上长了一个又疼又硬的疮,周围是红色的,
象山大徐供电营业厅地址在什么地方,我要处理
Win10都来了,中国人为什么还喜欢用XP
昊润物流停车场地址在什么地方,我要处理点事
女阳历1996年6月6日子时出生什么命
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?