📄 万年历.lst
字号:
262 * 以下是通过按键控制年,月,日,时,分,秒,星期的显示和设置
263 *
264 *********************************************************************************************/
265 void nian()//显示和设置年
266 {
267 1 if(keys==10) //键值为10 表示年份
268 1 {
269 2 while(1)
270 2 {
271 3 W1302( 0x8e, 0x00); //打开写保护
272 3 da=R1302(0x8d);
273 3 a[0]=2;
274 3 a[1]=0;
275 3 a[2]=(da&0xf0)/16;
276 3 a[3]=(da&0x0f); //将键值记录
277 3 i=4;
278 3 xianshi(a,i);
279 3 keys=jpdata();
280 3 if(keys==14) //设置年份
281 3 {
282 4
283 4 for(i=2;i<4;)
284 4 {
285 5 if(jpdata()<10)
286 5 {
287 6 keys=jpdata();
288 6 a[i]=keys;
289 6 i++;
290 6 while(1)
291 6 {
292 7 if(jpdata()==16)
293 7 break;
294 7 xianshi(a,i);
295 7 }
296 6 }
297 5
298 5 xianshi(a,i);
299 5 }
300 4 W1302( 0x8e, 0x00);
301 4 W1302(0x8c,(a[2]*16)|a[3]);
302 4 }
303 3 if(keys==11) {yue_ri();}
C51 COMPILER V7.50 万年繽 03/10/2009 19:04:18 PAGE 6
304 3 if(keys==12) {shi_fen();}
305 3 if(keys==13) {miao();}
306 3 if(keys==15) {xingqi();}
307 3
308 3 } //将键值的有效位数记录
309 2 }
310 1 }
311
312
313
314 void yue_ri()//显示和设置月/日
315 {
316 1 if(keys==11) // 表示月/日
317 1 {
318 2 while(1)
319 2 {
320 3 W1302( 0x8e, 0x00);
321 3 da=R1302(0x89); //读月
322 3 a[0]=(da&0xf0)>>4;
323 3 a[1]=(da&0x0f);
324 3 W1302( 0x8e, 0x00);
325 3 da=R1302(0x87); //读日
326 3 a[2]=(da&0xf0)>>4;
327 3 a[3]=(da&0x0f); //将键值记录
328 3 i=4;
329 3 xianshi(a,i);
330 3 keys=jpdata();
331 3 if(keys==14) //设置月/日
332 3 {
333 4
334 4 for(i=0;i<4;)
335 4 {
336 5 if(jpdata()<10)
337 5 {
338 6 keys=jpdata();
339 6 a[i]=keys;
340 6 i++;
341 6 while(1)
342 6 {
343 7 if(jpdata()==16)
344 7 break;
345 7 xianshi(a,i);
346 7 }
347 6 }
348 5
349 5 xianshi(a,i);
350 5 }
351 4 W1302( 0x8e, 0x00); //打开写保护
352 4 W1302(0x88,(a[0]*16)|a[1]); //写入月
353 4 W1302(0x86,(a[2]*16)|a[3]); //写入日
354 4 }
355 3 if(keys==10) {nian();}
356 3 if(keys==12) {shi_fen();}
357 3 if(keys==13) {miao();}
358 3 if(keys==15) {xingqi();}
359 3
360 3 }
361 2 }
362 1 }
363
364
365 void shi_fen()//显示和设置时和分
C51 COMPILER V7.50 万年繽 03/10/2009 19:04:18 PAGE 7
366 {
367 1 if(keys==12) //时/分 其它同上
368 1 {
369 2 while(1)
370 2 {
371 3 W1302( 0x8e, 0x00);
372 3 da=R1302(0x85);
373 3 a[0]=(da&0xf0)>>4;
374 3 a[1]=(da&0x0f);
375 3 W1302( 0x8e, 0x00);
376 3 da=R1302(0x83);
377 3 a[2]=(da&0xf0)>>4;
378 3 a[3]=(da&0x0f); //将键值记录
379 3
380 3 i=4;
381 3 xianshi(a,i);
382 3 keys=jpdata();
383 3 if(keys==11) {yue_ri();}
384 3 if(keys==10) {nan();}
*** WARNING C206 IN LINE 384 OF 万年历.C: 'nan': missing function-prototype
385 3 if(keys==13) {miao();}
386 3 if(keys==15) {xingqi();}
387 3 if(keys==14)
388 3 {
389 4
390 4 for(i=0;i<4;)
391 4 {
392 5 if(jpdata()<10)
393 5 {
394 6 keys=jpdata();
395 6 a[i]=keys;
396 6 i++;
397 6 while(1)
398 6 {
399 7 if(jpdata()==16)
400 7 break;
401 7 xianshi(a,i);
402 7 }
403 6 }
404 5
405 5 xianshi(a,i);
406 5 }
407 4 W1302( 0x8e, 0x00);
408 4 W1302(0x84,(a[0]*16)|a[1]);
409 4 W1302(0x82,(a[2]*16)|a[3]);
410 4 }
411 3
412 3 } //将键值的有效位数记录
413 2 }
414 1 }
415
416 void miao()//显示和设置秒
417 {
418 1 if(keys==13) //秒 //键值小于10,为年输入
419 1 {
420 2 while(1)
421 2 {
422 3 W1302( 0x8e, 0x00);
423 3 da=R1302(0x81);
424 3 a[0]=10;//前两位不显示
425 3 a[1]=10;
426 3 a[2]=(da&0xf0)>>4;
C51 COMPILER V7.50 万年繽 03/10/2009 19:04:18 PAGE 8
427 3 a[3]=(da&0x0f); //将键值记录
428 3 i=4;
429 3 xianshi(a,i);
430 3 keys=jpdata();
431 3 if(keys==11) {yue_ri();}
432 3 if(keys==12) {shi_fen();}
433 3 if(keys==10) {nian();}
434 3 if(keys==15) {xingqi();}
435 3
436 3 if(keys==14)//设置
437 3 {
438 4
439 4 for(i=2;i<4;)
440 4 {
441 5 if(jpdata()<10)
442 5 {
443 6 keys=jpdata();
444 6 a[i]=keys;
445 6 i++;
446 6 while(1)
447 6 {
448 7 if(jpdata()==16)
449 7 break;
450 7 xianshi(a,i);
451 7 }
452 6 }
453 5
454 5 xianshi(a,i);
455 5 }
456 4 W1302( 0x8e, 0x00);
457 4 W1302(0x80,(a[2]*16)|a[3]);
458 4 }
459 3
460 3 } //将键值的有效位数记录
461 2 }
462 1 }
463
464
465 void xingqi()//显示和设置星期
466 {
467 1 if(keys==15)
468 1 {
469 2 while(1)
470 2 {
471 3 W1302( 0x8e, 0x00);
472 3 da=R1302(0x8b);
473 3 a[0]=10;//前三位不显示
474 3 a[1]=10;
475 3 a[2]=10;
476 3 //a[2]=(da&0xf0)>>4;
477 3 a[3]=(da&0x0f);
478 3 i=4;
479 3 xianshi(a,i);
480 3 keys=jpdata();
481 3 if(keys==11) {yue_ri();}
482 3 if(keys==12) {shi_fen();}
483 3 if(keys==13) {miao();}
484 3 if(keys==10) {nian();}
485 3 if(keys==14) //设置
486 3 {
487 4 for(i=3;i<4;)
488 4 {
C51 COMPILER V7.50 万年繽 03/10/2009 19:04:18 PAGE 9
489 5 if(jpdata()<10)
490 5 {
491 6 keys=jpdata();
492 6 a[i]=keys;
493 6 i++;
494 6
495 6 while(1)
496 6 {
497 7 if(jpdata()==16)
498 7 break;
499 7 xianshi(a,i);
500 7 }
501 6 }
502 5
503 5 xianshi(a,i);
504 5 }
505 4 W1302( 0x8e, 0x00);
506 4 W1302(0x8a,a[3]);
507 4 }
508 3
509 3 } //将键值的有效位数记录
510 2 }
511 1 }
512
513
514
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1383 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 17
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -