📄 ds1302.lis
字号:
0110 1B98 cbi 0x3,3
0112 L21:
0112 .dbline 96
0112 83B1 in R24,0x3
0114 8B7F andi R24,251
0116 8460 ori R24,4
0118 83B9 out 0x3,R24
011A .dbline 97
011A 0000 nop
011C .dbline 97
011C 0000 nop
011E .dbline 97
011E 0000 nop
0120 .dbline 97
0120 0000 nop
0122 .dbline 97
0122 0000 nop
0124 .dbline 98
0124 L17:
0124 .dbline 90
0124 6395 inc R22
0126 L19:
0126 .dbline 90
0126 6830 cpi R22,8
0128 08F3 brlo L16
012A .dbline 99
012A ; DSCL(1);
012A ; nop;
012A ; }
012A ; DDRE &= ~(1<<3);
012A 1398 cbi 0x2,3
012C .dbline 100
012C ; DSDA(0);
012C 1B98 cbi 0x3,3
012E .dbline 101
012E ; DSCL(0);
012E 1A98 cbi 0x3,2
0130 .dbline 102
0130 ; nop;
0130 0000 nop
0132 .dbline 102
0132 0000 nop
0134 .dbline 102
0134 0000 nop
0136 .dbline 102
0136 0000 nop
0138 .dbline 102
0138 0000 nop
013A .dbline 103
013A ; if(PINE & (1<<3)) data |=0x80;
013A 0B9B sbis 0x1,3
013C 02C0 rjmp L22
013E .dbline 103
013E 4068 ori R20,128
0140 01C0 xjmp L23
0142 L22:
0142 .dbline 104
0142 ; else data &= 0x7f;
0142 4F77 andi R20,127
0144 L23:
0144 .dbline 105
0144 ; for(i=0; i<7; i++)/*读数据*/
0144 6627 clr R22
0146 16C0 xjmp L27
0148 L24:
0148 .dbline 106
0148 ; { data >>=1;
0148 .dbline 106
0148 4695 lsr R20
014A .dbline 107
014A ; DSCL(1);
014A 83B1 in R24,0x3
014C 8B7F andi R24,251
014E 8460 ori R24,4
0150 83B9 out 0x3,R24
0152 .dbline 108
0152 ; nop;
0152 0000 nop
0154 .dbline 108
0154 0000 nop
0156 .dbline 108
0156 0000 nop
0158 .dbline 108
0158 0000 nop
015A .dbline 108
015A 0000 nop
015C .dbline 109
015C ; DSCL(0);
015C 1A98 cbi 0x3,2
015E .dbline 110
015E ; nop;
015E 0000 nop
0160 .dbline 110
0160 0000 nop
0162 .dbline 110
0162 0000 nop
0164 .dbline 110
0164 0000 nop
0166 .dbline 110
0166 0000 nop
0168 .dbline 111
0168 ; if(PINE & (1<<3)) {data |=0x80;}
0168 0B9B sbis 0x1,3
016A 02C0 rjmp L28
016C .dbline 111
016C .dbline 111
016C 4068 ori R20,128
016E .dbline 111
016E 01C0 xjmp L29
0170 L28:
0170 .dbline 112
0170 ; else {data &= 0x7f;}
0170 .dbline 112
0170 4F77 andi R20,127
0172 .dbline 112
0172 L29:
0172 .dbline 113
0172 L25:
0172 .dbline 105
0172 6395 inc R22
0174 L27:
0174 .dbline 105
0174 6730 cpi R22,7
0176 40F3 brlo L24
0178 .dbline 114
0178 ; }
0178 ; DDRE |= 1<<3;
0178 139A sbi 0x2,3
017A .dbline 115
017A ; DRST(0);
017A 1C98 cbi 0x3,4
017C .dbline 116
017C ; return data;
017C 042F mov R16,R20
017E .dbline -2
017E L15:
017E 0E940000 xcall pop_gset3
0182 .dbline 0 ; func end
0182 0895 ret
0184 .dbsym r data 20 c
0184 .dbsym r i 22 c
0184 .dbsym r cmd 10 c
0184 .dbend
0184 .dbfunc e Read_InfoDs1302buf _Read_InfoDs1302buf fV
.even
0184 _Read_InfoDs1302buf::
0184 .dbline -1
0184 .dbline 122
0184 ; }
0184 ; /*********************************************************************************************************************************************
0184 ; 从Ds1302buf中读取时钟日历信息
0184 ; *********************************************************************************************************************************************/
0184 ; void Read_InfoDs1302buf(void)
0184 ; {cli();
0184 .dbline 122
0184 F894 cli
0186 .dbline 123
0186 ; Ds1302buf.sec = Ds1302buf_Read(SEC_R) & 0x7f;
0186 01E8 ldi R16,129
0188 9CDF xcall _Ds1302buf_Read
018A 802F mov R24,R16
018C 8F77 andi R24,127
018E 80930000 sts _timebuf,R24
0192 .dbline 124
0192 ; Ds1302buf.min = Ds1302buf_Read(MIN_R) & 0x7f;
0192 03E8 ldi R16,131
0194 96DF xcall _Ds1302buf_Read
0196 802F mov R24,R16
0198 8F77 andi R24,127
019A 80930100 sts _timebuf+1,R24
019E .dbline 125
019E ; Ds1302buf.hour = Ds1302buf_Read(hour_R) & 0x3f;
019E 05E8 ldi R16,133
01A0 90DF xcall _Ds1302buf_Read
01A2 802F mov R24,R16
01A4 8F73 andi R24,63
01A6 80930200 sts _timebuf+2,R24
01AA .dbline 126
01AA ; Ds1302buf.date = Ds1302buf_Read(DATE_R)& 0x3f;
01AA 07E8 ldi R16,135
01AC 8ADF xcall _Ds1302buf_Read
01AE 802F mov R24,R16
01B0 8F73 andi R24,63
01B2 80930300 sts _timebuf+3,R24
01B6 .dbline 127
01B6 ; Ds1302buf.month = Ds1302buf_Read(MONTH_R) & 0x1f;
01B6 09E8 ldi R16,137
01B8 84DF xcall _Ds1302buf_Read
01BA 802F mov R24,R16
01BC 8F71 andi R24,31
01BE 80930400 sts _timebuf+4,R24
01C2 .dbline 128
01C2 ; Ds1302buf.week = Ds1302buf_Read(WEEK_R) & 0x07;
01C2 0BE8 ldi R16,139
01C4 7EDF xcall _Ds1302buf_Read
01C6 802F mov R24,R16
01C8 8770 andi R24,7
01CA 80930500 sts _timebuf+5,R24
01CE .dbline 129
01CE ; Ds1302buf.year = Ds1302buf_Read(YEAR_R);
01CE 0DE8 ldi R16,141
01D0 78DF xcall _Ds1302buf_Read
01D2 00930600 sts _timebuf+6,R16
01D6 .dbline 130
01D6 ; sei();
01D6 7894 sei
01D8 .dbline -2
01D8 L30:
01D8 .dbline 0 ; func end
01D8 0895 ret
01DA .dbend
01DA .dbfunc e Write_InfoDs1302buf _Write_InfoDs1302buf fV
.even
01DA _Write_InfoDs1302buf::
01DA .dbline -1
01DA .dbline 136
01DA ; }
01DA ; /*********************************************************************************************************************************************
01DA ; 将时钟日历信息存储到Ds1302buf中
01DA ; *********************************************************************************************************************************************/
01DA ; void Write_InfoDs1302buf(void)
01DA ; {cli();
01DA .dbline 136
01DA F894 cli
01DC .dbline 137
01DC ; Ds1302buf_Write(WP_W, 0x00);
01DC 2227 clr R18
01DE 0EE8 ldi R16,142
01E0 16DF xcall _Ds1302buf_Write
01E2 .dbline 138
01E2 ; Ds1302buf_Write(SEC_W, Ds1302buf.sec);
01E2 20910000 lds R18,_timebuf
01E6 00E8 ldi R16,128
01E8 12DF xcall _Ds1302buf_Write
01EA .dbline 139
01EA ; Ds1302buf_Write(MIN_W, Ds1302buf.min);
01EA 20910100 lds R18,_timebuf+1
01EE 02E8 ldi R16,130
01F0 0EDF xcall _Ds1302buf_Write
01F2 .dbline 140
01F2 ; Ds1302buf_Write(hour_W, Ds1302buf.hour);
01F2 20910200 lds R18,_timebuf+2
01F6 04E8 ldi R16,132
01F8 0ADF xcall _Ds1302buf_Write
01FA .dbline 141
01FA ; Ds1302buf_Write(DATE_W, Ds1302buf.date);
01FA 20910300 lds R18,_timebuf+3
01FE 06E8 ldi R16,134
0200 06DF xcall _Ds1302buf_Write
0202 .dbline 142
0202 ; Ds1302buf_Write(MONTH_W, Ds1302buf.month);
0202 20910400 lds R18,_timebuf+4
0206 08E8 ldi R16,136
0208 02DF xcall _Ds1302buf_Write
020A .dbline 143
020A ; Ds1302buf_Write(WEEK_W, Ds1302buf.week);
020A 20910500 lds R18,_timebuf+5
020E 0AE8 ldi R16,138
0210 FEDE xcall _Ds1302buf_Write
0212 .dbline 144
0212 ; Ds1302buf_Write(YEAR_W, Ds1302buf.year);
0212 20910600 lds R18,_timebuf+6
0216 0CE8 ldi R16,140
0218 FADE xcall _Ds1302buf_Write
021A .dbline 145
021A ; Ds1302buf_Write(POWER_W, 0x16);
021A 26E1 ldi R18,22
021C 00E9 ldi R16,144
021E F7DE xcall _Ds1302buf_Write
0220 .dbline 146
0220 ; Ds1302buf_Write(WP_W, 0x80);
0220 20E8 ldi R18,128
0222 0EE8 ldi R16,142
0224 F4DE xcall _Ds1302buf_Write
0226 .dbline 147
0226 ; sei();
0226 7894 sei
0228 .dbline -2
0228 L37:
0228 .dbline 0 ; func end
0228 0895 ret
022A .dbend
022A .dbfunc e Set_time _Set_time fV
.even
022A _Set_time::
022A .dbline -1
022A .dbline 158
022A ; }
022A ; /****************************************************************************************************************************************
022A ; *****************************************************************************************************************************************
022A ; *************************************以上的部分很重要不可以轻易更改!*********************************************************************
022A ; *****************************************************************************************************************************************
022A ; ****************************************************************************************************************************************/
022A ; /*********************************************************************************************************************************************
022A ; 设置时间日期
022A ; *********************************************************************************************************************************************/
022A ; void Set_time(void)
022A ; {
022A .dbline 159
022A ; Ds1302buf.sec = 0x10;
022A 80E1 ldi R24,16
022C 80930000 sts _timebuf,R24
0230 .dbline 160
0230 ; Ds1302buf.min = 0x34;
0230 84E3 ldi R24,52
0232 80930100 sts _timebuf+1,R24
0236 .dbline 161
0236 ; Ds1302buf.hour = 0x14;
0236 84E1 ldi R24,20
0238 80930200 sts _timebuf+2,R24
023C .dbline 162
023C ; Ds1302buf.date = 0x19;
023C 89E1 ldi R24,25
023E 80930300 sts _timebuf+3,R24
0242 .dbline 163
0242 ; Ds1302buf.month = 0x10;
0242 80E1 ldi R24,16
0244 80930400 sts _timebuf+4,R24
0248 .dbline 164
0248 ; Ds1302buf.week = 0x04;
0248 84E0 ldi R24,4
024A 80930500 sts _timebuf+5,R24
024E .dbline 165
024E ; Ds1302buf.year = 0x06;
024E 86E0 ldi R24,6
0250 80930600 sts _timebuf+6,R24
0254 .dbline 166
0254 ; Write_InfoDs1302buf();
0254 C2DF xcall _Write_InfoDs1302buf
0256 .dbline -2
0256 L44:
0256 .dbline 0 ; func end
0256 0895 ret
0258 .dbend
0258 .dbfunc e Printf_time _Printf_time fV
.even
0258 _Printf_time::
0258 .dbline -1
0258 .dbline 172
0258 ; }
0258 ; /*********************************************************************************************************************************************
0258 ; 打印时间日期到超级终端
0258 ; *********************************************************************************************************************************************/
0258 ; void Printf_time(void)
0258 ; {
0258 .dbline -2
0258 L51:
0258 .dbline 0 ; func end
0258 0895 ret
025A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -