刚学单片机,在百度上的复制过来的:
求单片机通过不同的按键来控制LED小灯的开启时间的程序,谢谢例如,p0.0~p0.7 八个按键,依次来控制p1.0口低电平的开启时间,如:
p0.0口按一下,p1.0口变为低电平,持续100毫秒后恢复高电平;
p0.1口按一下,p1.0口变为低电平,持续200毫秒后恢复高电平;
依次类推!
程序约简单越好!谢谢
#include<reg51.h>
#define uchar unsigned char
uchar time,stand;
sbit led=P1^0;
bit flag=0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
flag=~flag;
if(flag)
{
time++;
if(time>=stand){led=1;TR0=0;}
}
}
main()
{
uchar sw;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
while(1)
{
while(1)
{
sw=P0;
if(sw!=0xff)break;
}
time=2;
sw=~sw;
while(1)
{
sw=sw>>1;
if(sw!=0)time+=2;
else break;
}
TR0=1;
led=0;
}
}
我照上面做的结果LED灯是常亮。哪位大佬帮我看看程序哪里有问题。 |