?? keyscan.lst
字號:
C51 COMPILER V7.50 KEYSCAN 10/14/2007 14:35:25 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN KeyScan.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\KeyScan.c BROWSE INCDIR(.\include;.\include) DEBUG OBJECTEXTEND PRI
-NT(.\KeyScan.lst) OBJECT(KeyScan.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程序名>:鍵盤掃描子程序 **
4 //**<功能>:當(dāng)有外部中斷0時(shí)調(diào)用此函數(shù),使用列掃描的方式獲取鍵碼,鍵碼由2位數(shù)字組成。高位為行號 **
5 //** 低位為列號。 **
6 //*************************************************************************************************
7 //*************************************************************************************************
8
9
10 //*************************************************************************************************
11 //* *
12 //* ******************************頭文件及宏定義************************** *
13 //* *
14 //*************************************************************************************************
15 #include <at89x51.h>
*** WARNING C318 IN LINE 15 OF sources\KeyScan.c: can't open file 'at89x51.h'
16
17 #define SCANPORT P1 //4×4鍵盤掃描端口,低4位是行線,高4位是列線。
18 //采用逐列掃描的方法,無按鍵時(shí),低4位輸出1,高4位輸出0。
19 //當(dāng)有按鍵時(shí),高4位輸出掃描電位,低4位輸入掃描結(jié)果。
20
21
22 //*************************************************************************************************
23 //* *
24 //* ********************************全局變量****************************** *
25 //* *
26 //*************************************************************************************************
27 unsigned char uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F}; //列線掃描電壓,分為第1,2,3,4根列線
28 //為低電平,其他為高電平。
29 //*************************************************************************************************
30 //* *
31 //* ********************************函數(shù)實(shí)現(xiàn)****************************** *
32 //* *
33 //*************************************************************************************************
34 unsigned char ucKeyScan()
35 {
36 1 unsigned char ucTemp=0; //掃描狀態(tài)暫存。
37 1 unsigned char ucRow=0,ucLine=0; //行號,列號。
38 1
39 1 EX0=0; //在鍵掃描處理時(shí),關(guān)閉外部中斷0,防抖動(dòng)。
*** ERROR C202 IN LINE 39 OF SOURCES\KEYSCAN.C: 'EX0': undefined identifier
40 1
41 1 for(ucLine=0;ucLine<4;ucLine++) //列掃描
42 1 {
43 2 SCANPORT=uca_LineScan[ucLine]; //輸出掃描電位。
*** ERROR C202 IN LINE 43 OF SOURCES\KEYSCAN.C: 'P1': undefined identifier
44 2 ucTemp=SCANPORT&0x0F; //輸入掃描電位,并屏蔽高4位。
*** ERROR C202 IN LINE 44 OF SOURCES\KEYSCAN.C: 'P1': undefined identifier
45 2 if(ucTemp!=0x0F)
46 2 { //判斷該列是否有按鍵按下。
47 3 switch(ucTemp)
48 3 {
49 4 case 0x0E: ucRow=10;break; //如果有,則判斷行號。
50 4 case 0x0D: ucRow=20;break;
C51 COMPILER V7.50 KEYSCAN 10/14/2007 14:35:25 PAGE 2
51 4 case 0x0B: ucRow=30;break;
52 4 case 0x07: ucRow=40;break;
53 4 default: ucRow=50;break;
54 4 }
55 3 break;
56 3 }
57 2 }
58 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢復(fù)鍵掃描處理前初始狀態(tài)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59 1 SCANPORT=0x0F; //恢復(fù)P2口
*** ERROR C202 IN LINE 59 OF SOURCES\KEYSCAN.C: 'P1': undefined identifier
60 1 EX0=1; //恢復(fù)按鍵中斷。
*** ERROR C202 IN LINE 60 OF SOURCES\KEYSCAN.C: 'EX0': undefined identifier
61 1 return ucRow+ucLine+1; //返回按鍵編碼。格式為2位數(shù),高位為行號,低位為列號。
62 1 }
C51 COMPILATION COMPLETE. 1 WARNING(S), 5 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -