满意答案

dogstar588
2018.03.29

采纳率:48% 等级:9
已帮助:215人
#include
#define uchar unsigned char
uchar cnt,key=0,led1=0x00;led2=0xfe;
sbit key1=P3^6;
sbit key2=P3^7;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
cnt%=10;
if(cnt==0)
{
switch(key)
{
case 0:
P1=led1;
led1=~led1;
break;
case 1:
led2=_cror_(led2,1);
P1=led2;
break;
case 2:
P1=led2;
led2=_crol_(led2,1);
}
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(key1==0)
{
while(key1==0);
key=1;
}
if(key2==0)
{
while(key2==0);
key=2;
}
}
}
10分享举报
这篇博客展示了如何使用51单片机配合定时器T0实现按键控制LED灯的闪烁,通过uchar变量和中断处理,通过switch-case语句切换不同LED状态。关键代码包括宏定义、定时器初始化和中断服务函数。
2976

被折叠的 条评论
为什么被折叠?



