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

📄 uart.lis.bak

📁 AVR16源代码 ICC编译器
💻 BAK
📖 第 1 页 / 共 2 页
字号:
 00A4 0F3F              cpi R16,255
 00A6 EFEF              ldi R30,255
 00A8 1E07              cpc R17,R30
 00AA 61F3              breq L19
 00AC                   .dbline 122
 00AC           ;               }  
 00AC           ;               Frame[ReceiveLen] = (unsigned char)ByteData;
 00AC FB01              movw R30,R22
 00AE 0A84              ldd R0,y+10
 00B0 1B84              ldd R1,y+11
 00B2 E00D              add R30,R0
 00B4 F11D              adc R31,R1
 00B6 E082              std z+0,R14
 00B8                   .dbline 123
 00B8           ;               if(ReceiveLen == 0x04)
 00B8 6430              cpi R22,4
 00BA E0E0              ldi R30,0
 00BC 7E07              cpc R23,R30
 00BE 39F4              brne L26
 00C0                   .dbline 124
 00C0           ;                       Len = Frame[ReceiveLen] + 0x02;
 00C0 FB01              movw R30,R22
 00C2 E00D              add R30,R0
 00C4 F11D              adc R31,R1
 00C6 4081              ldd R20,z+0
 00C8 5527              clr R21
 00CA 4E5F              subi R20,254  ; offset = 2
 00CC 5F4F              sbci R21,255
 00CE           L26:
 00CE                   .dbline 125
 00CE 6F5F              subi R22,255  ; offset = 1
 00D0 7F4F              sbci R23,255
 00D2                   .dbline 126
 00D2 AA24              clr R10
 00D4 BB24              clr R11
 00D6                   .dbline 127
 00D6           L17:
 00D6                   .dbline 111
 00D6 6417              cp R22,R20
 00D8 7507              cpc R23,R21
 00DA 14F3              brlt L20
 00DC                   .dbline 128
 00DC           ;               ReceiveLen ++; 
 00DC           ;               TimerCount = 0;
 00DC           ;       }
 00DC           ;       return ReceiveLen;
 00DC 062F              mov R16,R22
 00DE                   .dbline -2
 00DE           L15:
 00DE 0E940000          xcall pop_gset5
 00E2 2496              adiw R28,4
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbsym r Len 20 I
 00E6                   .dbsym r ReceiveLen 22 I
 00E6                   .dbsym r TimerCount 10 I
 00E6                   .dbsym r ByteData 14 I
 00E6                   .dbsym r OverTime 12 I
 00E6                   .dbsym l Frame 10 pc
 00E6                   .dbend
 00E6                   .dbfunc e PC_Send_Err _PC_Send_Err fV
 00E6           ;       Crc_Data -> R22,R23
 00E6           ;        SendBuf -> R20,R21
 00E6           ;        Err_Ret -> R22
                        .even
 00E6           _PC_Send_Err::
 00E6 0E940000          xcall push_gset2
 00EA A901              movw R20,R18
 00EC 602F              mov R22,R16
 00EE                   .dbline -1
 00EE                   .dbline 142
 00EE           ; }
 00EE           ; 
 00EE           ; //============================================================
 00EE           ; //函  数:void PC_Send_Err(unsigned char Ret,unsigned char *SendBuf)
 00EE           ; //功  能:向PC返回执行结果
 00EE           ; //入口参数:结果代码,发送缓冲区
 00EE           ; //返 回 值:无
 00EE           ; //设 计 者:覃道堂 
 00EE           ; //创作时间:2006-03-16
 00EE           ; //修改时间:
 00EE           ; //修改目的:
 00EE           ; //============================================================
 00EE           ; void PC_Send_Err(unsigned char Err_Ret,unsigned char *SendBuf)
 00EE           ; {
 00EE                   .dbline 145
 00EE           ;       unsigned short  Crc_Data;
 00EE           ;       
 00EE           ;       SendBuf[0] = 0x45;
 00EE 85E4              ldi R24,69
 00F0 FA01              movw R30,R20
 00F2 8083              std z+0,R24
 00F4                   .dbline 146
 00F4           ;       SendBuf[1] = 0x52;
 00F4 82E5              ldi R24,82
 00F6 8183              std z+1,R24
 00F8                   .dbline 147
 00F8           ;       SendBuf[2] = 0x00;
 00F8 2224              clr R2
 00FA FA01              movw R30,R20
 00FC 2282              std z+2,R2
 00FE                   .dbline 148
 00FE           ;       SendBuf[3] = 0x05;
 00FE 85E0              ldi R24,5
 0100 FA01              movw R30,R20
 0102 8383              std z+3,R24
 0104                   .dbline 149
 0104           ;       SendBuf[4] = Err_Ret;          
 0104 FA01              movw R30,R20
 0106 6483              std z+4,R22
 0108                   .dbline 150
 0108           ;       Crc_Data = CRC16(SendBuf,5);
 0108 25E0              ldi R18,5
 010A 30E0              ldi R19,0
 010C 8A01              movw R16,R20
 010E 0E940000          xcall _CRC16
 0112 B801              movw R22,R16
 0114                   .dbline 151
 0114           ;       SendBuf[5] = Crc_Data / 0x100;
 0114 1B01              movw R2,R22
 0116 232C              mov R2,R3
 0118 3324              clr R3
 011A FA01              movw R30,R20
 011C 2582              std z+5,R2
 011E                   .dbline 152
 011E           ;       SendBuf[6] = (unsigned char)Crc_Data;   
 011E FA01              movw R30,R20
 0120 6683              std z+6,R22
 0122                   .dbline 153
 0122           ;       Uart_Send_Frame(SendBuf, 7);
 0122 27E0              ldi R18,7
 0124 30E0              ldi R19,0
 0126 8A01              movw R16,R20
 0128 8DDF              xcall _Uart_Send_Frame
 012A                   .dbline -2
 012A           L28:
 012A 0E940000          xcall pop_gset2
 012E                   .dbline 0 ; func end
 012E 0895              ret
 0130                   .dbsym r Crc_Data 22 s
 0130                   .dbsym r SendBuf 20 pc
 0130                   .dbsym r Err_Ret 22 c
 0130                   .dbend
 0130                   .dbfunc e PC_Send_Ok _PC_Send_Ok fV
 0130           ;       Crc_Data -> R10,R11
 0130           ;              i -> R10,R11
 0130           ;            Len -> R22,R23
 0130           ;        SendBuf -> R20,R21
 0130           ;        Ok_Coad -> R10
 0130           ;       Ok_Frame -> R12,R13
                        .even
 0130           _PC_Send_Ok::
 0130 0E940000          xcall push_gset4
 0134 A22E              mov R10,R18
 0136 6801              movw R12,R16
 0138 4885              ldd R20,y+8
 013A 5985              ldd R21,y+9
 013C 6A85              ldd R22,y+10
 013E 7B85              ldd R23,y+11
 0140                   .dbline -1
 0140                   .dbline 168
 0140           ; }
 0140           ; 
 0140           ; //============================================================
 0140           ; //函  数:void PC_Send_Ok(unsigned char *Ok_Frame,unsigned char Ok_Coad,
 0140           ; //                            unsigned char *SendBuf,int Len)
 0140           ; //功  能:向PC返回执行结果
 0140           ; //入口参数:发送数据,结果代码,发送缓冲区,发送数据长度
 0140           ; //返 回 值:无
 0140           ; //设 计 者:覃道堂 
 0140           ; //创作时间:2006-03-16
 0140           ; //修改时间:
 0140           ; //修改目的:
 0140           ; //============================================================
 0140           ; void PC_Send_Ok(unsigned char *Ok_Frame,unsigned char Ok_Coad,unsigned char *SendBuf,int Len)
 0140           ; {
 0140                   .dbline 172
 0140           ;       int             i;
 0140           ;       unsigned short  Crc_Data;
 0140           ;       
 0140           ;       SendBuf[0] = 0x4F;
 0140 8FE4              ldi R24,79
 0142 FA01              movw R30,R20
 0144 8083              std z+0,R24
 0146                   .dbline 173
 0146           ;       SendBuf[1] = 0x4B;
 0146 8BE4              ldi R24,75
 0148 8183              std z+1,R24
 014A                   .dbline 174
 014A           ;       SendBuf[2] = 0x00;                      //包序号
 014A 2224              clr R2
 014C FA01              movw R30,R20
 014E 2282              std z+2,R2
 0150                   .dbline 175
 0150           ;       SendBuf[3] = 0x04 + Len;                //数据长度
 0150 CB01              movw R24,R22
 0152 0496              adiw R24,4
 0154 FA01              movw R30,R20
 0156 8383              std z+3,R24
 0158                   .dbline 176
 0158           ;       if(Len == 1)
 0158 6130              cpi R22,1
 015A E0E0              ldi R30,0
 015C 7E07              cpc R23,R30
 015E 19F4              brne L30
 0160                   .dbline 177
 0160           ;               SendBuf[4] = Ok_Coad;
 0160 FA01              movw R30,R20
 0162 A482              std z+4,R10
 0164 1AC0              xjmp L31
 0166           L30:
 0166                   .dbline 178
 0166           ;       else if(Len > 1)
 0166 81E0              ldi R24,1
 0168 90E0              ldi R25,0
 016A 8617              cp R24,R22
 016C 9707              cpc R25,R23
 016E 94F4              brge L32
 0170                   .dbline 179
 0170           ;       {
 0170                   .dbline 180
 0170           ;               for(i = 0;i < Len;i ++)
 0170 AA24              clr R10
 0172 BB24              clr R11
 0174 0BC0              xjmp L37
 0176           L34:
 0176                   .dbline 181
 0176 F501              movw R30,R10
 0178 EC0D              add R30,R12
 017A FD1D              adc R31,R13
 017C 2080              ldd R2,z+0
 017E F501              movw R30,R10
 0180 E40F              add R30,R20
 0182 F51F              adc R31,R21
 0184 2482              std z+4,R2
 0186           L35:
 0186                   .dbline 180
 0186 C501              movw R24,R10
 0188 0196              adiw R24,1
 018A 5C01              movw R10,R24
 018C           L37:
 018C                   .dbline 180
 018C A616              cp R10,R22
 018E B706              cpc R11,R23
 0190 94F3              brlt L34
 0192                   .dbline 182
 0192           ;                       SendBuf[4+i] = Ok_Frame[i];
 0192           ;       }
 0192 03C0              xjmp L33
 0194           L32:
 0194                   .dbline 184
 0194           ;       else
 0194           ;               SendBuf[4] = 0;
 0194 2224              clr R2
 0196 FA01              movw R30,R20
 0198 2482              std z+4,R2
 019A           L33:
 019A           L31:
 019A                   .dbline 185
 019A           ;       Crc_Data = CRC16(SendBuf,4+Len);
 019A 9B01              movw R18,R22
 019C 2C5F              subi R18,252  ; offset = 4
 019E 3F4F              sbci R19,255
 01A0 8A01              movw R16,R20
 01A2 0E940000          xcall _CRC16
 01A6 5801              movw R10,R16
 01A8                   .dbline 186
 01A8           ;       SendBuf[Len+4] = Crc_Data / 0x100;
 01A8 FB01              movw R30,R22
 01AA E40F              add R30,R20
 01AC F51F              adc R31,R21
 01AE 1501              movw R2,R10
 01B0 232C              mov R2,R3
 01B2 3324              clr R3
 01B4 2482              std z+4,R2
 01B6                   .dbline 187
 01B6           ;       SendBuf[Len+5] = (unsigned char)Crc_Data;       
 01B6 FB01              movw R30,R22
 01B8 E40F              add R30,R20
 01BA F51F              adc R31,R21
 01BC A582              std z+5,R10
 01BE                   .dbline 188
 01BE           ;       Uart_Send_Frame(SendBuf, Len+6);
 01BE 9B01              movw R18,R22
 01C0 2A5F              subi R18,250  ; offset = 6
 01C2 3F4F              sbci R19,255
 01C4 8A01              movw R16,R20
 01C6 3EDF              xcall _Uart_Send_Frame
 01C8                   .dbline -2
 01C8           L29:
 01C8 0E940000          xcall pop_gset4
 01CC                   .dbline 0 ; func end
 01CC 0895              ret
 01CE                   .dbsym r Crc_Data 10 s
 01CE                   .dbsym r i 10 I
 01CE                   .dbsym r Len 22 I
 01CE                   .dbsym r SendBuf 20 pc
 01CE                   .dbsym r Ok_Coad 10 c
 01CE                   .dbsym r Ok_Frame 12 pc
 01CE                   .dbend

⌨️ 快捷键说明

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