?? 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 + -