📄 keyboord.lst
字号:
C51 COMPILER V8.02 KEYBOORD 04/04/2008 19:55:16 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEYBOORD
OBJECT MODULE PLACED IN keyboord.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboord.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"common.h"
2 #include"delay.h"
3
4 unsigned char a[4]={0xef,0xdf,0xbf,0x7f}; //从P5_4到P5_7依次发送低电平,对列写键值
5 unsigned char keyvalue=0;
6
7 unsigned char coding(unsigned char n) //译码
8 {
9 1 switch(n)
10 1 {
11 2 case 0xfe: return 0;break; //输入为 11111110 即为行号0
12 2 case 0xfd: return 1;break; //输入为 11111101 即为行号1
13 2 case 0xfb: return 2;break; //输入为 11111011 即为行号2
14 2 case 0xf7: return 3;break; //输入为 11110111 即为行号3
15 2 }
16 1 }
17
18 unsigned char keyscan()
19 {
20 1
21 1 unsigned char b;
22 1 unsigned char c;
23 1 unsigned char i;
24 1
25 1 for(i=0;i<4;i++) //列扫描,从P5_4开始到P5_7;i=0对应P5_4即第0列.
26 1 {
27 2
28 2 P5=a[i]; //写键值,低电平有效
29 2 b=P5; //读健值,低电平有效
30 2 b=b|0xf0; //取低四位(P5_0--P5_3)的低电平;屏蔽高四位(P5_4--P5_7)的低电平
31 2 if(b!=0xff)
32 2 {
33 3 delay_nms(10); //去抖动
34 3 c=P5;
35 3 c=c|0xf0;
36 3 if(b==c)
37 3 keyvalue=i*4+coding(c); //键值=列号*4+行号
38 3 }
39 2 }
40 1 return keyvalue;
41 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 91 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -