⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 liushuideng.c

📁 键盘控制流水灯的程序 已经经过调试可用
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void dlms(void);
uchar kbscan(void);
void menu(void);
void toi(void);
uchar it=20;
uchar bdata te;
sbit te_0=te^0;
sbit te_7=te^7;
bit bdata flag1;
bit bdata flag2;
uchar key;
void main(void)
{
te=0x80;
P2=te;
TMOD=0xf1;
TH0=0x4c;
TL0=0x81;
TR0=1;
ET0=1;
EA=1;
while(1)
{
key=kbscan();
menu();
}
}

void dlms(void){
uchar i;
for(i=200;i>0;i--){}
}

uchar kbscan(void){
uchar sccode,recode,de;
P1=0xf0;
if((P1&0xf0)!=0xf0){

dlms();

if((P1&0xf0)!=0xf0){
sccode=0xfe;
while((sccode&0x04)!=0){
P1=sccode;
if((P1&0xf0)!=0xf0){
recode=(P1&0xf0)|0x0f;
de=(~sccode)+(~recode);
switch(de)
{case 0x11:
 return(1);break;
case 0x21:
 return(2);break;
case 0x41:
 return(3);break;
case 0x81:
 return(4);break;
case 0x12:
 return(5);break;
case 0x22:
 return(6);break;
case 0x42:
 return(7);break;
case 0x82:
 return(8);break;
 default:
 break;
}
}
else
sccode=(sccode<<1)|0x01;
}
}
}
return(0);
}
void menu(void){
if(key==8)
TR0=!TR0;
if(TR0==0)
switch(key)
{
case 1:
te=0x80;P2=te;break;
case 2:
te=0xc0;P2=te;break;
case 3:
te=0xe0;P2=te;break;
case 4:
te=0xf0;P2=te;break;
case 5:
te=0xf8;P2=te;break;
case 6:
te=0xfc;P2=te;break;
case 7:
te=0xfe;P2=te;break;
default:
break;
}
}
void toi(void) interrupt 1 using 1
{
TH0=0x4c;TL0=0x81;
if((--it)==0){
it=20;
if(TR0==1)
{
flag2=te_0;
te=te>>1;
te_7=flag2;
P2=te;
P2=te;
}
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -