⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtc.lis

📁 在AVR开发板驱动时钟芯片DS1302
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0480                   .dbline 183
 0480           ;       return exist;
 0480 042F              mov R16,R20
 0482                   .dbline -2
 0482           L107:
 0482 0E940000          xcall pop_gset1
 0486                   .dbline 0 ; func end
 0486 0895              ret
 0488                   .dbsym r exist 20 c
 0488                   .dbend
 0488                   .dbfunc e DS1302_init _DS1302_init fV
                        .even
 0488           _DS1302_init::
 0488                   .dbline -1
 0488                   .dbline 192
 0488           ; }
 0488           ; /*******************************************
 0488           ; 函数名称: DS1302_init
 0488           ; 功    能: 初始化DS1302
 0488           ; 参    数: 无
 0488           ; 返回值  : 无
 0488           ; /********************************************/
 0488           ; void DS1302_init(void)
 0488           ; {
 0488                   .dbline 193
 0488           ;  DS1302_writeD(C_WP|WR,UPROTECT);               //写入写允许命令
 0488 2227              clr R18
 048A 0EE8              ldi R16,142
 048C 77DF              xcall _DS1302_writeD
 048E                   .dbline 194
 048E           ;  DS1302_writeD(C_SEC|WR,CLK_START);           //启动振荡器,DS1302开始工作
 048E 2227              clr R18
 0490 00E8              ldi R16,128
 0492 74DF              xcall _DS1302_writeD
 0494                   .dbline 195
 0494           ;  DS1302_writeD(C_WP|WR,PROTECT);              //控制命令,WP位为1,不允许写操作   
 0494 20E8              ldi R18,128
 0496 0EE8              ldi R16,142
 0498                   .dbline -2
 0498                   .dbline 196
 0498           ; }
 0498           L110:
 0498                   .dbline 0 ; func end
 0498 71CF              xjmp _DS1302_writeD
 049A                   .dbend
 049A                   .dbfunc e BCD_ASCII _BCD_ASCII fV
 049A           ;          ptasc -> R20,R21
 049A           ;            BCD -> R22
                        .even
 049A           _BCD_ASCII::
 049A 0E940000          xcall push_gset2
 049E A901              movw R20,R18
 04A0 602F              mov R22,R16
 04A2                   .dbline -1
 04A2                   .dbline 205
 04A2           ; /*******************************************
 04A2           ; 函数名称: BCD_ASCII
 04A2           ; 功    能: 将压缩BCD码转换成ascii码
 04A2           ; 参    数: BCD--将要转换的压缩BCD码
 04A2           ;                 ptasc--转换后的ASCII码数组指针
 04A2           ; 返回值  : 无
 04A2           ; /********************************************/
 04A2           ; void BCD_ASCII(uchar BCD,uchar *ptasc)
 04A2           ; {     
 04A2                   .dbline 206
 04A2           ;       *ptasc=BCD/16|0x30;                //转换十位
 04A2 10E1              ldi R17,16
 04A4 062F              mov R16,R22
 04A6 0E940000          xcall div8u
 04AA 802F              mov R24,R16
 04AC 8063              ori R24,48
 04AE FA01              movw R30,R20
 04B0 8083              std z+0,R24
 04B2                   .dbline 207
 04B2           ;       *(ptasc+1)=BCD&0x0F|0x30;  //转换个位
 04B2 862F              mov R24,R22
 04B4 8F70              andi R24,15
 04B6 8063              ori R24,48
 04B8 8183              std z+1,R24
 04BA                   .dbline -2
 04BA                   .dbline 208
 04BA           ; }
 04BA           L111:
 04BA 0E940000          xcall pop_gset2
 04BE                   .dbline 0 ; func end
 04BE 0895              ret
 04C0                   .dbsym r ptasc 20 pc
 04C0                   .dbsym r BCD 22 c
 04C0                   .dbend
                        .area lit(rom, con, rel)
 0000           L113:
 0000 0000              .byte 0,0
 0002 2D00              .byte 45,0
 0004 002D              .byte 0,45
 0006 0000              .byte 0,0
 0008 2000              .byte 32,0
 000A 00                .byte 0
 000B           L114:
 000B 0000              .byte 0,0
 000D 3A00              .byte 58,0
 000F 003A              .byte 0,58
 0011 0000              .byte 0,0
 0013 00                .byte 0
                        .area text(rom, con, rel)
 04C0                   .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\17_RTC\RTC.C
 04C0                   .dbfunc e Disp_time _Disp_time fV
 04C0           ;          line1 -> y+11
 04C0           ;          line2 -> y+2
 04C0           ;            asc -> y+0
 04C0           ;              i -> R20
 04C0           ;           time -> R22,R23
                        .even
 04C0           _Disp_time::
 04C0 0E940000          xcall push_gset2
 04C4 B801              movw R22,R16
 04C6 6697              sbiw R28,22
 04C8                   .dbline -1
 04C8                   .dbline 216
 04C8           ; /*******************************************
 04C8           ; 函数名称: Disp_time
 04C8           ; 功    能: 在1602液晶上显示当前时间(第1行格式:年-月-日 星期;第2行格式:时-分-秒)
 04C8           ; 参    数: time[]--时间数组
 04C8           ; 返回值  : 无
 04C8           ; /********************************************/
 04C8           ; void Disp_time(uchar time[])
 04C8           ; {
 04C8                   .dbline 218
 04C8           ;  uchar i,asc[2];
 04C8           ;  uchar line1[11]={0,0,'-',0,0,'-',0,0,' ',0,'\0'};//显示第1行的字符数组
 04C8 80E0              ldi R24,<L113
 04CA 90E0              ldi R25,>L113
 04CC FE01              movw R30,R28
 04CE 3B96              adiw R30,11
 04D0 0BE0              ldi R16,11
 04D2 10E0              ldi R17,0
 04D4 FA93              st -y,R31
 04D6 EA93              st -y,R30
 04D8 9A93              st -y,R25
 04DA 8A93              st -y,R24
 04DC 0E940000          xcall asgncblk
 04E0                   .dbline 219
 04E0           ;  uchar line2[9]={0,0,':',0,0,':',0,0,'\0'};             //显示第2行的字符数组
 04E0 80E0              ldi R24,<L114
 04E2 90E0              ldi R25,>L114
 04E4 FE01              movw R30,R28
 04E6 3296              adiw R30,2
 04E8 09E0              ldi R16,9
 04EA 10E0              ldi R17,0
 04EC FA93              st -y,R31
 04EE EA93              st -y,R30
 04F0 9A93              st -y,R25
 04F2 8A93              st -y,R24
 04F4 0E940000          xcall asgncblk
 04F8                   .dbline 220
 04F8           ;  for(i=0;i<3;i++)                                                               //为第2行的字符数组赋值
 04F8 4427              clr R20
 04FA 1FC0              xjmp L118
 04FC           L115:
 04FC                   .dbline 221
 04FC                   .dbline 222
 04FC 9E01              movw R18,R28
 04FE 242E              mov R2,R20
 0500 3324              clr R3
 0502 E2E0              ldi R30,2
 0504 F0E0              ldi R31,0
 0506 E219              sub R30,R2
 0508 F309              sbc R31,R3
 050A E60F              add R30,R22
 050C F71F              adc R31,R23
 050E 0081              ldd R16,z+0
 0510 C4DF              xcall _BCD_ASCII
 0512                   .dbline 223
 0512 83E0              ldi R24,3
 0514 849F              mul R24,R20
 0516 F001              movw R30,R0
 0518 CE01              movw R24,R28
 051A 0296              adiw R24,2
 051C E80F              add R30,R24
 051E F91F              adc R31,R25
 0520 8881              ldd R24,y+0
 0522 8F77              andi R24,127
 0524 8083              std z+0,R24
 0526                   .dbline 224
 0526 83E0              ldi R24,3
 0528 849F              mul R24,R20
 052A F001              movw R30,R0
 052C CE01              movw R24,R28
 052E 0396              adiw R24,3
 0530 E80F              add R30,R24
 0532 F91F              adc R31,R25
 0534 2980              ldd R2,y+1
 0536 2082              std z+0,R2
 0538                   .dbline 225
 0538           L116:
 0538                   .dbline 220
 0538 4395              inc R20
 053A           L118:
 053A                   .dbline 220
 053A 4330              cpi R20,3
 053C F8F2              brlo L115
 053E                   .dbline 226
 053E           ;  {
 053E           ;   BCD_ASCII(time[2-i],asc);
 053E           ;   line2[i*3]=asc[0]&0x7F;
 053E           ;   line2[i*3+1]=asc[1];
 053E           ;  } 
 053E           ;  BCD_ASCII(time[6],asc);                                                //为第1行的年赋值
 053E 9E01              movw R18,R28
 0540 FB01              movw R30,R22
 0542 0681              ldd R16,z+6
 0544 AADF              xcall _BCD_ASCII
 0546                   .dbline 227
 0546           ;  line1[0]=asc[0];
 0546 2880              ldd R2,y+0
 0548 2B86              std y+11,R2
 054A                   .dbline 228
 054A           ;  line1[1]=asc[1];
 054A 2980              ldd R2,y+1
 054C 2C86              std y+12,R2
 054E                   .dbline 229
 054E           ;  BCD_ASCII(time[4],asc);                                                //为第1行的月赋值
 054E 9E01              movw R18,R28
 0550 FB01              movw R30,R22
 0552 0481              ldd R16,z+4
 0554 A2DF              xcall _BCD_ASCII
 0556                   .dbline 230
 0556           ;  line1[3]=asc[0];
 0556 2880              ldd R2,y+0
 0558 2E86              std y+14,R2
 055A                   .dbline 231
 055A           ;  line1[4]=asc[1];
 055A 2980              ldd R2,y+1
 055C 2F86              std y+15,R2
 055E                   .dbline 232
 055E           ;  BCD_ASCII(time[3],asc);                                                //为第1行的日赋值
 055E 9E01              movw R18,R28
 0560 FB01              movw R30,R22
 0562 0381              ldd R16,z+3
 0564 9ADF              xcall _BCD_ASCII
 0566                   .dbline 233
 0566           ;  line1[6]=asc[0];
 0566 2880              ldd R2,y+0
 0568 298A              std y+17,R2
 056A                   .dbline 234
 056A           ;  line1[7]=asc[1];
 056A 2980              ldd R2,y+1
 056C 2A8A              std y+18,R2
 056E                   .dbline 235
 056E           ;  BCD_ASCII(time[5],asc);                                                //为第1行的星期赋值
 056E 9E01              movw R18,R28
 0570 FB01              movw R30,R22
 0572 0581              ldd R16,z+5
 0574 92DF              xcall _BCD_ASCII
 0576                   .dbline 236
 0576           ;  line1[9]=asc[1];
 0576 2980              ldd R2,y+1
 0578 2C8A              std y+20,R2
 057A           L131:
 057A                   .dbline 238
 057A           L132:
 057A                   .dbline 238
 057A           ;  
 057A           ;  while(LCD1602_readBF());
 057A DEDD              xcall _LCD1602_readBF
 057C 0023              tst R16
 057E E9F7              brne L131
 0580                   .dbline 239
 0580           ;  LCD1602_gotoXY(1,2);                                                   //第1行从第3个位置开始显示
 0580 22E0              ldi R18,2
 0582 01E0              ldi R16,1
 0584 E7DD              xcall _LCD1602_gotoXY
 0586                   .dbline 240
 0586           ;  LCD1602_sendstr("20");                                                         //将07年显示为2007的形式
 0586 00E0              ldi R16,<L134
 0588 10E0              ldi R17,>L134
 058A C0DD              xcall _LCD1602_sendstr
 058C                   .dbline 241
 058C           ;  LCD1602_sendstr(line1);                                                //第1行显示
 058C 8E01              movw R16,R28
 058E 055F              subi R16,245  ; offset = 11
 0590 1F4F              sbci R17,255
 0592 BCDD              xcall _LCD1602_sendstr
 0594           L135:
 0594                   .dbline 242
 0594           L136:
 0594                   .dbline 242
 0594           ;  while(LCD1602_readBF());
 0594 D1DD              xcall _LCD1602_readBF
 0596 0023              tst R16
 0598 E9F7              brne L135
 059A                   .dbline 243
 059A           ;  LCD1602_gotoXY(2,4);                                                           //第2行从第5个位置开始显示
 059A 24E0              ldi R18,4
 059C 02E0              ldi R16,2
 059E DADD              xcall _LCD1602_gotoXY
 05A0                   .dbline 244
 05A0           ;  LCD1602_sendstr(line2);                                                //第2行显示
 05A0 8E01              movw R16,R28
 05A2 0E5F              subi R16,254  ; offset = 2
 05A4 1F4F              sbci R17,255
 05A6 B2DD              xcall _LCD1602_sendstr
 05A8                   .dbline -2
 05A8                   .dbline 245
 05A8           ; }
 05A8           L112:
 05A8 6696              adiw R28,22
 05AA 0E940000          xcall pop_gset2
 05AE                   .dbline 0 ; func end
 05AE 0895              ret
 05B0                   .dbsym l line1 11 A[11:11]c
 05B0                   .dbsym l line2 2 A[9:9]c
 05B0                   .dbsym l asc 0 A[2:2]c
 05B0                   .dbsym r i 20 c
 05B0                   .dbsym r time 22 pc
 05B0                   .dbend
                        .area lit(rom, con, rel)
 0014           L139:
 0014 1558              .byte 21,'X
 0016 1301              .byte 19,1
 0018 0106              .byte 1,6
 001A 07                .byte 7
 001B           L140:
 001B 0000              .byte 0,0
 001D 0000              .byte 0,0
 001F 0000              .byte 0,0
 0021 00                .byte 0
                        .area text(rom, con, rel)
 05B0                   .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\17_RTC\RTC.C
 05B0                 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -