ds12887.lis
来自「高精度时钟芯片。avr驱动」· LIS 代码 · 共 1,530 行 · 第 1/5 页
LIS
1,530 行
02BE 2227 clr R18
02C0 02E0 ldi R16,2
02C2 48DF xcall _LCD1602_gotoXY
02C4 .dbline 386
02C4 ; LCD1602_sendstr("TIME: 08: 08: 08");
02C4 00E0 ldi R16,<L62
02C6 10E0 ldi R17,>L62
02C8 .dbline -2
02C8 .dbline 389
02C8 ; // for(m=0;m<16;m++)
02C8 ; // LCD1602_sendbyte(iDat,cdis2[m]); //显示字符
02C8 ; }
02C8 L60:
02C8 .dbline 0 ; func end
02C8 21CF xjmp _LCD1602_sendstr
02CA .dbsym l m 1 c
02CA .dbend
02CA .dbfunc e daydis _daydis fV
.even
02CA _daydis::
02CA .dbline -1
02CA .dbline 396
02CA ; /*******************************************************************/
02CA ; /* */
02CA ; /* 日期 正常显示数据 */
02CA ; /* */
02CA ; /*******************************************************************/
02CA ; void daydis()
02CA ; {
02CA .dbline 397
02CA ; display[0]=(temp_data1[0]>>4)+0x30;
02CA 80910000 lds R24,_temp_data1
02CE 8295 swap R24
02D0 8F70 andi R24,#0x0F
02D2 805D subi R24,208 ; addi 48
02D4 80930600 sts _display,R24
02D8 .dbline 398
02D8 ; display[1]=(temp_data1[0]&0x0F)+0x30;
02D8 80910000 lds R24,_temp_data1
02DC 8F70 andi R24,15
02DE 805D subi R24,208 ; addi 48
02E0 80930700 sts _display+1,R24
02E4 .dbline 399
02E4 ; display[2]=(temp_data1[1]>>4)+0x30;
02E4 80910100 lds R24,_temp_data1+1
02E8 8295 swap R24
02EA 8F70 andi R24,#0x0F
02EC 805D subi R24,208 ; addi 48
02EE 80930800 sts _display+2,R24
02F2 .dbline 400
02F2 ; display[3]=(temp_data1[1]&0x0F)+0x30;
02F2 80910100 lds R24,_temp_data1+1
02F6 8F70 andi R24,15
02F8 805D subi R24,208 ; addi 48
02FA 80930900 sts _display+3,R24
02FE .dbline 401
02FE ; display[4]=(temp_data1[2]>>4)+0x30;
02FE 80910200 lds R24,_temp_data1+2
0302 8295 swap R24
0304 8F70 andi R24,#0x0F
0306 805D subi R24,208 ; addi 48
0308 80930A00 sts _display+4,R24
030C .dbline 402
030C ; display[5]=(temp_data1[2]&0x0F)+0x30;
030C 80910200 lds R24,_temp_data1+2
0310 8F70 andi R24,15
0312 805D subi R24,208 ; addi 48
0314 80930B00 sts _display+5,R24
0318 .dbline 404
0318 ;
0318 ; LCD1602_gotoXY(1,8);
0318 28E0 ldi R18,8
031A 01E0 ldi R16,1
031C 1BDF xcall _LCD1602_gotoXY
031E .dbline 405
031E ; LCD1602_sendbyte(iDat,display[0]);
031E 20910600 lds R18,_display
0322 01E0 ldi R16,1
0324 E0DE xcall _LCD1602_sendbyte
0326 .dbline 406
0326 ; LCD1602_sendbyte(iDat,display[1]);
0326 20910700 lds R18,_display+1
032A 01E0 ldi R16,1
032C DCDE xcall _LCD1602_sendbyte
032E .dbline 407
032E ; LCD1602_gotoXY(1,11);
032E 2BE0 ldi R18,11
0330 01E0 ldi R16,1
0332 10DF xcall _LCD1602_gotoXY
0334 .dbline 408
0334 ; LCD1602_sendbyte(iDat,display[2]);
0334 20910800 lds R18,_display+2
0338 01E0 ldi R16,1
033A D5DE xcall _LCD1602_sendbyte
033C .dbline 409
033C ; LCD1602_sendbyte(iDat,display[3]);
033C 20910900 lds R18,_display+3
0340 01E0 ldi R16,1
0342 D1DE xcall _LCD1602_sendbyte
0344 .dbline 410
0344 ; LCD1602_gotoXY(1,14);
0344 2EE0 ldi R18,14
0346 01E0 ldi R16,1
0348 05DF xcall _LCD1602_gotoXY
034A .dbline 411
034A ; LCD1602_sendbyte(iDat,display[4]);
034A 20910A00 lds R18,_display+4
034E 01E0 ldi R16,1
0350 CADE xcall _LCD1602_sendbyte
0352 .dbline 412
0352 ; LCD1602_sendbyte(iDat,display[5]);
0352 20910B00 lds R18,_display+5
0356 01E0 ldi R16,1
0358 .dbline -2
0358 .dbline 414
0358 ;
0358 ; }
0358 L63:
0358 .dbline 0 ; func end
0358 C6CE xjmp _LCD1602_sendbyte
035A .dbend
035A .dbfunc e timedis _timedis fV
.even
035A _timedis::
035A .dbline -1
035A .dbline 421
035A ; /*******************************************************************/
035A ; /* */
035A ; /* 时间 正常显示数据 */
035A ; /* */
035A ; /*******************************************************************/
035A ; void timedis()
035A ; {
035A .dbline 422
035A ; display[0]=(temp_data2[0]>>4)+0x30;
035A 80910300 lds R24,_temp_data2
035E 8295 swap R24
0360 8F70 andi R24,#0x0F
0362 805D subi R24,208 ; addi 48
0364 80930600 sts _display,R24
0368 .dbline 423
0368 ; display[1]=(temp_data2[0]&0x0F)+0x30;
0368 80910300 lds R24,_temp_data2
036C 8F70 andi R24,15
036E 805D subi R24,208 ; addi 48
0370 80930700 sts _display+1,R24
0374 .dbline 424
0374 ; display[2]=(temp_data2[1]>>4)+0x30;
0374 80910400 lds R24,_temp_data2+1
0378 8295 swap R24
037A 8F70 andi R24,#0x0F
037C 805D subi R24,208 ; addi 48
037E 80930800 sts _display+2,R24
0382 .dbline 425
0382 ; display[3]=(temp_data2[1]&0x0F)+0x30;
0382 80910400 lds R24,_temp_data2+1
0386 8F70 andi R24,15
0388 805D subi R24,208 ; addi 48
038A 80930900 sts _display+3,R24
038E .dbline 426
038E ; display[4]=(temp_data2[2]>>4)+0x30;
038E 80910500 lds R24,_temp_data2+2
0392 8295 swap R24
0394 8F70 andi R24,#0x0F
0396 805D subi R24,208 ; addi 48
0398 80930A00 sts _display+4,R24
039C .dbline 427
039C ; display[5]=(temp_data2[2]&0x0F)+0x30;
039C 80910500 lds R24,_temp_data2+2
03A0 8F70 andi R24,15
03A2 805D subi R24,208 ; addi 48
03A4 80930B00 sts _display+5,R24
03A8 .dbline 428
03A8 ; LCD1602_gotoXY(2,6);
03A8 26E0 ldi R18,6
03AA 02E0 ldi R16,2
03AC D3DE xcall _LCD1602_gotoXY
03AE .dbline 429
03AE ; LCD1602_sendbyte(iDat,display[0]);
03AE 20910600 lds R18,_display
03B2 01E0 ldi R16,1
03B4 98DE xcall _LCD1602_sendbyte
03B6 .dbline 430
03B6 ; LCD1602_sendbyte(iDat,display[1]);
03B6 20910700 lds R18,_display+1
03BA 01E0 ldi R16,1
03BC 94DE xcall _LCD1602_sendbyte
03BE .dbline 431
03BE ; LCD1602_gotoXY(2,10);
03BE 2AE0 ldi R18,10
03C0 02E0 ldi R16,2
03C2 C8DE xcall _LCD1602_gotoXY
03C4 .dbline 432
03C4 ; LCD1602_sendbyte(iDat,display[2]);
03C4 20910800 lds R18,_display+2
03C8 01E0 ldi R16,1
03CA 8DDE xcall _LCD1602_sendbyte
03CC .dbline 433
03CC ; LCD1602_sendbyte(iDat,display[3]);
03CC 20910900 lds R18,_display+3
03D0 01E0 ldi R16,1
03D2 89DE xcall _LCD1602_sendbyte
03D4 .dbline 434
03D4 ; LCD1602_gotoXY(2,14);
03D4 2EE0 ldi R18,14
03D6 02E0 ldi R16,2
03D8 BDDE xcall _LCD1602_gotoXY
03DA .dbline 435
03DA ; LCD1602_sendbyte(iDat,display[4]);
03DA 20910A00 lds R18,_display+4
03DE 01E0 ldi R16,1
03E0 82DE xcall _LCD1602_sendbyte
03E2 .dbline 436
03E2 ; LCD1602_sendbyte(iDat,display[5]);
03E2 20910B00 lds R18,_display+5
03E6 01E0 ldi R16,1
03E8 .dbline -2
03E8 .dbline 439
03E8 ;
03E8 ;
03E8 ; }
03E8 L78:
03E8 .dbline 0 ; func end
03E8 7ECE xjmp _LCD1602_sendbyte
03EA .dbend
03EA .dbfunc e main _main fV
03EA ; sec_bak -> R20
03EA ; sec -> R22
.even
03EA _main::
03EA 2197 sbiw R28,1
03EC .dbline -1
03EC .dbline 448
03EC ;
03EC ; /*************************************************************
03EC ; 函数功能:主函数
03EC ; 应用范围:
03EC ; 入口参数:
03EC ; 出口参数:
03EC ; *************************************************************/
03EC ; void main(void)
03EC ; {
03EC .dbline 449
03EC ; unsigned char sec,sec_bak=sec;
03EC 462F mov R20,R22
03EE .dbline 450
03EE ; Board_init();
03EE 36DE xcall _Board_init
03F0 .dbline 451
03F0 ; PORTA=0XFF;
03F0 8FEF ldi R24,255
03F2 8BBB out 0x1b,R24
03F4 .dbline 452
03F4 ; PORTC=0X1F;
03F4 8FE1 ldi R24,31
03F6 85BB out 0x15,R24
03F8 .dbline 453
03F8 ; InitDs12c887();
03F8 14DF xcall _InitDs12c887
03FA .dbline 454
03FA ; SetDate(0x15,0x10,0x08);
03FA 88E0 ldi R24,8
03FC 8883 std y+0,R24
03FE 20E1 ldi R18,16
0400 05E1 ldi R16,21
0402 40DF xcall _SetDate
0404 .dbline 455
0404 ; SetTime(0x10,0x10,0x11);
0404 81E1 ldi R24,17
0406 8883 std y+0,R24
0408 20E1 ldi R18,16
040A 00E1 ldi R16,16
040C 25DF xcall _SetTime
040E .dbline 456
040E ; Natural_Menu ();
040E 50DF xcall _Natural_Menu
0410 .dbline 457
0410 ; PORTD=0xFF;
0410 8FEF ldi R24,255
0412 82BB out 0x12,R24
0414 33C0 xjmp L95
0416 L94:
0416 .dbline 461
0416 ;
0416 ;
0416 ; while(1)
0416 ; {
0416 .dbline 462
0416 ; PORTC&=0X1F;
0416 85B3 in R24,0x15
0418 8F71 andi R24,31
041A 85BB out 0x15,R24
041C .dbline 463
041C ; sec=GetSeconds();
041C 0FDF xcall _GetSeconds
041E 602F mov R22,R16
0420 .dbline 465
0420 ;
0420 ; if(sec!=sec_bak)
0420 0417 cp R16,R20
0422 61F1 breq L97
0424 .dbline 466
0424 ; {
0424 .dbline 468
0424 ;
0424 ;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?