📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 07/21/2007 15:08:32 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE code\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) OBJECT(main.obj)
line level source
1 /*********************************************************************************************************
-****
2 **作者:云明
3 **功能:行列扫描式键盘,键盘值通过串口传输给其他CPU。
4 **说明:这是一个4*4的行列扫描式键盘,利用P1口作为行列扫描端口。
5 **********************************************************************************************************
-****/
6
7
8
9 #include"config.h"
10
11
12 bit is_sen; /*是否要发送数据的标志*/
13 int8u data sen_data; /*所要发送的数据*/
14 int8u bdata key,temp;
15 sbit key0=key^0;
16 sbit key1=key^1;
17 sbit key2=key^2;
18 sbit key3=key^3;
19 sbit temp0=temp^0;
20 sbit temp1=temp^1;
21 sbit temp2=temp^2;
22 sbit temp3=temp^3;
23
24
25 void delay50()
26 {
27 1 int16u i=6000;
28 1 while(i!=0)
29 1 {
30 2 i--;
31 2 }
32 1 }
33
34
35 /*******************************************************
36 **名称:void sen_byte()
37 **功能:通过串口发送数据
38 **说明:通过设置发送标志和触发发送完毕中断来通知CPU要通
39 过串口来发送数据。这样做的好处是可以提高CPU的工
40 作效率。因为要发送数据是通过串口中断来把数据写
41 到SBUF里,写完一个字节后就跳出。如果是发送一串
42 数据的话,效率更加明显。
43 *******************************************************/
44 void sen_byte()
45 {
46 1 is_sen=1;
47 1 TI=1;
48 1 }
49
50
51 void sen() interrupt 4
52 {
53 1 if(TI)
C51 COMPILER V7.50 MAIN 07/21/2007 15:08:32 PAGE 2
54 1 {
55 2 TI=0;
56 2 if(is_sen==1)
57 2 {
58 3 // ACC=sen_data;
59 3 // CY=P;
60 3 // SBUF7=CY;
61 3 //sen_data=ACC;
62 3 SBUF=sen_data;
63 3 // SBUF=ACC;
64 3 is_sen=0;
65 3 }
66 2 }
67 1 }
68
69 void main()
70 {
71 1 is_sen=0;
72 1 TMOD=0x20;
73 1 SCON=0x50;
74 1 PCON=0;
75 1 TH1=0xfd;
76 1 TL1=0xfd;
77 1 TR1=1;
78 1 ES=1;
79 1 EA=1;
80 1
81 1 /************************************************
82 1 **以下是键盘扫描的程序。当发现有键按下时就读取键
83 1 **的位置值,然后编码并通过串口把键号送出去
84 1 ************************************************/
85 1 for(; ;)
86 1 {
87 2 P14=0;
88 2 P15=1;
89 2 P16=1;
90 2 P17=1;
91 2 key0=P10;
92 2 key1=P11;
93 2 key2=P12;
94 2 key3=P13;
95 2 key&=0x0f;
96 2 if(key!=0xf)
97 2 {
98 3 delay50();
99 3 temp0=P10;
100 3 temp1=P11;
101 3 temp2=P12;
102 3 temp3=P13;
103 3 temp&=0x0f;
104 3 if(key==temp)
105 3 {
106 4 switch(key)
107 4 {
108 5 case 14:sen_data=1;break;
109 5 case 13:sen_data=5;break;
110 5 case 11:sen_data=9;break;
111 5 case 7:sen_data=13;break;
112 5 default:break;
113 5 }
114 4 sen_byte();
115 4 while(P10!=1||P11!=1||P12!=1||P13!=1);
C51 COMPILER V7.50 MAIN 07/21/2007 15:08:32 PAGE 3
116 4 }
117 3 }
118 2
119 2 P14=1;
120 2 P15=0;
121 2 P16=1;
122 2 P17=1;
123 2 key0=P10;
124 2 key1=P11;
125 2 key2=P12;
126 2 key3=P13;
127 2 key&=0x0f;
128 2
129 2 if(key!=0xf)
130 2 {
131 3 delay50();
132 3 temp0=P10;
133 3 temp1=P11;
134 3 temp2=P12;
135 3 temp3=P13;
136 3 temp&=0x0f;
137 3 if(key==temp)
138 3 {
139 4 switch(key)
140 4 {
141 5 case 14:sen_data=2;break;
142 5 case 13:sen_data=6;break;
143 5 case 11:sen_data=10;break;
144 5 case 7:sen_data=14;break;
145 5 default:break;
146 5 }
147 4 sen_byte();
148 4 while(P10!=1||P11!=1||P12!=1||P13!=1);
149 4 }
150 3 }
151 2
152 2 P14=1;
153 2 P15=1;
154 2 P16=0;
155 2 P17=1;
156 2 key0=P10;
157 2 key1=P11;
158 2 key2=P12;
159 2 key3=P13;
160 2 key&=0x0f;
161 2 if(key!=0xf)delay50();
162 2 temp0=P10;
163 2 temp1=P11;
164 2 temp2=P12;
165 2 temp3=P13;
166 2 temp&=0x0f;
167 2
168 2
169 2 if(key!=0xf)
170 2 {
171 3 delay50();
172 3 temp0=P10;
173 3 temp1=P11;
174 3 temp2=P12;
175 3 temp3=P13;
176 3 temp&=0x0f;
177 3 if(key==temp)
C51 COMPILER V7.50 MAIN 07/21/2007 15:08:32 PAGE 4
178 3 {
179 4 switch(key)
180 4 {
181 5 case 14:sen_data=3;break;
182 5 case 13:sen_data=7;break;
183 5 case 11:sen_data=11;break;
184 5 case 7:sen_data=15;break;
185 5 default:break;
186 5 }
187 4 sen_byte();
188 4 while(P10!=1||P11!=1||P12!=1||P13!=1);
189 4 }
190 3 }
191 2
192 2 P14=1;
193 2 P15=1;
194 2 P16=1;
195 2 P17=0;
196 2 key0=P10;
197 2 key1=P11;
198 2 key2=P12;
199 2 key3=P13;
200 2 key&=0x0f;
201 2
202 2 if(key!=0xf)
203 2 {
204 3 delay50();
205 3 temp0=P10;
206 3 temp1=P11;
207 3 temp2=P12;
208 3 temp3=P13;
209 3 temp&=0x0f;
210 3 if(key==temp)
211 3 {
212 4 switch(key)
213 4 {
214 5 case 14:sen_data=4;break;
215 5 case 13:sen_data=8;break;
216 5 case 11:sen_data=12;break;
217 5 case 7:sen_data=16;break;
218 5 default:break;
219 5 }
220 4 sen_byte();
221 4 while(P10!=1||P11!=1||P12!=1||P13!=1);
222 4 }
223 3 }
224 2 }
225 1 }
226
227
228
229
230
231
232
233
234
235
236
237
238
239
C51 COMPILER V7.50 MAIN 07/21/2007 15:08:32 PAGE 5
240
241
242
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 539 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -