?? 矩陣鍵盤.lst
字號:
C51 COMPILER V7.50 __陣鍵盤 04/09/2009 18:36:00 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE __陣鍵盤
OBJECT MODULE PLACED IN 矩陣鍵盤.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE 矩陣鍵盤.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 * 文件名 : 矩陣鍵盤.c
3 * 描述 : 該文件實現了 4 * 4 鍵盤的試驗。通過數碼管的最后兩位來顯示當前的按鍵值。
4 * 創建人 : 東流,2009年4月9日
5 * 版本號 : 2.0
6 * 技術支持論壇:www.zidh.com/bbs(請進入“贊助商板塊”中的“東流電子工作室”)
7 * 感謝“中國自動化資訊網”對本工作室的大力支持。
8 *********************************************************************/
9 #include<reg51.h>
10 #include<intrins.h>
11
12 #define uint unsigned int
13 #define uchar unsigned char
14
15 uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09};
16
17 /********************************************************************
18 * 名稱 : Delay_1ms()
19 * 功能 : 延時子程序,延時時間為 1ms * x
20 * 輸入 : x (延時一毫秒的個數)
21 * 輸出 : 無
22 ***********************************************************************/
23 void Delay_1ms(uint i)
24 {
25 1 uchar x,j;
26 1 for(j=0;j<i;j++)
27 1 for(x=0;x<=148;x++);
28 1 }
29
30
31 /********************************************************************
32 * 名稱 : Keyscan()
33 * 功能 : 實現按鍵的讀取。下面這個子程序是按處理 矩陣鍵盤 的基本方法處理的。
34 該函數的原理將在“視頻及教程”文件夾中介紹。
35 * 輸入 : 無
36 * 輸出 : 按鍵值
37 ***********************************************************************/
38 uchar Keyscan(void)
39 {
40 1 uchar i,j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};
41 1 for(j=0; j<4; j++)
42 1 {
43 2 P1 = Buffer[j];
44 2 /*以下三個_nop_();作用為讓 P1 口的狀態穩定*/
45 2 _nop_();
46 2 _nop_();
47 2 _nop_();
48 2 temp = 0x01;
-
49 2 for(i=0; i<4; i++)
50 2 {
51 3 if(!(P1 & temp))
52 3 {
53 4 return (i+j*4); //返回取得的按鍵值
54 4 }
C51 COMPILER V7.50 __陣鍵盤 04/09/2009 18:36:00 PAGE 2
55 3 temp <<= 1;
56 3 }
57 2 }
58 1 }
59
60 /********************************************************************
61 * 名稱 : Main()
62 * 功能 : 主函數
63 * 輸入 : 無
64 * 輸出 : 無
65 ***********************************************************************/
66 void Main(void)
67 {
68 1 uchar Key_Value; //讀出的鍵值
69 1 while(1)
70 1 {
71 2 P1 = 0xf0;
72 2 if(P1 != 0xf0)
73 2 {
74 3 Delay_1ms(15); //按鍵消抖
75 3 if(P1 != 0xf0)
76 3 {
77 4 Key_Value = Keyscan();
78 4 }
79 3 }
80 2 P0 = table[Key_Value / 10]; //顯示高位鍵值
81 2 P2 = 0x02;
82 2 Delay_1ms(5);
83 2 P0 = table[Key_Value % 10]; //顯示低位鍵值
84 2 P2 = 0x01;
85 2 Delay_1ms(5);
86 2 }
87 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 153 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -