📄 key.lst
字号:
C51 COMPILER V7.06 KEY 06/25/2008 15:44:08 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN KEY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe KEY.C DB OE
stmt level source
1 //********************************************************************************************************
-******************
2 #include <c8051F020.h>
3 #include "HEAD.H"
4 //********************************************************************************************************
-******************
5 xdata unsigned char con_press_mark;
6 //********************************************************************************************************
-******************
7 bit key_line_in(void)
8 {
9 1 IN_KEY_ROW = 1;
10 1
11 1 return ( IN_KEY_ROW ) ;
12 1
13 1 }
14 //********************************************************************************************************
-******************
15
16 void key_line_out(unsigned char out_data)
17 {
18 1 xdata unsigned char i;
19 1
20 1 KEY_CLK_0
21 1 for (i = 0 ; i< 8 ; i ++)
22 1 {
23 2 out_data <<= 1;
24 2 if(CY)
25 2 KEY_DATA_1
26 2 else
27 2 KEY_DATA_0
28 2 KEY_CLK_1
29 2 KEY_CLK_0
30 2 }
31 1 KEY_DATA_1
32 1 }
33 //********************************************************************************************************
-******************
34
35 unsigned char get_key( unsigned char countinue_dir )
36 {
37 1 key_line_out(0);
38 1 if(key_line_in())
39 1 {
40 2 IN_KEY_ROW = 0;
41 2 Delay_ms( 100 ) ;
42 2 return (0);//判断无键输入
43 2 }
44 1 Delay_ms( 10 ) ;
45 1 if(key_line_in()) return (0);
46 1 //有键输入
47 1 key_line_out(0xfe) ;
48 1 if(!key_line_in())
49 1 {
50 2 KEYLED=1;
C51 COMPILER V7.06 KEY 06/25/2008 15:44:08 PAGE 2
51 2 while(!key_line_in() && countinue_dir);// WDTCR = 0x37;
52 2 KEYLED=0;
53 2 if(!countinue_dir)
54 2 {
55 3 if(con_press_mark < 4)
56 3 {
57 4 countinue_dir = 10;
58 4 while(!key_line_in() )
59 4 {
60 5 Delay_ms((5 - con_press_mark) * 20);
61 5 if(!countinue_dir-- ) {con_press_mark++; break;}
62 5 }
63 4 }
64 3 }
65 2 else con_press_mark = 0;
66 2 return (UP_ARROW_KEY);
67 2 }
68 1
69 1 key_line_out(0xfd) ;
70 1 if(!key_line_in())
71 1 {
72 2 KEYLED=1;
73 2 while(!key_line_in() && countinue_dir);// WDTCR = 0x37;
74 2 KEYLED=0;
75 2 if(!countinue_dir)
76 2 {
77 3 if(con_press_mark < 4)
78 3 {
79 4 countinue_dir = 10;
80 4 while(!key_line_in() )
81 4 {
82 5 Delay_ms((5 - con_press_mark) * 20);
83 5 if(!countinue_dir-- ) {con_press_mark++; break;}
84 5 }
85 4 }
86 3 }
87 2 else con_press_mark = 0;
88 2 return (LEFT_ARROW_KEY);
89 2 }
90 1
91 1 key_line_out(0xfb) ;
92 1 if(!key_line_in())
93 1 {
94 2 KEYLED=1;
95 2 while(!key_line_in() && countinue_dir);// WDTCR = 0x37;
96 2 KEYLED=0;
97 2 if(!countinue_dir)
98 2 {
99 3 if(con_press_mark < 4)
100 3 {
101 4 countinue_dir = 10;
102 4 while(!key_line_in() )
103 4 {
104 5 Delay_ms((5 - con_press_mark) * 20);
105 5 if(!countinue_dir-- ) {con_press_mark++; break;}
106 5 }
107 4 }
108 3 }
109 2 else con_press_mark = 0;
110 2 return (DOWN_ARROW_KEY);
111 2 }
112 1
C51 COMPILER V7.06 KEY 06/25/2008 15:44:08 PAGE 3
113 1 key_line_out(0xf7) ;
114 1 if(!key_line_in())
115 1 {
116 2 KEYLED=1;
117 2 while(!key_line_in() && countinue_dir);// WDTCR = 0x37;
118 2 KEYLED=0;
119 2 if(!countinue_dir)
120 2 {
121 3 if(con_press_mark < 4)
122 3 {
123 4 countinue_dir = 10;
124 4 while(!key_line_in() )
125 4 {
126 5
127 5 Delay_ms((5 - con_press_mark) * 20);
128 5 if(!countinue_dir-- ) {con_press_mark++; break;}
129 5 }
130 4 }
131 3 }
132 2 else con_press_mark = 0;
133 2 return (RIGHT_ARROW_KEY);
134 2 }
135 1
136 1 key_line_out(0xef) ;
137 1 if(!key_line_in())
138 1 {
139 2 KEYLED=1;
140 2 while(!key_line_in());
141 2 KEYLED=0;
142 2 return (RETURN_KEY);
143 2 }
144 1 return(0);
145 1 }
146
147 //********************************************************************************************************
-******************
148 // The End
149 //********************************************************************************************************
-******************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 472 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1 1
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
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 + -