?? sercom.lst
字號:
C51 COMPILER V7.03 SERCOM 12/28/2006 11:14:52 PAGE 1
C51 COMPILER V7.03, COMPILATION OF MODULE SERCOM
OBJECT MODULE PLACED IN sercom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sercom.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 sbit P34 = 0xB4;
4 sbit P35 = 0xB5;
6 unsigned char get_char(void); /* 函數說明 */
7 void delay(void);
8
9 main() {
10 1 unsigned char keybuf[16], count; /* 鍵盤緩沖區和讀鍵計數變量 */
11 1 SCON=0; /* 將串行口設置成工作方式0 */
12 1 ES=0; /* 禁止串口中斷 */
13 1 EA=0;
14 1 count=0;
15 1 while(count<16) keybuf[count++]=get_char(); /* 讀入16個按鍵的鍵值 */
16 1 }
17
18 unsigned char get_char(void) {
19 1 /* 定義表示列號、鍵序號和待發送數據的變量column、key_code和mask */
20 1 unsigned char key_code, column=0, mask=0x00;
21 1 /* 下列語句從串行口向74LS164移位輸出8個0 */
22 1 TI=0;
23 1 SBUF=mask;
24 1 while(TI==0); /* 等待發送完畢 */
25 1 /* 下列語句通過檢測P3.4和P3.5是否為0來判斷是否有鍵壓下, 檢測到有鍵壓下時
26 1 延時10ms以消除桉鍵抖動, 然后繼續檢測P3.4和P3.5是否為0, 若不為0則表明
27 1 檢測到干擾信號并繼續等待按鍵, 否則表示有一個鍵被可靠地按下并退出循環
28 1 */
29 1 while(1) {
30 2 while((P34&P35)!=0);
31 2 delay();
32 2 if((P34&P35)!=0) continue;
33 2 else break;
34 2 }
35 1 /* 下列語句分析被按下的鍵所在的列號 */
36 1 mask=0xfe;
37 1 while(1) {
38 2 TI=0;
39 2 SBUF=mask;
40 2 while(TI==0);
41 2 if((P34&P35)!=0) {
42 3 mask=_crol_(mask,1); /* mask的值循環左移一位 */
43 3 column++;
44 3 if(column>=8) column=0;
45 3 continue;
46 3 }
47 2 else break;
48 2 }
49 1 /* 下列語句分析被按下的鍵所在的行號并計算鍵序號 */
50 1 if(P34==0) key_code=column;
51 1 else key_code=8+column;
52 1 return(key_code);
53 1 }
54
55 void delay(void) {
C51 COMPILER V7.03 SERCOM 12/28/2006 11:14:52 PAGE 2
56 1 unsigned int i=10; /* 延時10ms */
57 1 while(i--);
58 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 136 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
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 + -