单片机 LED灯的程序问题

2019-07-15 18:45发布

刚开始学51单片机,买了个开发板,做LED实验,开发板的8个LED接的STC89C52RC的P2口@P2^0-P2^7分别对应1-8个LED)
想实现的效果是1-4个LED和5-8个LED两两交替闪烁,但是下载到单片机后的结果却是5-8四个LED可以实现LED4,LED6和LED5,LED7交替闪烁,但是LED0,LED2常亮,LED1和LED3一起快速闪一下后灭,然后又快速闪一下灭如此闪烁,删除下列程序中的if(b ==2)和if(b ==4)中的对应的任意一个函数,都能实现两两交替闪烁,求解!函数如下:
#include<reg52.h>
typedef unsigned char uint8;
uint8 a,b;
sbit LED0 = P2^0;
sbit LED1 = P2^1;
sbit LED2 = P2^2;
sbit LED3 = P2^3;
sbit LED4 = P2^4;
sbit LED5 = P2^5;
sbit LED6 = P2^6;
sbit LED7 = P2^7;
main()
{
        TMOD = 0x01;
        TF0 = 0;
        TH0 = 0xb8;
        TL0 = 0x00;
        TR0 = 1;
        P2 = 0xaa;
        a = 0; b = 0;
        while(1)
                {
                        if(TF0 == 1)
                                {
                                        TF0 = 0;
                                        TH0 = 0xb8;
                                        TL0 = 0x00;
                                        a++;
                                }
                        if(a == 10)
                                {
                                        a = 0;
                                        b++;
                                }
                        if(b == 2)
                                {
                                        LED4 = ~LED4;
                                        LED5 = ~LED5;
                                        LED6 = ~LED6;
                                        LED7 = ~LED7;        
                                }
                        if(b == 4)
                                {
                                        b = 0;
                                        LED0 = ~LED0;
                                        LED1 = ~LED1;
                                        LED2 = ~LED2;
                                        LED3 = ~LED3;
                                }
                        
                }

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
苍梧叶落
1楼-- · 2019-07-16 08:36
 精彩回答 2  元偷偷看……
guzhiqiang
2楼-- · 2019-07-16 12:04
苍梧叶落 发表于 2014-8-21 23:10
对于这种较短的程序,写个延时子函数,P2口直接赋值就好

这我明白,但是既然发现问题了,我想知道问题的原因,而不是避开它。
苍梧叶落
3楼-- · 2019-07-16 15:00
guzhiqiang 发表于 2014-8-22 07:54
这我明白,但是既然发现问题了,我想知道问题的原因,而不是避开它。

嗯,是的,问题总要面对的

一周热门 更多>