《44键盘扫描程序(凌阳16位单片机).doc》由会员分享,可在线阅读,更多相关《44键盘扫描程序(凌阳16位单片机).doc(3页珍藏版)》请在三一文库上搜索。
1、unsigned int key_code=0x0010;/-定义全局变量,用于存储获得的键值unsigned int newkey=0x0010;/-定义全局变量,用于判断获得的键值/*- -*/函数名称:checkkeypad()/功能描述:键盘扫描函数/语法格式:void checkkeypad()/入口参数;无/出口参数:说/注意事项:仅为用户模型/*-*/void checkkeypad(void)unsigned int m;/-定义局部变量,用于获得IOA口的数据*p_ioa_attrib=0xfff0;*p_ioa_dir=0xfff0;*p_ioa_data=0xfff0;/
2、-设置IOA口asm(nop);asm(nop);asm(nop);m=*p_ioa_data;m&=0x000f;switch(m)case 0x0001:*p_ioa_attrib=0xff0f;*p_ioa_dir=0xff0f;*p_ioa_data=0xff0f;m=*p_ioa_data;m&=0x00f0;switch(m)case 0x0010:key_code=0x0000;break;case 0x0020:key_code=0x0001;break;case 0x0040:key_code=0x0002;break;case 0x0080:key_code=0x0003;
3、break;break;case 0x0002:*p_ioa_attrib=0xff0f;*p_ioa_dir=0xff0f;*p_ioa_data=0xff0f;m=*p_ioa_data;m&=0x00f0;switch(m)case 0x0010:key_code=0x0004;break;case 0x0020:y_code=0x0005;break;case 0x0040:key_code=0x0006;break;case 0x0080:key_code=0x0007;break;break;case 0x0004:*p_ioa_attrib=0xff0f;*p_ioa_dir=0
4、xff0f;*p_ioa_data=0xff0f;m=*p_ioa_data;m&=0x00f0;switch(m)case 0x0010:key_code=0x0008;break;case 0x0020:key_code=0x0009;break;case 0x0040:key_code=0x000a;break;case 0x0080:key_code=0x000b;break;break;case 0x0008:*p_ioa_attrib=0xff0f;*p_ioa_dir=0xff0f;*p_ioa_data=0xff0f;m=*p_ioa_data;m&=0x00f0;switch(m)case 0x0010:key_code=0x000c;break;case 0x0020:key_code=0x000d;break;case 0x0040:key_code=0x000e;break;case 0x0080:key_code=0x000f;break;break;if(key_code=0x0010)newkey=0x0020;return;else if(key_code=newkey)return;elsenewkey=key_code;return;