有关定时器程序上的一些不明白的问题,请求解答

2019-03-24 18:49发布

C51有关定时器的程序中一些地方实在看不明白,请大家帮忙看看,下面的程序是一部分,问题都标注出来了。谢谢!
  #include <reg52.h>
  #include <intrins.h>
  #define uint unsigned int
  #define uchar unsigned char
  long a=6553;
  bit flag=1;      //这是什么标志位?
  sbit LED=P1^0;
  SBIT BEEP=P3^7;

void Timer_init(void)
TMOD=0X11;
TH0=(65535-a)/256; //这个初值是什么意思?
TL0=(65535-a)%256;
EA=1;
ET0=1;
TR0=1;

void timer0(void)interrupt 1
{
  if (flag==1)
    {
      LED=0;
      TH0=65535-((65535-a)/256); //这里不明白?
      TL0=65535-((65535-a)%256);
    }
  if (flag==0)
    {
       LED=1;
      TH0=(65535-a)/256;
      TL0=(65535-a)%256;
    }
  flag=~flag
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
qinkaiabc
1楼-- · 2019-03-25 00:37
 精彩回答 2  元偷偷看……
qwei312
2楼-- · 2019-03-25 01:37
原帖由 qinkaiabc 于 2013-3-26 22:36 发表
①bit flag=1;      //这是什么标志位?这是你自定义的一个标标识。
②TH0=(65535-a)/256; //这个初值是什么意思?设置加1计数器的计数初值高字节
③TH0=65535-((65535-a)/256); //这里不明白?重新赋初值

最后 ...
那么, bit flag=1;在程序中起什么作用,它的值为1或0时的意义。谢谢!
qinkaiabc
3楼-- · 2019-03-25 05:15
分别进入下面if语句
if (flag==1)
     {
       LED=0;
       TH0=65535-((65535-a)/256); //这里不明白?
      TL0=65535-((65535-a)%256);
     }
   if (flag==0)
     {
        LED=1;
       TH0=(65535-a)/256;
       TL0=(65535-a)%256;
     }

一周热门 更多>