📄 scankey.lst
字号:
C51 COMPILER V7.06 SCANKEY 12/17/2006 14:56:13 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SCANKEY
OBJECT MODULE PLACED IN ScanKey.OBJ
COMPILER INVOKED BY: E:\My Electronic\Tools\Design tools\keil7.06\C51\BIN\C51.EXE ScanKey.c LARGE OPTIMIZE(SIZE)
stmt level source
1 #include <REG52.H>
2
3 void delay_ms(unsigned int ms);
4
5 unsigned char ScanKey(void)
6 {
7 1 unsigned char uc_Temp_1,uc_Temp_2,key;
8 1 P1=0xff; //P1口置高电平,准备输入
9 1 P1=0x0f; //P1口高4位作为输出,输出0,低四位作为输入
10 1 if((P1&0x0f) != 0x0f) //如果按键有反应
11 1 {
12 2 delay_ms(5); //延时去抖
13 2 P1=0x0f;
14 2 if((P1&0x0f) != 0x0f) //如果为真,则确实有按键按下
15 2 {
16 3 uc_Temp_1=P1; //把这时P1口状态保存在一个变量中
17 3 P1=0xf0; //把P1口高四位置输入,低四位作为输出,注意:这就是'线翻转' (即输入输出翻转)的本质所在
18 3 uc_Temp_2=P1; //把这时P1口状态保存在一个变量中
19 3 key=(uc_Temp_1|uc_Temp_2);
20 3 while(P1!=0xf0);
21 3 switch (key)
22 3 {
23 4 case 0xE7: return (0);
24 4 case 0xEE: return (1);
25 4 case 0xDE: return (2);
26 4 case 0xBE: return (3);
27 4 case 0xED: return (4);
28 4 case 0xDD: return (5);
29 4 case 0xBD: return (6);
30 4 case 0xEB: return (7);
31 4 case 0xDB: return (8);
32 4 case 0xBB: return (9);
33 4 default: return key;
34 4 }
35 3 }
36 2 }
37 1 return (0xff);
38 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 119 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -