用51单片机实现,两个开关分别控制八个LED灯从左往右循环点亮,以及从右往左循环点亮,求C语言代码!

打开开关1的时间间隔为0.5s,开关二为1s!关键是如何将开关与其联系起来,说明原因也可

第1个回答  2013-06-21
#include<reg51.h>
#define uchar unsigned char
uchar times,led;
sbit key1=P1^0;
sbit key2=P1^1;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
times++;
}
void rolled()
{
P0=led;
led=(led>>1)|0x80;
if(led==0xff)led=0x7f;
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
led=0x7f;
while(1)
{
if(key1==0)
{
if(times>=10){times=0;rotled();}
}
if(key2==0)
{
if(times>=20){times=0;rotled();}
}
}
}追问

void rolled()
{
P0=led;
led=(led>>1)|0x80;}
if(led==0xff)led=0x7f;
P0口控制Led?这段是什么意思??

追答

因为你没有具体要求,这里假设P0控制LED,这段意思是LED右移一位循环显示,也就是流水灯。

本回答被提问者采纳
相似回答