剛學單片機,在百度上的復制過來的:
求單片機通過不同的按鍵來控制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燈是常亮。哪位大佬幫我看看程序哪里有問題。 |