微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机C程序答疑!求各位大哥关照!

51单片机C程序答疑!求各位大哥关照!

时间:10-02 整理:3721RD 点击:

if(s==0xff)和if(s==0)的区别是什么?
在下面的程序中前者能返回m=0,s=0,  而后者做不到!
TH0=(65536-2000)/256;                  //重新赋值 2ms
TL0=(65536-2000)%256;
  if(Fg==1)
{
n++;
if(n==500)
{
   n=0;
   if((m!=0)||s)
     s--;
   if(s==0xff)
         {
           s=59;
           if(m>0)
           {
             m--;
           }
         }
}
}

S应该是无符号数,无符号数减到0以后就回到0xFF了。
这种编码风格实在无语。

程序看不大懂,但0xff是十六进制,转化成二进制是1111 1111,和0数值不等。

s的初始值是多少,考虑下,

这是一个定时报警的程序!当时间的减至 00—00时启动报警器
void Timer0_isr(void) interrupt 1
{
TH0=(65536-2000)/256;                  //重新赋值 2ms
TL0=(65536-2000)%256;

Display(0,8);
if(Fg==1)
{
n++;
if(n==500)
{
   n=0;
   if((m!=0)||s)
   
     s--;
   if(s==0xff)
         {
           s=59;
           if(m>0)
           {
             m--;
           }
         }
   
}
}
}
其中m=99;s=59;  关键就是if(s==0xff)   这个判断语句    是怎样实现其功能的呢?  s是整形变量(int)

理解不对,
   if((m!=0)||s)
   
     s--;
这个限制了S=0以后再减,看不懂了。

谢谢点播!我明白了, 但是要用定时器做一个定时报警器(当时间减至00—00时,触发警报),目前为止我觉得这是最好的算法,如有优势算法,还望指导!谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top