?? 矩陣鍵盤.lst
字號:
C51 COMPILER V7.50 __陣鍵盤 08/24/2011 11:40:31 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE __陣鍵盤
OBJECT MODULE PLACED IN 矩陣鍵盤.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 矩陣鍵盤.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 * 文件名 : 矩陣鍵盤.c
3 * 描述 : 該文件實(shí)現(xiàn)了 4 * 4 鍵盤的試驗(yàn)。通過數(shù)碼管的最后一位來顯示
4 當(dāng)前的按鍵值。
5 * 創(chuàng)建人 : 東流,2009年4月10日
6 * 版本號 : 2.0
7 *********************************************************************/
8 #include<reg51.h>
9 #include<intrins.h>
10
11 #define uint unsigned int
12 #define uchar unsigned char
13
14 uchar code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
15
16 /********************************************************************
17 * 名稱 : Delay_1ms()
18 * 功能 : 延時(shí)子程序,延時(shí)時(shí)間為 1ms * x
19 * 輸入 : x (延時(shí)一毫秒的個(gè)數(shù))
20 * 輸出 : 無
21 ***********************************************************************/
22 void Delay_1ms(uint i)//1ms延時(shí)
23 {
24 1 uchar x,j;
25 1 for(j=0;j<i;j++)
26 1 for(x=0;x<=148;x++);
27 1 }
28
29
30 /********************************************************************
31 * 名稱 : Keyscan()
32 * 功能 : 實(shí)現(xiàn)按鍵的讀取。下面這個(gè)子程序是按處理 矩陣鍵盤 的基本方法處理的。
33 * 輸入 : 無
34 * 輸出 : 按鍵值
35 ***********************************************************************/
36 uchar Keyscan(void)
37 {
38 1 uchar i,j, temp, Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf7}; //給矩陣鍵盤的每行分別付低電平
39 1 for(j=0; j<4; j++)
40 1 {
41 2 P1 = Buffer[j];
42 2 temp = 0x10;
-
43 2 for(i=0; i<4; i++)
44 2 {
45 3 if(!(P1 & temp)) //判斷P1口高4位某一行為低電平
46 3 {
47 4 return (i+j*4); //返回鍵碼
48 4 }
49 3 temp <<= 1;
50 3 }
51 2 }
52 1 }
53
54 /********************************************************************
C51 COMPILER V7.50 __陣鍵盤 08/24/2011 11:40:31 PAGE 2
55 * 名稱 : Main()
56 * 功能 : 主函數(shù)
57 * 輸入 : 無
58 * 輸出 : 無
59 ***********************************************************************/
60 void Main(void)
61 {
62 1 uchar Key_Value; //讀出的鍵值
63 1 while(1)
64 1 {
65 2 P1 = 0xf0;
66 2 if(P1 != 0xf0) //判斷有無按鍵按下
67 2 {
68 3 Delay_1ms(20); //按鍵消抖
69 3 if(P1 != 0xf0) //第二次判斷有無按鍵按下
70 3 {
71 4 Delay_1ms(20); //按鍵消抖
72 4 if(P1 != 0xf0) //第三次判斷有無按鍵按下
73 4 {
74 5 Key_Value = Keyscan();
75 5 }
76 4 }
77 3 }
78 2 P0 = table[Key_Value];
79 2 P2 = 0x07;
80 2 }
81 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 129 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -