在单片机P1口上接有8只LED,在P3.2端口接有一只开关K1。
要求K1未按下时,P1口的8只LED全亮,K1按下时,使引脚接
地,产生一个跳沿触发的外中断请求,让低4位的LED与高4位的
LED交替闪烁5次。然后从中断返回,控制8个LED再次全亮。
这是STC51单片机-控制LED闪亮的仿真,我的文章中有一样的例子,详见:
https://blog.csdn.net/qq_46207024/article/details/125255660?spm=1001.2014.3001.5502
代码如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint t) //延时函数
{
uchar i;
while(t--) for(i=0;i<200;i++);
}
void main()
{
uchar l1=0xfe,l3=0x0f,l4=0x00;
while(1)
{
if((P2&0x03)==0x02){P1=l1;delay(100);l1=_crol_(l1,1) ;} // k1 按下,流水灯
if((P2&0x03)==0x01){P1=l3;delay(100);l3=~l3;} // k2 按下,高低 4 位交替亮
if((P2&0x03)==0x00){P1=~l4;delay(100);l4++;} //2 键都按下,加 1 显示
if((P2&0x03)==0x03){P1=0xff;delay(100);} //2 键都不按下,灯全不亮
}
}