📄 key.lst
字号:
C51 COMPILER V8.02 KEY 11/11/2007 21:06:36 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<AT89X52.H>
2 #include"led.h" //该头文件包含数码管驱动动
3 /******************************************************
4 按键扫描函数
5 若有按键按下:返回 键值(1-16);
6 若没按键按下:返回 255
7 ********************************************************/
8 unsigned char getch ( )
9 {
10 1 unsigned char X=0,
11 1 Y=0,
12 1 Z=0,
13 1 k=255;
14 1 P2=0xff;
15 1 P2=0x0f; //先对P2置数 行扫描
16 1 if(P2!=0x0f) //判断是否有键按下
17 1 {
18 2 //延时,软件去干扰
19 2 if(P2!=0x0f) //确认按键按下X = P2;
20 2 {
21 3 X=P2; //保存行扫描时有键按下时状态
22 3 P2=0xf0; //列扫描
23 3 Y=P2; //保存列扫描时有键按下时状态
24 3 Z=X|Y; //取出键值
25 3 switch ( Z ) //判断键值(那一个键按下)
26 3 {
27 4 case 0xee: k=0; break; //对键值赋值
28 4 case 0xde: k=1; break;
29 4 case 0xbe: k=2; break;
30 4 case 0x7e: k=3; break;
31 4 case 0xed: k=4; break;
32 4 case 0xdd: k=6; break;
33 4 case 0xbd: k=7; break;
34 4 case 0x7d: k=8; break;
35 4 case 0xeb: k=9; break;
36 4 case 0xdb: k=7; break;
37 4 case 0xbb: k=10;break;
38 4 case 0x7b: k=11;break;
39 4 case 0xe7: k=12;break;
40 4 case 0xd7: k=13;break;
41 4 case 0xb7: k=14;break;
42 4 case 0x77: k=15;break;
43 4 }
44 3 while(P2!=0xf0);
45 3 }
46 2 }
47 1 return k;
48 1 }
49 void main()
50 {
51 1 unsigned char temp=0,key=255;
52 1 while(1)
53 1 {
54 2 key=getch(); //扫描
55 2 if(key!=255)temp=key; //有按键按下
C51 COMPILER V8.02 KEY 11/11/2007 21:06:36 PAGE 2
56 2 led_display(temp); //显示按键值
57 2 }
58 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 390 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 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 + -