📄 uart.lis.bak
字号:
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 + -