P2口接8個LED流水燈,P3.0接一個按鍵
按鍵按下一次流水燈方向改變一次
單片機源程序如下:
#include<reg52.h> //51系列單片機頭文件
#include<intrins.h> //51系列單片機頭文件
#define uint unsigned int //宏定義
#define uchar unsigned char //宏定義
sbit k1=P3^0;
uchar a,b,c,d,y=0; //定義一個變量,用來給P2口賦值
void delayms(uint xms) //延時子函數
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
for(j=110;j>0;j--);
}
void key()
{
uchar x;
if(k1==0)
{
delayms(10); //延時10ms 去抖
if(k1==0) //再判斷k1按鍵是否按下
{
while(!k1);
x++;
if(x==4)
x=1;
if(y==4)
x=0;
switch(x) //條件選擇
{
case 1: y=1; break;
case 2: y=2; break;
case 3: y=3; break;
default: break;
}
}
}
}
void display()
{
if(y==0)
{
P2=a;
delayms(500);
a=~a; //狀態0時 LED閃爍
}
if(y==1)
{
P2=b;
delayms(500);
b=_crol_(b,1); //狀態1時 LED選擇左移
}
if(y==2)
{
P2=c;
delayms(500);
c=_cror_(c,1); //狀態2時 LED選擇右移
}
if(y==3)
{
P2=d;
delayms(500);
d=d; //狀態3時 LED全亮
}
}
void main()
{
a=0xff; //高4位和低4位都置為1
b=0x01; //只有低4位的最低位為1
c=0xfe; //低4位的最低位為0
d=0xff;
while(1)
{
key();
display(); //按鍵顯示
}
}
0.png (64.49 KB, 下載次數: 64)
下載附件
2021-5-3 00:59 上傳
|