![]() |
|
| | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 视频教程 | ieee | |
| 热门搜索关键字: 单片机教程 | 三极管 | 微电子 | C语言 | 汇编语言 | SCADA | 元器件 | IEEE | |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/********************************************************/
#i nclude < reg52.h >
unsigned char k_scan();
unsigned char k_pro();
unsigned char k_new,k_old;
unsigned char k;
void delay(unsigned char m);
sbit k1=P1^4; sbit k2=P1^5;
sbit k3=P1^6; sbit k4=P1^7;
sbit led0=P0^0; sbit led1=P0^1;
sbit led2=P0^2; sbit led3=P0^3;
bit n;
/********************************************************/
void main(void)
{
P0=0xff;
k_old=0x00;
while(1)
{
k_new=k_scan();
if(k_new!=k_old)
{ delay(1);
if(k_new!=k_old)
{k_old=k_new;
k=k_pro();}
}
switch(k)
{
case 1:{if(n)led0=0;else if(!n)led0=1;} break;
case 2:{if(n)led1=0;else if(!n)led1=1;} break;
case 3:{if(n)led2=0;else if(!n)led2=1;} break;
case 4:{if(n)led3=0;else if(!n)led3=1;} break;
default: break;
}
}
}
/********************************************************/
unsigned char k_pro()
{
switch (k_new)
{
case 0x01:{k=1;if(led1&led2&led3){n=!n;}
else {P0=0xff;}}
break;
case 0x02:{k=2;if(led0&led2&led3){n=!n;}P0=0xff;}
break;
case 0x04:{k=3;if(led0&led1&led3){n=!n;}P0=0xff;}
break;
case 0x08:{k=4;if(led0&led1&led2){n=!n;}P0=0xff;}
break;
default:
break;
}
return(k);
}
/********************************************************/
unsigned char k_scan()
{
P1=0xff;
k_new=0x00;
k_new=k_new|(!k4);
k_new=k_new<<1;
k_new|=(!k3);
k_new=k_new<<1;
k_new|=(!k2);
k_new=k_new<<1;
k_new|=(!k1);
return(k_new); //无键按下k_new=0x00
}
/********************************************************/
void delay(unsigned char m)
{
while(m--)
{
unsigned char i=255;
while(i--);
}
}
/********************************************************/
/*
还可以将 k_scan 函数更改为:
unsigned char k_scan()
{
P1=0xff;
[1] [2] 下一页
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站地图 | 名站导航 | 管理登录 | |
| 本站资源部分来自互联网,如侵犯您的权利,我们将予以删除 鲁ICP备08006092号 |
| 中国IEEE 中国电气电子工程师网 版权所有 |