📄 keyboard.lst
字号:
C51 COMPILER V8.02 KEYBOARD 07/27/2007 22:23:38 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include"timer.h"
3 #include"keyboard.h"
4
5
6 bit FLAG0;
7
8 unsigned char ptr,m;
9 extern unsigned char dispcode[6];
10 //----------------------------------------------------------------------------------
11 //键盘码数组
12 unsigned char tab[16]= {0x01,0x02,0x03,0x04,
13 0x05,0x06,0x07,0x08,
14 0x09,0x0a,0x0b,0x0c,
15 0x0d,0x0e,0x0f,0x10
16 };
17
18
19 /*-----------------------------------------------------------------------------------
20 功能:键盘扫描程序
21 名称:Scan_Key
22 输入:无
23 输出:无
24 返回:无
25 -------------------------------------------------------------------------------------*/
26 void Scan_Key(void)
27 {
28 1 char a1,i;
29 1
30 1 FLAG0=0;
31 1
32 1 a1=0xf7; //列扫描初值
33 1
34 1 ptr=0;
35 1
36 1 for(i=0;i<4;i++) //键盘4个扫描列
37 1 {
38 2 P1=a1;
39 2 Delay(10);
40 2 m=P1;
41 2 switch( m & 0xf0 ) //取行的高4位,侦测那一行被按
42 2 {
43 3 case 0x70:
44 3 ptr=i*4; //第一行被按否? 如有则是tab[i*4]键
45 3 FLAG0=1; //表示有按键
46 3 break;
47 3 case 0xb0:
48 3 ptr=i*4+1; //第二行被按否? 如有则是tab[i*4+1]键
49 3 FLAG0=1;
50 3 break;
51 3 case 0xd0:
52 3 ptr=i*4+2; //第三行被按否? 如有则是tab[i*4+2]键
53 3 FLAG0=1;
54 3 break;
55 3 case 0xe0:
C51 COMPILER V8.02 KEYBOARD 07/27/2007 22:23:38 PAGE 2
56 3 ptr=i*4+3; //第四行被按否?如有则是tab[i*4+3]键
57 3 FLAG0=1;
58 3 break;
59 3 default:
60 3 break;
61 3 }
62 2
63 2 if( FLAG0 )
64 2 {
65 3 //----------------------------------------------------------------------------------
66 3 ////将键盘编码转换成显示编码
67 3 dispcode[0]=tab[ptr] % 10; //个数
68 3 dispcode[1]=tab[ptr] / 10; //十数
69 3 BEEP(200);
70 3 break; //有按键,则退出扫描
71 3 }
72 2
73 2 a1=a1>>1 | 0x80; //高位补1,由于P1.7~4末接+5V,而是由指令加载高电平
74 2
75 2
76 2 }
77 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 134 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 2
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -