我做的呼吸灯为什么不亮啊啊啊啊

2019-07-14 19:50发布

为什么我用PWM做呼吸灯,为什么不亮呢?求教各位大神

#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit led0=P0^0;
uint count,time0,time1,DIR;
void unit ( );
void main( ){
unit ( );
count=0;
time0=0;
time1=0;
DIR=0;
while (1){
if(count==100){
count=0;
if(DIR==0)
time1++;
else
time1--;

}
if(time1==1000)
DIR=1;
if(time1==0)
DIR=0;
if(time0==1000)
time0=0;
if(time0<time1)
led0=1;
else
led0=0;
}
}
void unit ( ){
EA=1;
ET0=1;
TMOD=0x01;
TH0=0xFF;
TL0=0xFF;
TR0=1;

}
void zhongduan0( ) interrupt 1  
{
time0++;
count++;
TH0=0xFF;
TL0=0xFF;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
hobbye501
1楼-- · 2019-07-14 22:46
 精彩回答 2  元偷偷看……
houjue
2楼-- · 2019-07-15 03:31
P0^0上拉了没?换一个端口再试试看。
wulinwl
3楼-- · 2019-07-15 03:35
在天祥开发板试了,LED可以亮,貌似中断时间太短,看不到变化。
wulinwl
4楼-- · 2019-07-15 04:24
//改了4个运算符就可以呼吸了
#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit led0=P0^0;
uint count,time0,time1,DIR;
void unit ( );

void main( )
{
        unit ( );
        count=0;
        time0=0;
        time1=0;
        DIR=0;       
        while (1)
        {
                if(count>=100)
                {
                        count=0;
                        if(DIR==0)
                        time1++;
                        else
                        time1--;               
                }
                if(time1>=1000)
                        DIR=1;
                if(time1==0)
                        DIR=0;
                if(time0>=1000)
                        time0=0;
                if(time0<=time1)
                        led0=1;
                else
                        led0=0;
        }
}
void unit ( )
{
        EA=1;
        ET0=1;
        TMOD=0x01;
        TH0=0xFF;
        TL0=0xFF;
        TR0=1;
}

void zhongduan0( ) interrupt 1  
{
        time0++;
        count++;
        TH0=0xFF;
        TL0=0xFF;
}
wulinwl
5楼-- · 2019-07-15 09:47
//改成这样效果更好些
#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit led0=P0^0;
uint count,time0,time1,DIR;
//void unit ( );

void main( )
{
//        unit ( );
        count=0;
        time0=0;
        time1=0;
        DIR=0;       
        while (1)
        {
                time0++;
                count++;
                if(count>=200)
                {
                        count=0;
                        if(DIR==0)
                        time1++;
                        else
                        time1--;               
                }
                if(time1>=500)
                        DIR=1;
                if(time1==0)
                        DIR=0;
                if(time0>=500)
                        time0=0;
                if(time0<=time1)
                        led0=1;
                else
                        led0=0;
        }
}
/*
void unit ( )
{
        EA=1;
        ET0=1;
        TMOD=0x01;
        TH0=0xFF;
        TL0=0xFF;
        TR0=1;
}

void zhongduan0( ) interrupt 1  
{
        time0++;
        count++;
        TH0=0xFF;
        TL0=0xFF;
}
*/
呦呦呦123
6楼-- · 2019-07-15 10:58
 精彩回答 2  元偷偷看……

一周热门 更多>