📄 step.lst
字号:
192 3 switch(keytmp)
193 3 {
194 4 case 1:
195 4 KEY=5; break; //3列1行()
196 4 case 2:
197 4 KEY=6; break; //3列2行()
198 4 default :
199 4 break;
200 4 }
201 3 }
202 2 }
203 1 P3=0x8c; //扫描第四列
204 1 temp=P3; //读出数据,看是否在此行上的某列键盘被按下
205 1 keytmp=temp&0x03; //P3.0~P3.1
206 1 if(keytmp!=0x00)
207 1 {
208 2 delay(1);
209 2 P3=0x8c; //消抖
210 2 temp=P3;
211 2 keytmp=temp&0x03;
212 2 if(keytmp!=0x00) //再次判断是否有键按下
213 2 {
214 3 switch(keytmp)
215 3 {
216 4 case 1:
217 4 KEY=7; break; //4列1行()
218 4 case 2:
219 4 KEY=8; break; //4列2行()
220 4 default :
221 4 break;
222 4 }
223 3 }
224 2 }
225 1 }
226 //------------------------------------------------------------------------------------
227 // 函数名称:dispxy()
228 // 函数功能:数码管显示子程序
229 //------------------------------------------------------------------------------------
230 void dispxy(unsigned int i,unsigned int j,unsigned int k)
231 {
232 1 P2=i; //选通数码管
233 1 P0=Led_code[j]; //送段码
234 1 delay(k);
235 1 }
236 //------------------------------------------------------------------------------------
237 // 函数名称:display()
238 // 函数功能:数码管显示
239 //------------------------------------------------------------------------------------
240 void display(void)
241 {
C51 COMPILER V7.07 STEP 11/10/2007 15:35:10 PAGE 5
242 1 Key_Scaning();
243 1 if(FLAG1==1) //显示切换标志位1(显示速度)
244 1 {
245 2 dispxy(0x01,Led1[0],200-(FLAG==1)*170);
246 2 dispxy(0x02,Led1[1],200-(FLAG==2)*170);
247 2 dispxy(0x04,Led1[2],200-(FLAG==3)*170);
248 2 dispxy(0x08,Led1[3],200-(FLAG==4)*170);
249 2 dispxy(0x10,Led1[4],200-(FLAG==5)*170);
250 2 dispxy(0x20,Led1[5],200-(FLAG==6)*170);
251 2 dispxy(0x40,Led1[6],200-(FLAG==7)*170);
252 2 dispxy(0x80,Led1[7],200-(FLAG==8)*170);
253 2 }
254 1 else //显示切换标志位0(显示坐标)
255 1 {
256 2 dispxy(0x01,Led2[0],200-(FLAG==1)*170);
257 2 dispxy(0x02,Led2[1],200-(FLAG==2)*170);
258 2 dispxy(0x04,Led2[2],200-(FLAG==3)*170);
259 2 dispxy(0x08,Led2[3],200-(FLAG==4)*170);
260 2 dispxy(0x10,Led2[4],200-(FLAG==5)*170);
261 2 dispxy(0x20,Led2[5],200-(FLAG==6)*170);
262 2 dispxy(0x40,Led2[6],200-(FLAG==7)*170);
263 2 dispxy(0x80,Led2[7],200-(FLAG==8)*170);
264 2 }
265 1 }
266 //------------------------------------------------------------------------------------
267 // 函数名称:Key_Control()
268 // 函数功能:键盘控制
269 //------------------------------------------------------------------------------------
270 void Key_Control(void)
271 {
272 1
273 1 unsigned int i;
274 1 time0_tmp=0xb880;
275 1 if(KEY==1)
276 1 {
277 2 KEY=0; //清键值
278 2 FLAG=0; //数码管闪烁标志位0(无闪烁)
279 2 FLAG1=0; //显示切换标志位0(显示坐标)
280 2 Led1[0]=0;Led1[1]=0;Led1[2]=0;Led1[3]=0;Led1[4]=0;Led1[5]=0;Led1[6]=0;Led1[7]=0;
281 2 Led2[0]=0;Led2[1]=0;Led2[2]=0;Led2[3]=0;Led2[4]=0;Led2[5]=0;Led2[6]=0;Led2[7]=0;
282 2 Go_line(); //前进
283 2 }
284 1 else if(KEY==2)
285 1 {
286 2 KEY=0; //清键值
287 2 FLAG=0; //数码管闪烁标志位0(无闪烁)
288 2 FLAG1=0; //显示切换标志位0(显示坐标)
289 2 Back_line(); //回零
290 2 }
291 1 else if(KEY==3)
292 1 {
293 2 FLAG1=1; //显示切换标志位1(显示速度)
294 2 Led1[0]=SpeedX%10;Led1[1]=(SpeedX%100)/10;Led1[2]=SpeedX/100;Led1[3]=10;//显示当前速度
295 2 Led1[4]=SpeedY%10;Led1[5]=(SpeedY%100)/10;Led1[6]=SpeedY/100;Led1[7]=10;
296 2 while(1)
297 2 {
298 3 KEY=0; //清键值
299 3 FLAG=1; //数码管闪烁标志位1(第1位闪烁)
300 3 if(KEY==5)
301 3 {
302 4 KEY=0; //清键值
303 4 Led1[0]+=1;
C51 COMPILER V7.07 STEP 11/10/2007 15:35:10 PAGE 6
304 4 while(Led1[0]>9)
305 4 Led1[0]=0;
306 4 }
307 3 else if(KEY==3)
308 3 break;
309 3 }
310 2 while(1)
311 2 {
312 3 KEY=0; //清键值
313 3 FLAG=2; //数码管闪烁标志位2(第2位闪烁)
314 3 if(KEY==5)
315 3 {
316 4 KEY=0; //清键值
317 4 Led1[1]+=1;
318 4 while(Led1[1]>9)
319 4 Led1[1]=0;
320 4 }
321 3 else if(KEY==3)
322 3 break;
323 3 }
324 2 while(1)
325 2 {
326 3 KEY=0; //清键值
327 3 FLAG=3; //数码管闪烁标志位3(第3位闪烁)
328 3 if(KEY==5)
329 3 {
330 4 KEY=0; //清键值
331 4 Led1[2]+=1;
332 4 while(Led1[2]>9)
333 4 Led1[2]=0;
334 4 }
335 3 else if(KEY==3)
336 3 break;
337 3 }
338 2 while(1)
339 2 {
340 3 KEY=0; //清键值
341 3 FLAG=5; //数码管闪烁标志位5(第5位闪烁)
342 3 if(KEY==5)
343 3 {
344 4 KEY=0; //清键值
345 4 Led1[4]+=1;
346 4 while(Led1[4]>9)
347 4 Led1[4]=0;
348 4 }
349 3 else if(KEY==3)
350 3 break;
351 3 }
352 2 while(1)
353 2 {
354 3 KEY=0; //清键值
355 3 FLAG=6; //数码管闪烁标志位6(第6位闪烁)
356 3 if(KEY==5)
357 3 {
358 4 KEY=0; //清键值
359 4 Led1[5]+=1;
360 4 while(Led1[5]>9)
361 4 Led1[5]=0;
362 4 }
363 3 else if(KEY==3)
364 3 break;
365 3 }
C51 COMPILER V7.07 STEP 11/10/2007 15:35:10 PAGE 7
366 2 while(1)
367 2 {
368 3 KEY=0; //清键值
369 3 FLAG=7; //数码管闪烁标志位7(第7位闪烁)
370 3 if(KEY==5)
371 3 {
372 4 KEY=0; //清键值
373 4 Led1[6]+=1;
374 4 while(Led1[6]>9)
375 4 Led1[6]=0;
376 4 }
377 3 else if(KEY==3)
378 3 break;
379 3 }
380 2 KEY=0; //清键值
381 2 FLAG=0; //数码管闪烁标志位0(无闪烁)
382 2 SpeedX=Led1[0]+Led1[1]*10+Led1[2]*100;//计算并存储所设速度
383 2 SpeedY=Led1[4]+Led1[5]*10+Led1[6]*100;
384 2 }
385 1 else if(KEY==4)
386 1 {
387 2 Led2[0]=Xe%10;Led2[1]=Xe/10;Led2[2]=11;Led2[3]=11;//显示当前坐标
388 2 Led2[4]=Ye%10;Led2[5]=Ye/10;Led2[6]=11;Led2[7]=11;
389 2 FLAG1=0; //显示切换标志位0(显示坐标)
390 2 while(1)
391 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -