- #include<reg51.h>
- #include<absacc.h>
- #defineucharunsignedchar
- #defineuintunsignedint
- voiddelays(void);
- ucharkbscan(void);
- voidmain(void)
- {
- ucharkey;
- while(1)
- {
- key=kbscan();/*键扫描函数*/
- delays();/*键消抖的延时函数*/
- }
- }
- //键消抖的延时函数
- voiddelays(void)
- {
- uchari;
- for(i=300;i>0;i--);
- }
- //kbscan(void)键扫描函数
- ucharkbscan(void)
- {
- ucharsccode,recode;
- P1=0xf0;/*发全"0"行扫描码,列线输入*/
- if((P1&0xf0)!=0xf0)/*若有键按下*/
- {
- delays();/*延时去抖动*/
- if((P1&0xf0)!=0xf0)
- {
- sccode=0xfe;/*逐行扫描初值*/
- while((sccode&0x10)!=0)
- {
- P1=sccode;/*输出行扫描码*/
- if((P1&0xf0)!=0xf0)/*本行有键按下*/
- {
- recode=(P1&0xf0)|0x0f;
- return((~sccode)+(~recode));/*返回特征字节码*/
- }
- elsesccode=(sccode<<1)|0x01;/*行扫描码左移一位*/
- }
- }
- }
- return(0);/*无键按下,返回值为0*/
- }
行列键盘的输入例程
最新推荐文章于 2024-10-24 11:41:38 发布