📄 dzb.lst
字号:
238 2 while(temp!=0xfb){temp=P0;}
239 2
240 2 }
241 1
C51 COMPILER V6.12 DZB 01/13/2009 19:14:52 PAGE 5
242 1 P0=0xf7;
243 1 temp=P0;
244 1 if (temp!=0xf7)
245 1 {
246 2 delay1(5);
247 2 temp=P0;
248 2 if (temp!=0xf7)
249 2 {
250 3 switch(temp)
251 3 {
252 4 case 0xe7:num=13;
253 4 break;
254 4 case 0xd7:num=9;
255 4 break;
256 4 case 0xb7:num=5;
257 4 break;
258 4 case 0x77:num=1;
259 4 break;
260 4 }
261 3 }
262 2 while(temp!=0xf7){temp=P0;}
263 2
264 2 }
265 1
266 1 P0=0xff;
267 1 return num;
268 1
269 1 }//键盘扫描程序over
270
271
272
273
274 void init()//初始化函数
275 {
276 1 shi=23;//小时
277 1 fen=59;//分钟
278 1 miao=58;//秒钟
279 1
280 1
281 1 TMOD=0x01;//设置定时器工作模式
282 1 TH0=(65536-51000)/256;//装初值让它5毫秒中断一次count++
283 1 TL0=(65536-51000)%256;
284 1 EA=1;//打开总中断
285 1 ET0=1;//开定时器中断
286 1 TR0=1;//开定时器
287 1 }
288
289 void main()//主函数
290 {
291 1 uint san;//这个变量是用来显示闪烁效果的
292 1 init();//初始化
293 1 wz=1;
294 1 while(1)//进入大循环
295 1 {
296 2 if(gnj!=0)//判断设置键
297 2 {
298 3 wz=1;
299 3 while(gnj==1)//功能键=1时设置秒钟
300 3 {
301 4
302 4 if(san<30)//闪烁显示秒
303 4 {
C51 COMPILER V6.12 DZB 01/13/2009 19:14:52 PAGE 6
304 5 xianshi(shi,fen,miao);
305 5 }
306 4 if(san>40)
307 4 {
308 5 xianshi(shi,fen,70);//让显示函数,在秒的位置显示点
309 5 }
310 4
311 4 san++;
312 4 if(san>60)
313 4 {
314 5 san=0;
315 5 }
316 4 keyzhi=keyscan();//调用键盘
317 4
318 4 if(keyzhi!=0&keyzhi<11)//判断键盘在1到10之间
319 4 {
320 5
321 5 if(wz==1)//wz用来控制设置的是十位还是个位
322 5 {
323 6 miao=(keyzhi-1)*10;//设置秒十位
324 6 if(miao>59)miao=50;
325 6 keyzhi=0;
326 6
327 6 }
328 5 if(wz==2)
329 5 {
330 6 miao=miao+keyzhi-1;//设置个位
331 6 keyzhi=0;
332 6 wz=0;
333 6 gnj++;
334 6
335 6 }
336 5 wz++;
337 5 }
338 4
339 4 }
340 3 wz=1;
341 3 while(gnj==2)//设置分钟
342 3 {
343 4
344 4 if(san<20)
345 4 {
346 5 xianshi(shi,fen,miao);
347 5 }
348 4 if(san>40)
349 4 {
350 5 xianshi(shi,70,miao);
351 5 }
352 4
353 4 san++;
354 4 if(san>60)
355 4 {
356 5 san=0;
357 5 }
358 4 keyzhi=keyscan();
359 4
360 4 if(keyzhi!=0&keyzhi<11)
361 4 {
362 5
363 5 if(wz==1)
364 5 {
365 6 fen=(keyzhi-1)*10;
C51 COMPILER V6.12 DZB 01/13/2009 19:14:52 PAGE 7
366 6 if(fen>59)fen=50;
367 6 keyzhi=0;
368 6
369 6 }
370 5 if(wz==2)
371 5 {
372 6 fen=fen+keyzhi-1;
373 6 keyzhi=0;
374 6 wz=0;
375 6 gnj++;
376 6
377 6 }
378 5 wz++;
379 5 }
380 4
381 4 }
382 3 wz=1;
383 3 while(gnj==3)//设置小时
384 3 {
385 4
386 4 if(san<20)
387 4 {
388 5 xianshi(shi,fen,miao);
389 5 }
390 4 if(san>40)
391 4 {
392 5 xianshi(70,fen,miao);
393 5 }
394 4
395 4 san++;
396 4 if(san>60)
397 4 {
398 5 san=0;
399 5 }
400 4 keyzhi=keyscan();
401 4
402 4 if(keyzhi!=0&keyzhi<11)
403 4 {
404 5
405 5 if(wz==1)
406 5 {
407 6 shi=(keyzhi-1)*10;
408 6 if(shi>20)shi=20;
409 6 keyzhi=0;
410 6
411 6 }
412 5 if(wz==2)
413 5 {
414 6 shi=shi+keyzhi-1;
415 6 if(shi>23)shi=23;
416 6 keyzhi=0;
417 6 wz=0;
418 6 gnj=0;
419 6
420 6 }
421 5 wz++;
422 5 }
423 4
424 4 }
425 3
426 3 }
427 2 else
C51 COMPILER V6.12 DZB 01/13/2009 19:14:52 PAGE 8
428 2 {
429 3 TR0=1;//打开定时器
430 3 }
431 2 keyzhi=keyscan();//扫描键盘
432 2 xianshi(shi,fen,miao);//显示时分秒
433 2 }
434 1
435 1 }
436
437 void timer0() interrupt 1//定时器函数
438 {
439 1 TH0=(65536-51189)/256;
440 1 TL0=(65536-51190)%256;
441 1 count++;
442 1 if(count==18)//加到18正好1秒中
443 1 {
444 2
445 2 count=0;
446 2
447 2
448 2 miao++;//秒加一
449 2 if(miao==60)//60秒加一分
450 2 {
451 3 miao=0;
452 3 fen++;
453 3 if(fen==60)//60分加一小时
454 3 {
455 4 fen=0;
456 4 shi++;
457 4 if(shi==24)//到24小时加以天
458 4 {
459 5 shi=0;
460 5
461 5 }
462 4 }
463 3 }
464 2 }
465 1 }
466
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1384 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 14
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 + -