C51矩阵键盘扫描程序

来源:互联网 发布:数据透视表常用快捷键 编辑:程序博客网 时间:2024/04/30 08:33
 
#include <reg52.h>#include <intrins.h>#define uchar unsigned charsfr KeyPort=0x90;  //#define KeyPort P1 -----行在P1口低四位//sbit Key_C1=P1^4;         //第1列接P1.4//sbit Key_C2=P1^5;         //第2列接P1.5//sbit Key_C3=P1^6;         //第3列接P1.6sfr Led=0x80;  //#define Led P0--------P0口LEDvoid delay(uchar ms);void main(){   uchar totle=0;Led=0xff;while(1){KeyPort=0x6f;  //0110 1111if(KeyPort!=0x6f){delay(10);if(KeyPort!=0x6f){switch(KeyPort){case 0x6e:  //0110 1110//Led=_crol_(Led,1);//Led=1;totle=totle+0x01;Led=totle;break;case 0x6d:  //0110 1101//Led=_crol_(Led,4);//Led=0x4;totle=totle+0x4;Led=totle;break;case 0x6b:  //0110 1011//Led=_crol_(Led,7);//Led=0x7;totle=+totle+0x7;Led=totle;break;case 0x67:  //0110 0111//Led=_crol_(Led,10);totle=0x00;Led=totle;break;}while(KeyPort!=0x6f);}}KeyPort=0x5f;  //0101 1111if(KeyPort!=0x5f){delay(10);if(KeyPort!=0x5f){switch(KeyPort){case 0x5e:  //0101 1110//Led=_crol_(Led,2);//Led=0x2;totle=totle+0x2;Led=totle;break;case 0x5d:  //0101 1101//Led=_crol_(Led,5);//Led=0x5;totle=totle+0x5;Led=totle;break;case 0x5b:  //0101 1011//Led=_crol_(Led,8);//Led=0x8;totle=totle+0x8;Led=totle;break; case 0x57:  //0101 0111//Led=_crol_(Led,11);totle=totle+0x0;Led=totle; break;}while(KeyPort!=0x5f);}}KeyPort=0x3f;  //0011 1111if(KeyPort!=0x3f){delay(10);if(KeyPort!=0x3f){switch(KeyPort){case 0x3e:  //0011 1110//Led=_crol_(Led,3);//Led=0x3;totle=totle+0x3;Led=totle;break;case 0x3d:  //0011 1101//Led=_crol_(Led,6);totle=totle+0x6;Led=totle;break;case 0x3b:  //0011 1011//Led=_crol_(Led,9);//Led=0x9;totle=totle+0x9;Led=totle;break;//case 0x37:  //0011 0111//Led=_crol_(Led,12);//break;}while(KeyPort!=0x3f);}}}}void delay(uchar ms){uchar i;for(;ms>0;ms--)for(i=0;i<244;i++);}

原创粉丝点击