看看这个单片机程序

2019-07-16 04:04发布

本帖最后由 ytww19 于 2012-11-1 23:17 编辑

以下这个程序是来控制LED灯亮一个时间,灭是一个时间。怎么亮了一次就一直灭的状态?本来是控制LED灯P2口控制亮10S
灭5S一直这样循环下去。请高手指点啊  或者直接写个样板给我看看!
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void ds();
uchar T=0;

void ds()
{
        TMOD = 0x01;
        TH0  = 0x3c;
        TL0  = 0xb0;
        TR0  = 1;
        ET0         = 1;
        EA          = 1;        
}
void main()
{        
        ds();
        

        while(1);

}
void timer0() interrupt 1
{
        TH0  = 0x3c;          //50MS
        TL0  = 0xb0;
         
        T++;
        if(T>=200)  //10S
        {        
                P2=1;
                T=0;
                T++;
        
        
        if(T>=60)
                {        P2=0;
                        
                        T=0;
                     
                }
        }

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
ytww19
1楼-- · 2019-07-17 07:50
zsx1989 发表于 2012-11-2 00:57
很明显,T从0开始加,加到60后,你就把T给清零了,这样T永远也到不了200,所以P2一直等于0,至于亮了一次, ...

T>=60后就不会在返回原来的基础上吗?
ytww19
2楼-- · 2019-07-17 11:03
ytww19 发表于 2012-11-2 23:19
你光说一句混乱有什么用?如果这程序可以,我用的着来问么?你还不如别回答。
...

我刚学习,什么都不会,希望大家可以多指教多鼓励,谢谢!
斌尖卡
3楼-- · 2019-07-17 16:02
那个while 有问题
潮湿的心
4楼-- · 2019-07-17 19:11
xiazhidazhe
5楼-- · 2019-07-17 23:31
 精彩回答 2  元偷偷看……
郑团伟
6楼-- · 2019-07-18 05:10
   if(T>=200)  //10S
        {        
                P2=1;
                T=0;
                T++;
        
        
        if(T>=60)
                {        P2=0;
                        
                        T=0;
                     
                }
        }问题就在这呢

一周热门 更多>