📄 rtc8025.lis
字号:
00F0 87DF xcall _RTC_Delay
00F2 .dbline 100
00F2 ; RTCSCL_H;
00F2 909A sbi 0x12,0
00F4 .dbline 101
00F4 ; RTC_Delay(1);
00F4 01E0 ldi R16,1
00F6 10E0 ldi R17,0
00F8 83DF xcall _RTC_Delay
00FA .dbline 102
00FA ; RTCSCL_L;
00FA 82B3 in R24,0x12
00FC 8E7F andi R24,254
00FE 82BB out 0x12,R24
0100 .dbline 103
0100 ; RTC_Delay(1);
0100 01E0 ldi R16,1
0102 10E0 ldi R17,0
0104 7DDF xcall _RTC_Delay
0106 .dbline 104
0106 ; return 0;
0106 0027 clr R16
0108 .dbline -2
0108 L14:
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbend
010A .dbfunc e Send_No_ACK _Send_No_ACK fc
.even
010A _Send_No_ACK::
010A .dbline -1
010A .dbline 115
010A ; }
010A ;
010A ; //==========================================================
010A ; //函 数: void Send_No_ACK(void)
010A ; //功 能: 发送应答
010A ; //入口参数: 无
010A ; //出口参数: 无
010A ; //日 期: 2005-07-20 覃道堂
010A ; //==========================================================
010A ; unsigned char Send_No_ACK(void)
010A ; {
010A .dbline 116
010A ; RTCSCL_L;
010A 82B3 in R24,0x12
010C 8E7F andi R24,254
010E 82BB out 0x12,R24
0110 .dbline 117
0110 ; if(!(PIND & 0x02))
0110 8199 sbic 0x10,1
0112 02C0 rjmp L18
0114 .dbline 118
0114 ; return 1;
0114 01E0 ldi R16,1
0116 13C0 xjmp L17
0118 L18:
0118 .dbline 119
0118 ; RTCSDA_OUTPUT;
0118 899A sbi 0x11,1
011A .dbline 120
011A ; RTC_Delay(1);
011A 01E0 ldi R16,1
011C 10E0 ldi R17,0
011E 70DF xcall _RTC_Delay
0120 .dbline 121
0120 ; RTCSDA_H;
0120 919A sbi 0x12,1
0122 .dbline 122
0122 ; RTC_Delay(1);
0122 01E0 ldi R16,1
0124 10E0 ldi R17,0
0126 6CDF xcall _RTC_Delay
0128 .dbline 123
0128 ; RTCSCL_H;
0128 909A sbi 0x12,0
012A .dbline 124
012A ; RTC_Delay(1);
012A 01E0 ldi R16,1
012C 10E0 ldi R17,0
012E 68DF xcall _RTC_Delay
0130 .dbline 125
0130 ; RTCSCL_L;
0130 82B3 in R24,0x12
0132 8E7F andi R24,254
0134 82BB out 0x12,R24
0136 .dbline 126
0136 ; RTC_Delay(1);
0136 01E0 ldi R16,1
0138 10E0 ldi R17,0
013A 62DF xcall _RTC_Delay
013C .dbline 127
013C ; return 0;
013C 0027 clr R16
013E .dbline -2
013E L17:
013E .dbline 0 ; func end
013E 0895 ret
0140 .dbend
0140 .dbfunc e Read_Byte _Read_Byte fc
0140 ; i -> R20
0140 ; Byte -> R22
.even
0140 _Read_Byte::
0140 0E940000 xcall push_gset2
0144 .dbline -1
0144 .dbline 137
0144 ; }
0144 ; //==========================================================
0144 ; //函 数: unsigned char Read_Byte(void)
0144 ; //功 能: 从R8025里读一个Byte
0144 ; //入口参数: 无
0144 ; //出口参数: 错误返回1,正确返回读取的值
0144 ; //日 期: 2005-07-20 覃道堂
0144 ; //==========================================================
0144 ; unsigned char Read_Byte(void)
0144 ; {
0144 .dbline 138
0144 ; unsigned char i = 8;
0144 48E0 ldi R20,8
0146 .dbline 141
0146 ; unsigned char Byte;
0146 ;
0146 ; RTCSCL_L;
0146 82B3 in R24,0x12
0148 8E7F andi R24,254
014A 82BB out 0x12,R24
014C .dbline 142
014C ; RTCSDA_INPUT;
014C 81B3 in R24,0x11
014E 8D7F andi R24,253
0150 81BB out 0x11,R24
0152 0EC0 xjmp L22
0154 L21:
0154 .dbline 144
0154 ; while(i --)
0154 ; {
0154 .dbline 145
0154 ; Byte = Byte << 1;
0154 660F lsl R22
0156 .dbline 146
0156 ; RTCSCL_H;
0156 909A sbi 0x12,0
0158 .dbline 147
0158 ; RTC_Delay(1);
0158 01E0 ldi R16,1
015A 10E0 ldi R17,0
015C 51DF xcall _RTC_Delay
015E .dbline 148
015E ; if((PIND & 0x02))
015E 819B sbis 0x10,1
0160 01C0 rjmp L24
0162 .dbline 149
0162 ; {
0162 .dbline 150
0162 ; Byte = Byte + 1;
0162 6395 inc R22
0164 .dbline 151
0164 ; }
0164 L24:
0164 .dbline 152
0164 82B3 in R24,0x12
0166 8E7F andi R24,254
0168 82BB out 0x12,R24
016A .dbline 153
016A 01E0 ldi R16,1
016C 10E0 ldi R17,0
016E 48DF xcall _RTC_Delay
0170 .dbline 154
0170 L22:
0170 .dbline 143
0170 242E mov R2,R20
0172 3324 clr R3
0174 4150 subi R20,1
0176 2220 tst R2
0178 69F7 brne L21
017A .dbline 155
017A ; RTCSCL_L;
017A ; RTC_Delay(1);
017A ; }
017A ; return Byte;
017A 062F mov R16,R22
017C .dbline -2
017C L20:
017C 0E940000 xcall pop_gset2
0180 .dbline 0 ; func end
0180 0895 ret
0182 .dbsym r i 20 c
0182 .dbsym r Byte 22 c
0182 .dbend
0182 .dbfunc e Write_Byte _Write_Byte fc
0182 ; i -> R20
0182 ; Data -> R22
.even
0182 _Write_Byte::
0182 0E940000 xcall push_gset2
0186 602F mov R22,R16
0188 .dbline -1
0188 .dbline 165
0188 ; }
0188 ; //==========================================================
0188 ; //函 数: void Write_Byte(unsigned char Data)
0188 ; //功 能: R8025写一个Byte
0188 ; //入口参数: 写的数据
0188 ; //出口参数: 返回1错误,0成功
0188 ; //日 期: 2005-07-20 覃道堂
0188 ; //==========================================================
0188 ; unsigned char Write_Byte(unsigned char Data)
0188 ; {
0188 .dbline 166
0188 ; unsigned char i = 8;
0188 48E0 ldi R20,8
018A .dbline 168
018A ;
018A ; RTCSDA_INPUT;
018A 81B3 in R24,0x11
018C 8D7F andi R24,253
018E 81BB out 0x11,R24
0190 .dbline 169
0190 ; RTC_Delay(1);
0190 01E0 ldi R16,1
0192 10E0 ldi R17,0
0194 35DF xcall _RTC_Delay
0196 .dbline 170
0196 ; if((PIND & 0x02) == 0)
0196 8199 sbic 0x10,1
0198 02C0 rjmp L27
019A .dbline 171
019A ; return 1;
019A 01E0 ldi R16,1
019C 1DC0 xjmp L26
019E L27:
019E .dbline 172
019E ; RTCSDA_L;
019E 82B3 in R24,0x12
01A0 8D7F andi R24,253
01A2 82BB out 0x12,R24
01A4 .dbline 173
01A4 ; RTCSDA_OUTPUT;
01A4 899A sbi 0x11,1
01A6 12C0 xjmp L30
01A8 L29:
01A8 .dbline 175
01A8 ; while(i --)
01A8 ; {
01A8 .dbline 176
01A8 ; if(Data & 0x80)
01A8 67FF sbrs R22,7
01AA 02C0 rjmp L32
01AC .dbline 177
01AC ; RTCSDA_H;
01AC 919A sbi 0x12,1
01AE 03C0 xjmp L33
01B0 L32:
01B0 .dbline 179
01B0 ; else
01B0 ; RTCSDA_L;
01B0 82B3 in R24,0x12
01B2 8D7F andi R24,253
01B4 82BB out 0x12,R24
01B6 L33:
01B6 .dbline 180
01B6 909A sbi 0x12,0
01B8 .dbline 181
01B8 01E0 ldi R16,1
01BA 10E0 ldi R17,0
01BC 21DF xcall _RTC_Delay
01BE .dbline 182
01BE 82B3 in R24,0x12
01C0 8E7F andi R24,254
01C2 82BB out 0x12,R24
01C4 .dbline 183
01C4 01E0 ldi R16,1
01C6 10E0 ldi R17,0
01C8 1BDF xcall _RTC_Delay
01CA .dbline 184
01CA 660F lsl R22
01CC .dbline 185
01CC L30:
01CC .dbline 174
01CC 242E mov R2,R20
01CE 3324 clr R3
01D0 4150 subi R20,1
01D2 2220 tst R2
01D4 49F7 brne L29
01D6 .dbline 186
01D6 ; RTCSCL_H;
01D6 ; RTC_Delay(1);
01D6 ; RTCSCL_L;
01D6 ; RTC_Delay(1);
01D6 ; Data = Data << 1;
01D6 ; }
01D6 ; return 0;
01D6 0027 clr R16
01D8 .dbline -2
01D8 L26:
01D8 0E940000 xcall pop_gset2
01DC .dbline 0 ; func end
01DC 0895 ret
01DE .dbsym r i 20 c
01DE .dbsym r Data 22 c
01DE .dbend
01DE .dbfunc e Read_Time_Data _Read_Time_Data fc
01DE ; i -> R20
01DE ; Len -> R22
01DE ; Address -> R20
01DE ; Frame -> R10,R11
.even
01DE _Read_Time_Data::
01DE 0E940000 xcall push_gset3
01E2 422F mov R20,R18
01E4 5801 movw R10,R16
01E6 6E81 ldd R22,y+6
01E8 .dbline -1
01E8 .dbline 200
01E8 ; }
01E8 ;
01E8 ; //==========================================================
01E8 ; //函 数: unsigned char Read_Time_Data(unsigned char *Frame,
01E8 ; // unsigned char Address,unsigned char Len)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -