?? 4x4key.lst
字號:
C51 COMPILER V7.50 4X4KEY 08/30/2008 16:56:52 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 4X4KEY
OBJECT MODULE PLACED IN 4X4key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4X4key.c BROWSE DEBUG OBJECTEXTEND TABS(3)
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #include "LCD1602.h"
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define key P1
7 // P1.0-P1.3 為橫行
8 // P1.4-P1.7 為豎列
9
10 uchar key_value,temp;
11
12 bit key_check();//
13 void keyvalue();//
14
15 void main()
16 {
17 1 key=0xff;
18 1 key_value=0;
19 1 LCD_init();
20 1 LCD_disp_string(0,0,"key_value");
21 1 while(1)
22 1 {if(key_check())
23 2 {
24 3 keyvalue();
25 3 if(key_value>9)
26 3 {
27 4 key_value+=7;
28 4 }
29 3 LCD_write_char(0,1,key_value+'0') ;
30 3 }
31 2 }
32 1 }
33
34 bit key_check()
35 {uchar temp1,temp2;
36 1 temp=0;
37 1 key=0x0f;
38 1 temp1=key;
39 1 if(temp1!=0x0f) // 如果有按鍵按下,temp1就不等于0x0f
40 1 {
41 2 delay_ms(10); // 去抖動
42 2 temp1=key; // 在次檢查是否有按鍵按下,以免由其他干擾引起的錯誤判斷
43 2 if(temp1!=0x0f)
44 2 {
45 3 key=0xf0; // 讓列為高電平,行為低電平
46 3 temp2=key;
47 3 temp=temp1|temp2; // temp等于讓行為低電平列為高電平時key的值或上讓行為高電平列為低電平時key的值
48 3 do
49 3 {
50 4 key=0x0f;
51 4 } // 等待按鍵釋放
52 3 while(key!=0x0f);
53 3 delay_ms(10); //延時去抖
54 3 }
55 2 }
C51 COMPILER V7.50 4X4KEY 08/30/2008 16:56:52 PAGE 2
56 1 if(temp!=0)
57 1 {
58 2 return 1;
59 2 } // 有按鍵按下 返回 1
60 1 else
61 1 {
62 2 return 0;
63 2 }
64 1 }
65
66 void keyvalue()
67 {
68 1 switch(temp) // 對鍵值的判斷
69 1 {
70 2 case 0xee: key_value=0; break;
71 2 case 0xde: key_value=1; break;
72 2 case 0xbe: key_value=2; break;
73 2 case 0x7e: key_value=3; break;
74 2 case 0xed: key_value=4; break;
75 2 case 0xdd: key_value=5; break;
76 2 case 0xbd: key_value=6; break;
77 2 case 0x7d: key_value=7; break;
78 2 case 0xeb: key_value=8; break;
79 2 case 0xdb: key_value=9;break;
80 2 case 0xbb: key_value=10;break;
81 2 case 0x7b: key_value=11;break;
82 2 case 0xe7: key_value=12;break;
83 2 case 0xd7: key_value=13;break;
84 2 case 0xb7: key_value=14;break;
85 2 case 0x77: key_value=15;break;
86 2 default: key_value=0; break;
87 2 }
88 1 }
89
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 467 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 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 + -