硅谷狂夫 发表于 2013-5-19 20:38:04

请教一个简单的问题。为什么程序不执行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;放到中断服务函数里面去,又可以执行。为什么啊?

jlhgold 发表于 2013-5-19 20:42:41

你试着把主循环里的代码改成miao>=10试试!!

硅谷狂夫 发表于 2013-5-19 20:51:50

jlhgold 发表于 2013-5-19 20:42 static/image/common/back.gif
你试着把主循环里的代码改成miao>=10试试!!

改成maio>=10也一样,还是不执行miao=0.

lcw_swust 发表于 2013-5-19 20:54:16

while(1)之后的分号去掉

mcu_mouse 发表于 2013-5-19 20:56:33

count初始化时给其赋个0值看,另外, if(count==60)改成 if(count>=60)
主循环里的代码改成miao>=10。

jlhgold 发表于 2013-5-19 21:08:23

顶4楼 看的真仔细 哈哈哈

byrin219 发表于 2013-5-19 21:15:20

4楼正解,写程序不能太马虎

wjwjwjwj98 发表于 2013-5-19 22:19:30

lcw_swust 发表于 2013-5-19 20:54 static/image/common/back.gif
while(1)之后的分号去掉

就是这个

zjk 发表于 2013-5-19 22:25:51

额,LZ的count不需要清零么?

skylilin 发表于 2013-5-20 00:07:58

 if(count==60)
    {
              miao++;
            count=0;
        }

wz18th 发表于 2013-5-20 00:21:44

4楼正解。。为什么我有种感觉。。这是个喵喵叫的程序呢?

lourrr 发表于 2013-5-20 00:29:52

是不是中断函数太长,

qwe2231695 发表于 2013-5-20 02:19:50

wz18th 发表于 2013-5-20 00:21 static/image/common/back.gif
4楼正解。。为什么我有种感觉。。这是个喵喵叫的程序呢?

是单片机试卷,如何用定时器定时10秒。{:lol:}

51EDA技术 发表于 2013-5-20 08:01:35

jlhgold 发表于 2013-5-19 21:08 static/image/common/back.gif
顶4楼 看的真仔细 哈哈哈

+1                  

bbssilverkey 发表于 2013-5-20 10:19:54

miao++;后count = 0;即可

techbaby 发表于 2013-5-20 10:50:16

4楼火眼金睛啊!

iamfiavarst 发表于 2013-5-20 10:54:34

哈哈,我也是看到多了个分号

硅谷狂夫 发表于 2013-5-20 12:34:09

lcw_swust 发表于 2013-5-19 20:54 static/image/common/back.gif
while(1)之后的分号去掉

真就是这个问题,非常感谢大家的热心回复,

DAVID12 发表于 2013-5-20 12:36:21

四楼正解

benqme 发表于 2013-5-20 12:45:54

while后面不用加分号

benqme 发表于 2013-5-20 12:47:34

就可以了!!

lmt50211 发表于 2013-5-26 09:56:45

benqme 发表于 2013-5-20 12:45 static/image/common/back.gif
while后面不用加分号

也不是不能加,要看用在什么地方。。。。比如说,检测ADC的转换完成标志位和液晶的忙标志位等。。。。

xiaoyigechaos 发表于 2013-5-26 13:42:47

LZ的分号不要乱加   while(1);      if(miao==10);miao=0;if后面这个分号
页: [1]
查看完整版本: 请教一个简单的问题。为什么程序不执行miao=0;这条指令