?? keyscan.lst
字號:
C51 COMPILER V8.05a KEYSCAN 07/29/2007 09:35:52 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN KeyScan.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\KeyScan.c BROWSE DEBUG OBJECTEXTEND PRINT(.\KeyScan.lst) OBJECT(Key
-Scan.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程序名>:鍵盤掃描子程序 **
4 //**<功能>:當有外部中斷0時調用此函數,使用列掃描的方式獲取鍵碼,鍵碼由2位數字組成。高位為行號 **
5 //** 低位為列號。 **
6 //*************************************************************************************************
7 //*************************************************************************************************
8
9
10 //*************************************************************************************************
11 //* *
12 //* ******************************頭文件及宏定義************************** *
13 //* *
14 //*************************************************************************************************
15 #include <at89x51.h>
16
17
18 //*************************************************************************************************
19 //* *
20 //* ********************************全局變量****************************** *
21 //* *
22 //*************************************************************************************************
23 unsigned char uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F}; //LINE 1 2 3 4
24
25
26 //*************************************************************************************************
27 //* *
28 //* ********************************函數實現****************************** *
29 //* *
30 //*************************************************************************************************
31 unsigned char ucKeyScan()
32 {
33 1 unsigned char ucTemp=0; //掃描狀態暫存。
34 1 unsigned char ucRow=0,ucLine=0; //行號,列號。
35 1
36 1 for(ucLine=0;ucLine<4;ucLine++) //列掃描
37 1 {
38 2 P2=uca_LineScan[ucLine]; //輸出掃描電位。
39 2 ucTemp=P2&0x0F; //輸入掃描電位,并屏蔽高4位。
40 2 if(ucTemp!=0x0F) //判斷該列是否有按鍵按下,有則判斷出行號。
41 2 {
42 3 switch(ucTemp)
43 3 {
44 4 case 0x0E: ucRow=10;break;
45 4 case 0x0D: ucRow=20;break;
46 4 case 0x0B: ucRow=30;break;
47 4 case 0x07: ucRow=40;break;
48 4 default: ucRow=50;break;
49 4 }
50 3 break;
51 3 }
52 2 }
53 1 return ucRow+ucLine+1; //返回按鍵編碼。格式為2位數,高位為行號,低位為列號。
54 1 }
C51 COMPILER V8.05a KEYSCAN 07/29/2007 09:35:52 PAGE 2
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 64 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -