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

一个定时器做的秒表的延时函数,,,看不懂

025c833b2bb372e8 2018-11-30 浏览量:769
void delay()     
{    
     unsigned char i = TH0+1; 
     if(i > 0xFE)    
     {
          i = 0xDC;    
     }
     while(i != TH0);  
}
0 0 收起

我来回答

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

其他答案 数量:8
  • 这样子的写法是没有使用中断服务程序,而是采用访问中断标志的方式,达到延时目的。
    • 发布于2018-11-30
    • 举报
    • 评论 0
    • 1
    • 0

  • 这个没有初始化也没有注释。但是从程序上分析,TH0应该会自己变化,而且从0变到255。如果i=TH0+1 > 254;那么设置i=0xDC,否则i=TH0+1,然后将i与TH0比较,如果不一样就卡住。那个条件判断无法理解。可以判断TH0是向下计数的。
    • 发布于2018-11-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个其实相当于直接跟你程序中的变量跟TH0寄存器比较,因为TH0计数器的值一直在减少,所以你的程序就可以判断计数的进度。

    • 发布于2018-11-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 一秒的时间是有点长了,对于定时器来说,所以,这里是配置了两次定时器时间 的
    • 发布于2018-11-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 程序中TH0一定是一个不依据程序运行自动变化的值,比如某个定时器(计数)寄存器的值。

    这样无论TH0如何计数,则都有条件使得延时程序进入一个阻塞状态,到i和TH0相等时退出。

    • 发布于2018-12-01
    • 举报
    • 评论 0
    • 0
    • 0

  • 这里的意思就是一直将变量与TH0比较,直到TH0等于那个变量就推出
    • 发布于2018-12-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是把你的数据和TH0比较,进行溢出的判断
    • 发布于2019-01-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 实际的效果就比较两个寄存器,然后输出时间
    • 发布于2019-01-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

一个定时器做的秒表的延时函数,,,看不懂