• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

51计数器(NE555应用)

676d355b4883e879 2019-03-27 浏览量:777
void Timer_Config()
{
TMOD=0x51;
TH0=0x3C;       //50ms初值
TL0=0xB0;       //50ms初值
ET0=1;
ET1=1;
EA=1;
TR0=1;
TR1=1;

}

void Timer1() interrupt 3
{
Freq=Freq+65536;
}

这里为什么说进入一次中断,表明计数就到了65536?不是进入一次中断就表明计数了50次吗?


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • NE555???

    定时器中断溢出。本来就是计时到65535再加一的时候就溢出了呀,就进入定时器的中断了。

    计一次数的时间一般是1us左右。看晶振频率

    定时器进中断时间为65536-初值。然后除以计数一次的时间。

    定时器的工作原理是:从你给的初值(即TH0/TL0)开始计数,当TH0=0XFFTL0=0XFF再增加一,就溢出进入中断了。

    • 发布于 2019-03-28
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 第一次进去中断是用了50ms,但是因为没有重装th0和tl0,所以这时候从0开始计数需要65536us就不是50ms,那么下次进去总得时间累加就是上的时间加65536,每进一次加一次
    • 发布于2019-03-27
    • 举报
    • 评论 2
    • 0
    • 0
676d355b4883e879 回复了 yhj416606438 :就是说上面定义的中断仅第一次有效。只要进入中断后,后面就不用每次执行上面的定义函数,就一直执行下面的中断函数了呗? 回复
676d355b4883e879 回复了 yhj416606438 :那比如说我中断运行了55000个次,也就是说55ms,这时候进入中断了。那这个时候Freq=? 回复

相关问题

问题达人换一批

51计数器(NE555应用)