标题: 为什么我这个检查单片机中断能否执行的程序会出现无加>无法检查的问题 [打印本页]

作者: 跳跳蛙LBW    时间: 2023-8-11 15:18
标题: 为什么我这个检查单片机中断能否执行的程序会出现无加>无法检查的问题
//本单片机代码能正常运行,红色字代码在尾部
//为什么写上if(T0Count>=1000)等会亮1s 再暗1s 重复循环 。而只写上  if(T0Count=1000) 时 却只能把灯一直点亮而无法熄灭
#include <REGX52.H>

        void Timer0Init(void)                //1毫秒@11.0592MHz     定时计算自动生成代码注意事项:1.新A2板采用的是11.0592MS晶振 注意采用的的是12T模式 注意STC89C52并没有16位自动重载
{
        //AUXR &= 0x7F;                //定时器时钟12T模式   //系统已设定定时器1T模式 无需再次手动设定
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x01;                //设置定时器模式
        TL0 = 0x18;                //设置定时初值
        TH0 = 0xFC;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;        //定时器0开始计时
  ET0=1;EA=1;
        PT0=0;
}


void main()
{    Timer0Init();
       while(1)
      {

      }

}


void Timer0_Routine() interrupt 1
{   
       static  unsigned int T0Count;
       TL0 = 0x18;                //设置定时初值
        TH0 = 0xFC;        
        T0Count++;
        if(T0Count>=1000)  //没有加大于号 为什么就不闪烁了     难道计数时间太快吗?
        {
                T0Count=0;
                P2_0=~P2_0;  //位取反可行
        }
}


作者: Hephaestus    时间: 2023-8-11 15:41
,这是个最基本人类理解导致的语法错误,但是符合c语言语法,不会报错。以后你一定要这么写,编译器才会告诉你写错了:

if(T0Count=1000)
改成
if(1000=T0Count)
才是合理的书写习惯,不然出错了你都找不到哪里出的错。
作者: aidianzi    时间: 2023-8-11 16:05
语法错误了  if(T0Count=1000) 中 T0Count=1000 是赋值,如果判断相等 需要输入 T0Count==1000
作者: 1600277881    时间: 2023-8-11 20:34
static  unsigned int T0Count=0;
作者: yzwzfyz    时间: 2023-8-12 09:18
板凳说的是。
作者: mtt661    时间: 2023-8-12 21:49
如果写成if(T0Count=1000),keil不会报错,但是会报警告。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1