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

📄 rtc8025.lis

📁 AVR16源代码 ICC编译器
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01E8           ; //功  能:     读时间数据
 01E8           ; //入口参数:   存放的地方,读的地址,长度
 01E8           ; //出口参数:  返回1错误,0成功
 01E8           ; //日  期:     2005-07-20      覃道堂
 01E8           ; //==========================================================
 01E8           ; unsigned char Read_Time_Data(unsigned char *Frame,
 01E8           ;                            unsigned char Address,
 01E8           ;                            unsigned char Len)
 01E8           ; {
 01E8                   .dbline 203
 01E8           ;       unsigned char i;
 01E8           ;       
 01E8           ;       Send_Start();
 01E8 13DF              xcall _Send_Start
 01EA                   .dbline 204
 01EA           ;       Write_Byte(0x64);               //写数据命令;   
 01EA 04E6              ldi R16,100
 01EC CADF              xcall _Write_Byte
 01EE                   .dbline 205
 01EE           ;       if(Receive_ACK()) 
 01EE 5BDF              xcall _Receive_ACK
 01F0 0023              tst R16
 01F2 11F0              breq L35
 01F4                   .dbline 206
 01F4           ;               return 1;
 01F4 01E0              ldi R16,1
 01F6 23C0              xjmp L34
 01F8           L35:
 01F8                   .dbline 207
 01F8           ;       Write_Byte(Address);            //写入要读的首地址
 01F8 042F              mov R16,R20
 01FA C3DF              xcall _Write_Byte
 01FC                   .dbline 208
 01FC           ;       if(Receive_ACK()) 
 01FC 54DF              xcall _Receive_ACK
 01FE 0023              tst R16
 0200 11F0              breq L37
 0202                   .dbline 209
 0202           ;               return 1;
 0202 01E0              ldi R16,1
 0204 1CC0              xjmp L34
 0206           L37:
 0206                   .dbline 210
 0206           ;       Send_Start();
 0206 04DF              xcall _Send_Start
 0208                   .dbline 211
 0208           ;       Write_Byte(0x65);               //读数据命令
 0208 05E6              ldi R16,101
 020A BBDF              xcall _Write_Byte
 020C                   .dbline 212
 020C           ;       if(Receive_ACK()) 
 020C 4CDF              xcall _Receive_ACK
 020E 0023              tst R16
 0210 11F0              breq L39
 0212                   .dbline 213
 0212           ;               return 1;
 0212 01E0              ldi R16,1
 0214 14C0              xjmp L34
 0216           L39:
 0216                   .dbline 214
 0216           ;       for(i = 0;i < Len;i ++)
 0216 4427              clr R20
 0218 0EC0              xjmp L44
 021A           L41:
 021A                   .dbline 215
 021A           ;       {
 021A                   .dbline 216
 021A           ;               Frame[i] = Read_Byte();
 021A 92DF              xcall _Read_Byte
 021C E42F              mov R30,R20
 021E FF27              clr R31
 0220 EA0D              add R30,R10
 0222 FB1D              adc R31,R11
 0224 0083              std z+0,R16
 0226                   .dbline 217
 0226           ;               if(i == (Len - 1))
 0226 862F              mov R24,R22
 0228 8150              subi R24,1
 022A 4817              cp R20,R24
 022C 11F4              brne L45
 022E                   .dbline 218
 022E           ;                       Send_No_ACK();
 022E 6DDF              xcall _Send_No_ACK
 0230 01C0              xjmp L46
 0232           L45:
 0232                   .dbline 220
 0232           ;               else
 0232           ;                       Send_ACK();
 0232 51DF              xcall _Send_ACK
 0234           L46:
 0234                   .dbline 221
 0234           L42:
 0234                   .dbline 214
 0234 4395              inc R20
 0236           L44:
 0236                   .dbline 214
 0236 4617              cp R20,R22
 0238 80F3              brlo L41
 023A                   .dbline 222
 023A           ;       }
 023A           ;       Send_Stop();                    
 023A 11DF              xcall _Send_Stop
 023C                   .dbline 223
 023C           ;       return 0;               
 023C 0027              clr R16
 023E                   .dbline -2
 023E           L34:
 023E 0E940000          xcall pop_gset3
 0242                   .dbline 0 ; func end
 0242 0895              ret
 0244                   .dbsym r i 20 c
 0244                   .dbsym r Len 22 c
 0244                   .dbsym r Address 20 c
 0244                   .dbsym r Frame 10 pc
 0244                   .dbend
 0244                   .dbfunc e Write_Time_Data _Write_Time_Data fc
 0244           ;              i -> R20
 0244           ;            Len -> R22
 0244           ;        Address -> R20
 0244           ;          Frame -> R10,R11
                        .even
 0244           _Write_Time_Data::
 0244 0E940000          xcall push_gset3
 0248 422F              mov R20,R18
 024A 5801              movw R10,R16
 024C 6E81              ldd R22,y+6
 024E                   .dbline -1
 024E                   .dbline 237
 024E           ; }
 024E           ; //==========================================================
 024E           ; //函  数:     unsigned char Write_Time_Data(unsigned char *Frame,
 024E           ; //                          unsigned char Address,
 024E           ; //                          unsigned char Len)
 024E           ; //功  能:     写时间和数据
 024E           ; //入口参数:   写入数据,地址,长度
 024E           ; //出口参数:  返回1错误,0成功
 024E           ; //日  期:     2005-07-20      覃道堂
 024E           ; //==========================================================
 024E           ; unsigned char Write_Time_Data(unsigned char *Frame,
 024E           ;                             unsigned char Address,
 024E           ;                             unsigned char Len)
 024E           ; {
 024E                   .dbline 240
 024E           ;       unsigned char i;
 024E           ;       
 024E           ;       Send_Start();
 024E E0DE              xcall _Send_Start
 0250                   .dbline 241
 0250           ;       Write_Byte(0x64);               //写数据命令;   
 0250 04E6              ldi R16,100
 0252 97DF              xcall _Write_Byte
 0254                   .dbline 242
 0254           ;       if(Receive_ACK()) 
 0254 28DF              xcall _Receive_ACK
 0256 0023              tst R16
 0258 11F0              breq L48
 025A                   .dbline 243
 025A           ;               return 1;
 025A 01E0              ldi R16,1
 025C 19C0              xjmp L47
 025E           L48:
 025E                   .dbline 244
 025E           ;       Write_Byte(Address);            //写入要读的首地址
 025E 042F              mov R16,R20
 0260 90DF              xcall _Write_Byte
 0262                   .dbline 245
 0262           ;       if(Receive_ACK()) 
 0262 21DF              xcall _Receive_ACK
 0264 0023              tst R16
 0266 11F0              breq L50
 0268                   .dbline 246
 0268           ;               return 1;
 0268 01E0              ldi R16,1
 026A 12C0              xjmp L47
 026C           L50:
 026C                   .dbline 247
 026C           ;       for(i = 0;i < Len;i ++)
 026C 4427              clr R20
 026E 0CC0              xjmp L55
 0270           L52:
 0270                   .dbline 248
 0270           ;       {
 0270                   .dbline 249
 0270           ;               Write_Byte(Frame[i]);
 0270 E42F              mov R30,R20
 0272 FF27              clr R31
 0274 EA0D              add R30,R10
 0276 FB1D              adc R31,R11
 0278 0081              ldd R16,z+0
 027A 83DF              xcall _Write_Byte
 027C                   .dbline 250
 027C           ;               if(Receive_ACK())
 027C 14DF              xcall _Receive_ACK
 027E 0023              tst R16
 0280 11F0              breq L56
 0282                   .dbline 251
 0282           ;                       return 1;
 0282 01E0              ldi R16,1
 0284 05C0              xjmp L47
 0286           L56:
 0286                   .dbline 252
 0286           L53:
 0286                   .dbline 247
 0286 4395              inc R20
 0288           L55:
 0288                   .dbline 247
 0288 4617              cp R20,R22
 028A 90F3              brlo L52
 028C                   .dbline 253
 028C           ;       }       
 028C           ;       Send_Stop();                    
 028C E8DE              xcall _Send_Stop
 028E                   .dbline 254
 028E           ;       return 0;               
 028E 0027              clr R16
 0290                   .dbline -2
 0290           L47:
 0290 0E940000          xcall pop_gset3
 0294                   .dbline 0 ; func end
 0294 0895              ret
 0296                   .dbsym r i 20 c
 0296                   .dbsym r Len 22 c
 0296                   .dbsym r Address 20 c
 0296                   .dbsym r Frame 10 pc
 0296                   .dbend
 0296                   .dbfunc e Reset_R8025 _Reset_R8025 fV
 0296           ;       Read_COL -> y+1
 0296           ;              i -> R20,R21
                        .even
 0296           _Reset_R8025::
 0296 0E940000          xcall push_gset1
 029A 2397              sbiw R28,3
 029C                   .dbline -1
 029C                   .dbline 264
 029C           ; }
 029C           ; //==========================================================
 029C           ; //函  数:     void Reset_R8025(void)
 029C           ; //功  能:     复位
 029C           ; //入口参数:   无
 029C           ; //出口参数:  无
 029C           ; //日  期:     2005-07-20      覃道堂
 029C           ; //==========================================================
 029C           ; void Reset_R8025(void)
 029C           ; {
 029C                   .dbline 268
 029C           ;       unsigned int i;
 029C           ;       unsigned char Read_COL[2];
 029C           ; 
 029C           ;         Read_COL[0] = 0x60;   
 029C 80E6              ldi R24,96
 029E 8983              std y+1,R24
 02A0                   .dbline 269
 02A0           ;       Read_COL[1] = 0x20;
 02A0 80E2              ldi R24,32
 02A2 8A83              std y+2,R24
 02A4                   .dbline 270
 02A4           ;       for(i = 0;i < 3;i ++)
 02A4 4427              clr R20
 02A6 5527              clr R21
 02A8 0CC0              xjmp L63
 02AA           L60:
 02AA                   .dbline 271
 02AA           ;       {                                                 
 02AA                   .dbline 272
 02AA           ;               if(Write_Time_Data(Read_COL,Control_Address,2) == 0)
 02AA 82E0              ldi R24,2
 02AC 8883              std y+0,R24
 02AE 20EE              ldi R18,224
 02B0 8E01              movw R16,R28
 02B2 0F5F              subi R16,255  ; offset = 1
 02B4 1F4F              sbci R17,255
 02B6 C6DF              xcall _Write_Time_Data
 02B8 0023              tst R16
 02BA 09F4              brne L64
 02BC                   .dbline 273
 02BC           ;                       break;
 02BC 06C0              xjmp L62
 02BE           L64:
 02BE                   .dbline 274
 02BE           L61:
 02BE                   .dbline 270
 02BE 4F5F              subi R20,255  ; offset = 1
 02C0 5F4F              sbci R21,255
 02C2           L63:
 02C2                   .dbline 270
 02C2 4330              cpi R20,3
 02C4 E0E0              ldi R30,0
 02C6 5E07              cpc R21,R30
 02C8 80F3              brlo L60
 02CA           L62:
 02CA                   .dbline 275
 02CA           ;       }
 02CA           ;       for(i = 0;i < 30000;i ++)
 02CA 4427              clr R20
 02CC 5527              clr R21
 02CE 03C0              xjmp L69
 02D0           L66:
 02D0                   .dbline 276
 02D0 0000              nop
 02D2           L67:
 02D2                   .dbline 275
 02D2 4F5F              subi R20,255  ; offset = 1
 02D4 5F4F              sbci R21,255
 02D6           L69:
 02D6                   .dbline 275
 02D6 4033              cpi R20,48
 02D8 E5E7              ldi R30,117
 02DA 5E07              cpc R21,R30
 02DC C8F3              brlo L66
 02DE                   .dbline -2
 02DE           L58:
 02DE 2396              adiw R28,3
 02E0 0E940000          xcall pop_gset1
 02E4                   .dbline 0 ; func end
 02E4 0895              ret
 02E6                   .dbsym l Read_COL 1 A[2:2]c
 02E6                   .dbsym r i 20 i
 02E6                   .dbend

⌨️ 快捷键说明

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