📄 ds1302.lis
字号:
01EE L42:
01EE .dbline 46
01EE 6C39 cpi R22,156
01F0 E4E0 ldi R30,4
01F2 7E07 cpc R23,R30
01F4 D0F3 brlo L39
01F6 L36:
01F6 .dbline 45
01F6 4F5F subi R20,255 ; offset = 1
01F8 5F4F sbci R21,255
01FA L38:
01FA .dbline 45
01FA 4017 cp R20,R16
01FC 5107 cpc R21,R17
01FE 90F3 brlo L35
0200 .dbline -2
0200 L34:
0200 0E940000 xcall pop_gset2
0204 .dbline 0 ; func end
0204 0895 ret
0206 .dbsym r i 20 i
0206 .dbsym r j 22 i
0206 .dbsym r MS 16 i
0206 .dbend
0206 .dbfunc e DS1302_portinit _DS1302_portinit fV
.even
0206 _DS1302_portinit::
0206 .dbline -1
0206 .dbline 58
0206 .dbline 59
0206 87B3 in R24,0x17
0208 806D ori R24,208
020A 87BB out 0x17,R24
020C .dbline -2
020C L43:
020C .dbline 0 ; func end
020C 0895 ret
020E .dbend
020E .dbfunc e DS1302_writeB _DS1302_writeB fV
020E ; i -> R20
020E ; byte -> R22
.even
020E _DS1302_writeB::
020E 0E940000 xcall push_gset2
0212 602F mov R22,R16
0214 .dbline -1
0214 .dbline 68
0214 .dbline 70
0214 4427 clr R20
0216 0CC0 xjmp L48
0218 L45:
0218 .dbline 71
0218 .dbline 72
0218 C798 cbi 0x18,7
021A .dbline 73
021A 60FF sbrs R22,0
021C 02C0 rjmp L49
021E .dbline 74
021E .dbline 75
021E C69A sbi 0x18,6
0220 .dbline 76
0220 01C0 xjmp L50
0222 L49:
0222 .dbline 78
0222 .dbline 79
0222 C698 cbi 0x18,6
0224 .dbline 80
0224 L50:
0224 .dbline 81
0224 0AE0 ldi R16,10
0226 10E0 ldi R17,0
0228 D6DF xcall _Delayus
022A .dbline 82
022A C79A sbi 0x18,7
022C .dbline 83
022C 6695 lsr R22
022E .dbline 84
022E L46:
022E .dbline 70
022E 4395 inc R20
0230 L48:
0230 .dbline 70
0230 4830 cpi R20,8
0232 90F3 brlo L45
0234 .dbline -2
0234 L44:
0234 0E940000 xcall pop_gset2
0238 .dbline 0 ; func end
0238 0895 ret
023A .dbsym r i 20 c
023A .dbsym r byte 22 c
023A .dbend
023A .dbfunc e DS1302_readB _DS1302_readB fc
023A ; i -> R20
023A ; byte -> R22
.even
023A _DS1302_readB::
023A 0E940000 xcall push_gset2
023E .dbline -1
023E .dbline 93
023E .dbline 94
023E 6627 clr R22
0240 .dbline 95
0240 BE98 cbi 0x17,6
0242 .dbline 96
0242 C698 cbi 0x18,6
0244 .dbline 97
0244 4427 clr R20
0246 0FC0 xjmp L55
0248 L52:
0248 .dbline 98
0248 .dbline 99
0248 6695 lsr R22
024A .dbline 100
024A C79A sbi 0x18,7
024C .dbline 101
024C 0AE0 ldi R16,10
024E 10E0 ldi R17,0
0250 C2DF xcall _Delayus
0252 .dbline 102
0252 C798 cbi 0x18,7
0254 .dbline 103
0254 0AE0 ldi R16,10
0256 10E0 ldi R17,0
0258 BEDF xcall _Delayus
025A .dbline 104
025A B69B sbis 0x16,6
025C 02C0 rjmp L56
025E .dbline 105
025E .dbline 106
025E 6068 ori R22,128
0260 .dbline 107
0260 01C0 xjmp L57
0262 L56:
0262 .dbline 109
0262 .dbline 110
0262 6F77 andi R22,127
0264 .dbline 111
0264 L57:
0264 .dbline 112
0264 L53:
0264 .dbline 97
0264 4395 inc R20
0266 L55:
0266 .dbline 97
0266 4830 cpi R20,8
0268 78F3 brlo L52
026A .dbline 113
026A BE9A sbi 0x17,6
026C .dbline 114
026C 062F mov R16,R22
026E .dbline -2
026E L51:
026E 0E940000 xcall pop_gset2
0272 .dbline 0 ; func end
0272 0895 ret
0274 .dbsym r i 20 c
0274 .dbsym r byte 22 c
0274 .dbend
0274 .dbfunc e DS1302_writeD _DS1302_writeD fV
0274 ; data -> R20
0274 ; addr -> R22
.even
0274 _DS1302_writeD::
0274 0E940000 xcall push_gset2
0278 422F mov R20,R18
027A 602F mov R22,R16
027C .dbline -1
027C .dbline 124
027C .dbline 125
027C C498 cbi 0x18,4
027E .dbline 126
027E C798 cbi 0x18,7
0280 .dbline 127
0280 0AE0 ldi R16,10
0282 10E0 ldi R17,0
0284 A8DF xcall _Delayus
0286 .dbline 128
0286 C49A sbi 0x18,4
0288 .dbline 129
0288 0AE0 ldi R16,10
028A 10E0 ldi R17,0
028C A4DF xcall _Delayus
028E .dbline 130
028E 062F mov R16,R22
0290 BEDF xcall _DS1302_writeB
0292 .dbline 131
0292 0AE0 ldi R16,10
0294 10E0 ldi R17,0
0296 9FDF xcall _Delayus
0298 .dbline 132
0298 C798 cbi 0x18,7
029A .dbline 133
029A 0AE0 ldi R16,10
029C 10E0 ldi R17,0
029E 9BDF xcall _Delayus
02A0 .dbline 134
02A0 042F mov R16,R20
02A2 B5DF xcall _DS1302_writeB
02A4 .dbline 135
02A4 ; PORTB&=~BIT(RTC_CLK); //拉低时钟端
02A4 C798 cbi 0x18,7
02A6 .dbline 136
02A6 ; Delayus(10); //调整片选脉冲
02A6 0AE0 ldi R16,10
02A8 10E0 ldi R17,0
02AA 95DF xcall _Delayus
02AC .dbline 137
02AC ; PORTB&=~BIT(RTC_CS); //拉低片选端
02AC C498 cbi 0x18,4
02AE .dbline -2
02AE L58:
02AE 0E940000 xcall pop_gset2
02B2 .dbline 0 ; func end
02B2 0895 ret
02B4 .dbsym r data 20 c
02B4 .dbsym r addr 22 c
02B4 .dbend
02B4 .dbfunc e DS1302_readD _DS1302_readD fc
02B4 ; data -> R20
02B4 ; addr -> R20
.even
02B4 _DS1302_readD::
02B4 0E940000 xcall push_gset1
02B8 402F mov R20,R16
02BA .dbline -1
02BA .dbline 146
02BA ; }
02BA ; /*******************************************
02BA ; 函数名称: DS1302_readD
02BA ; 功 能: 从DS1302的某个地址读出一个字节数据
02BA ; 参 数: addr--地址值(寄存器或RAM)
02BA ; 返回值 : data--读出的数据
02BA ; /********************************************/
02BA ; uchar DS1302_readD(uchar addr)
02BA ; {
02BA .dbline 148
02BA ; uchar data;
02BA ; PORTB&=~BIT(RTC_CS); //拉低片选端
02BA C498 cbi 0x18,4
02BC .dbline 149
02BC ; PORTB&=~BIT(RTC_CLK); //拉低时钟端
02BC C798 cbi 0x18,7
02BE .dbline 150
02BE ; Delayus(10);
02BE 0AE0 ldi R16,10
02C0 10E0 ldi R17,0
02C2 89DF xcall _Delayus
02C4 .dbline 151
02C4 ; PORTB|=BIT(RTC_CS); //拉高片选端
02C4 C49A sbi 0x18,4
02C6 .dbline 152
02C6 ; Delayus(10); //调整片选脉冲
02C6 0AE0 ldi R16,10
02C8 10E0 ldi R17,0
02CA 85DF xcall _Delayus
02CC .dbline 153
02CC ; DS1302_writeB(addr); //写入操作命令(地址)
02CC 042F mov R16,R20
02CE 9FDF xcall _DS1302_writeB
02D0 .dbline 154
02D0 ; Delayus(10);
02D0 0AE0 ldi R16,10
02D2 10E0 ldi R17,0
02D4 80DF xcall _Delayus
02D6 .dbline 155
02D6 ; data=DS1302_readB(); //读出数据
02D6 B1DF xcall _DS1302_readB
02D8 402F mov R20,R16
02DA .dbline 156
02DA ; Delayus(10);
02DA 0AE0 ldi R16,10
02DC 10E0 ldi R17,0
02DE 7BDF xcall _Delayus
02E0 .dbline 157
02E0 ; PORTB&=~BIT(RTC_CLK); //拉低时钟端
02E0 C798 cbi 0x18,7
02E2 .dbline 158
02E2 ; PORTB&=~BIT(RTC_CS); //拉低片选端
02E2 C498 cbi 0x18,4
02E4 .dbline 159
02E4 ; return data; //返回读出的数据
02E4 042F mov R16,R20
02E6 .dbline -2
02E6 L59:
02E6 0E940000 xcall pop_gset1
02EA .dbline 0 ; func end
02EA 0895 ret
02EC .dbsym r data 20 c
02EC .dbsym r addr 20 c
02EC .dbend
02EC .dbfunc e DS1302_setT _DS1302_setT fV
02EC ; addr -> R20
02EC ; i -> R22
02EC ; ptTimeD -> R10,R11
.even
02EC _DS1302_setT::
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -