请教一个简单的问题。为什么程序不执行miao=0;这条指令
#include<reg52.h>#define uchar unsigned char
uchar count,miao;
void time_init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()//主函数
{
time_init();
while(1);
{
if(miao==10)
{
miao=0;
}
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==60)
{
miao++;
}
}
为什么这样写,程序不执行miao=0;这条指令
而把if(miao==10);miao=0;放到中断服务函数里面去,又可以执行。为什么啊?
你试着把主循环里的代码改成miao>=10试试!! jlhgold 发表于 2013-5-19 20:42 static/image/common/back.gif
你试着把主循环里的代码改成miao>=10试试!!
改成maio>=10也一样,还是不执行miao=0. while(1)之后的分号去掉 count初始化时给其赋个0值看,另外, if(count==60)改成 if(count>=60)
主循环里的代码改成miao>=10。 顶4楼 看的真仔细 哈哈哈 4楼正解,写程序不能太马虎 lcw_swust 发表于 2013-5-19 20:54 static/image/common/back.gif
while(1)之后的分号去掉
就是这个 额,LZ的count不需要清零么? if(count==60)
{
miao++;
count=0;
} 4楼正解。。为什么我有种感觉。。这是个喵喵叫的程序呢? 是不是中断函数太长, wz18th 发表于 2013-5-20 00:21 static/image/common/back.gif
4楼正解。。为什么我有种感觉。。这是个喵喵叫的程序呢?
是单片机试卷,如何用定时器定时10秒。{:lol:} jlhgold 发表于 2013-5-19 21:08 static/image/common/back.gif
顶4楼 看的真仔细 哈哈哈
+1 miao++;后count = 0;即可 4楼火眼金睛啊! 哈哈,我也是看到多了个分号 lcw_swust 发表于 2013-5-19 20:54 static/image/common/back.gif
while(1)之后的分号去掉
真就是这个问题,非常感谢大家的热心回复, 四楼正解 while后面不用加分号 就可以了!! benqme 发表于 2013-5-20 12:45 static/image/common/back.gif
while后面不用加分号
也不是不能加,要看用在什么地方。。。。比如说,检测ADC的转换完成标志位和液晶的忙标志位等。。。。 LZ的分号不要乱加 while(1); if(miao==10);miao=0;if后面这个分号
页:
[1]