标题:
为什么我这个检查单片机中断能否执行的程序会出现无加>无法检查的问题
[打印本页]
作者:
跳跳蛙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