📄 mock_uart.lis
字号:
00D8 .dbline 104
00D8 ; PSendChar(DEVICE_NUMBER);//发送系统设备号
00D8 02E0 ldi R16,2
00DA A5DF xcall _PSendChar
00DC .dbline 105
00DC ; C51_buf = (struct Device51_StructOfProtocol *)C51Buffer485;
00DC 40E0 ldi R20,<_C51Buffer485
00DE 50E0 ldi R21,>_C51Buffer485
00E0 .dbline 106
00E0 ; Count = C51_buf->Length;
00E0 FA01 movw R30,R20
00E2 4181 ldd R20,z+1
00E4 5281 ldd R21,z+2
00E6 .dbline 107
00E6 ; if(Count&&(Count<= 256))
00E6 4030 cpi R20,0
00E8 4507 cpc R20,R21
00EA 79F1 breq L38
00EC X11:
00EC 80E0 ldi R24,256
00EE 91E0 ldi R25,1
00F0 8417 cp R24,R20
00F2 9507 cpc R25,R21
00F4 50F1 brlo L38
00F6 X12:
00F6 .dbline 108
00F6 ; {
00F6 .dbline 109
00F6 ; C51_uart = C51Buffer485; /*初始化数据发送指针*/
00F6 80E0 ldi R24,<_C51Buffer485
00F8 90E0 ldi R25,>_C51Buffer485
00FA 90930100 sts L37+1,R25
00FE 80930000 sts L37,R24
0102 .dbline 110
0102 ; CRC = 0xffff; /*初始化校验码*/
0102 8FEF ldi R24,65535
0104 9FEF ldi R25,255
0106 9983 std y+1,R25
0108 8883 std y+0,R24
010A .dbline 111
010A ; Count += 3;
010A 4D5F subi R20,253 ; offset = 3
010C 5F4F sbci R21,255
010E .dbline 113
010E ;
010E ; for(i=0;i<Count;i++)
010E AA24 clr R10
0110 10C0 xjmp L43
0112 L40:
0112 .dbline 114
0112 ; {
0112 .dbline 115
0112 ; tmp = *C51_uart++; /*取发送数据*/
0112 E0910000 lds R30,L37
0116 F0910100 lds R31,L37+1
011A C190 ld R12,Z+
011C F0930100 sts L37+1,R31
0120 E0930000 sts L37,R30
0124 .dbline 116
0124 ; PSendChar(tmp);
0124 0C2D mov R16,R12
0126 7FDF xcall _PSendChar
0128 .dbline 117
0128 ; CRC16(&CRC,tmp);
0128 2C2D mov R18,R12
012A 8E01 movw R16,R28
012C 0E940000 xcall _CRC16
0130 .dbline 118
0130 ; }
0130 L41:
0130 .dbline 113
0130 A394 inc R10
0132 L43:
0132 .dbline 113
0132 2A2C mov R2,R10
0134 3324 clr R3
0136 2416 cp R2,R20
0138 3506 cpc R3,R21
013A 58F3 brlo L40
013C X13:
013C .dbline 119
013C ; PSendChar(CRC>>8);
013C 0881 ldd R16,y+0
013E 1981 ldd R17,y+1
0140 012F mov R16,R17
0142 1127 clr R17
0144 70DF xcall _PSendChar
0146 .dbline 120
0146 ; PSendChar(CRC);//发送校验码
0146 0881 ldd R16,y+0
0148 6EDF xcall _PSendChar
014A .dbline 121
014A ; }
014A L38:
014A .dbline 122
014A ; C51max485_off();
014A 9698 cbi 0x12,6
014C .dbline 123
014C ; Power_LED_Drown();
014C 8F98 cbi 0x11,7
014E .dbline -2
014E L36:
014E .dbline 0 ; func end
014E 2296 adiw R28,2
0150 0C940000 xjmp pop_xgset303C
0154 .dbsym r C51_buf 20 pS[Device51_StructOfProtocol]
0154 .dbsym l CRC 0 i
0154 .dbsym r Count 20 i
0154 .dbsym r i 10 c
0154 .dbsym r tmp 12 c
0154 .dbend
.area bss(ram, con, rel)
0002 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
0002 L45:
0002 .blkb 2
0004 L46:
0004 .blkb 2
0006 L47:
0006 .blkb 2
.area text(rom, con, rel)
0154 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
0154 .dbfunc e BUS_GetPacket_51Device _BUS_GetPacket_51Device fc
0154 .dbstruct 0 256 Device51_Address
0154 .dbfield 0 Address A[256:256]c
0154 .dbend
0154 .dbsym s C51_uart L47 pc
0154 .dbsym s Count L46 i
0154 .dbsym s CRC L45 i
0154 ; Device51 -> <dead>
0154 ; C51_buf -> R20,R21
0154 ; tmp -> R10
.even
0154 _BUS_GetPacket_51Device::
0154 0E940000 xcall push_xgsetF03C
0158 .dbline -1
0158 .dbline 128
0158 ; }
0158 ; //------------------------------------------------------------------------------
0158 ; //接收数据
0158 ; unsigned char BUS_GetPacket_51Device(void)
0158 ; {
0158 .dbline 134
0158 ; unsigned char tmp;
0158 ; static unsigned int CRC,Count;
0158 ; static unsigned char *C51_uart;
0158 ; struct Device51_StructOfProtocol *C51_buf;
0158 ; struct Device51_Address *Device51;
0158 ; if(PGetChar()!=BOOT_CODE) return 1;
0158 8FDF xcall _PGetChar
015A 0E3F cpi R16,254
015C 11F0 breq L48
015E X14:
015E .dbline 134
015E 01E0 ldi R16,1
0160 95C0 xjmp L44
0162 L48:
0162 .dbline 135
0162 ; if(PGetChar()!=BOOT_CODE) return 1;
0162 8ADF xcall _PGetChar
0164 0E3F cpi R16,254
0166 11F0 breq L50
0168 X15:
0168 .dbline 135
0168 01E0 ldi R16,1
016A 90C0 xjmp L44
016C L50:
016C .dbline 136
016C ; if(PGetChar()!=DEVICE_NUMBER) return 1;
016C 85DF xcall _PGetChar
016E 402F mov R20,R16
0170 0230 cpi R16,2
0172 11F0 breq L52
0174 X16:
0174 .dbline 136
0174 01E0 ldi R16,1
0176 8AC0 xjmp L44
0178 L52:
0178 .dbline 137
0178 ; CRC = 0xffff; /*初始化校验码*/
0178 8FEF ldi R24,65535
017A 9FEF ldi R25,255
017C 90930300 sts L45+1,R25
0180 80930200 sts L45,R24
0184 .dbline 138
0184 ; C51_uart = C51Buffer485; /*初始化数据接收指针*/
0184 80E0 ldi R24,<_C51Buffer485
0186 90E0 ldi R25,>_C51Buffer485
0188 90930700 sts L47+1,R25
018C 80930600 sts L47,R24
0190 .dbline 139
0190 ; tmp = PGetChar();
0190 73DF xcall _PGetChar
0192 A02E mov R10,R16
0194 .dbline 140
0194 ; *C51_uart++ = tmp; /*接收地址*/
0194 E0910600 lds R30,L47
0198 F0910700 lds R31,L47+1
019C A192 st Z+,R10
019E F0930700 sts L47+1,R31
01A2 E0930600 sts L47,R30
01A6 .dbline 141
01A6 ; CRC16(&CRC,tmp); /*数据校验*/
01A6 2A2D mov R18,R10
01A8 00E0 ldi R16,<L45
01AA 10E0 ldi R17,>L45
01AC 0E940000 xcall _CRC16
01B0 .dbline 142
01B0 ; tmp = PGetChar();
01B0 63DF xcall _PGetChar
01B2 C02E mov R12,R16
01B4 AC2C mov R10,R12
01B6 .dbline 143
01B6 ; *C51_uart++ = tmp; /*接收包长度低位字节*/
01B6 E0910600 lds R30,L47
01BA F0910700 lds R31,L47+1
01BE A192 st Z+,R10
01C0 F0930700 sts L47+1,R31
01C4 E0930600 sts L47,R30
01C8 .dbline 144
01C8 ; CRC16(&CRC,tmp); /*数据校验*/
01C8 2A2D mov R18,R10
01CA 00E0 ldi R16,<L45
01CC 10E0 ldi R17,>L45
01CE 0E940000 xcall _CRC16
01D2 .dbline 145
01D2 ; tmp = PGetChar();
01D2 52DF xcall _PGetChar
01D4 C02E mov R12,R16
01D6 AC2C mov R10,R12
01D8 .dbline 146
01D8 ; *C51_uart++ = tmp; /*接收包长度高位字节*/
01D8 E0910600 lds R30,L47
01DC F0910700 lds R31,L47+1
01E0 A192 st Z+,R10
01E2 F0930700 sts L47+1,R31
01E6 E0930600 sts L47,R30
01EA .dbline 147
01EA ; CRC16(&CRC,tmp); /*数据校验*/
01EA 2A2D mov R18,R10
01EC 00E0 ldi R16,<L45
01EE 10E0 ldi R17,>L45
01F0 0E940000 xcall _CRC16
01F4 .dbline 148
01F4 ; C51_buf = (struct Device51_StructOfProtocol *)C51Buffer485;
01F4 40E0 ldi R20,<_C51Buffer485
01F6 50E0 ldi R21,>_C51Buffer485
01F8 .dbline 149
01F8 ; Count = C51_buf->Length;
01F8 FA01 movw R30,R20
01FA 2180 ldd R2,z+1
01FC 3280 ldd R3,z+2
01FE 30920500 sts L46+1,R3
0202 20920400 sts L46,R2
0206 .dbline 150
0206 ; if (Count && Count <= (256 - 8))
0206 6101 movw R12,R2
0208 2220 tst R2
020A 11F4 brne X17
020C 3320 tst R3
020E 09F1 breq L54
0210 X17:
0210 88EF ldi R24,248
0212 90E0 ldi R25,0
0214 8215 cp R24,R2
0216 9305 cpc R25,R3
0218 E0F0 brlo L54
021A X18:
021A .dbline 151
021A ; {
021A L56:
021A .dbline 152
021A ; do{
021A .dbline 153
021A ; *C51_uart++ = tmp; /*接收数据*/
021A E0910600 lds R30,L47
021E F0910700 lds R31,L47+1
0222 A192 st Z+,R10
0224 F0930700 sts L47+1,R31
0228 E0930600 sts L47,R30
022C .dbline 154
022C ; CRC16(&CRC,tmp); /*数据校验*/
022C 2A2D mov R18,R10
022E 00E0 ldi R16,<L45
0230 10E0 ldi R17,>L45
0232 0E940000 xcall _CRC16
0236 .dbline 155
0236 ; }while(Count--);
0236 L57:
0236 .dbline 155
0236 60910400 lds R22,L46
023A 70910500 lds R23,L46+1
023E CB01 movw R24,R22
0240 0197 sbiw R24,1
0242 90930500 sts L46+1,R25
0246 80930400 sts L46,R24
024A 6030 cpi R22,0
024C 6707 cpc R22,R23
024E 29F7 brne L56
0250 X19:
0250 .dbline 156
0250 ; }
0250 02C0 xjmp L55
0252 L54:
0252 .dbline 158
0252 ; else
0252 ; return 1;
0252 01E0 ldi R16,1
0254 1BC0 xjmp L44
0256 L55:
0256 .dbline 159
0256 ; CRC16(&CRC,PGetChar()); /*数据校验*/
0256 10DF xcall _PGetChar
0258 A02E mov R10,R16
025A 2A2D mov R18,R10
025C 00E0 ldi R16,<L45
025E 10E0 ldi R17,>L45
0260 0E940000 xcall _CRC16
0264 .dbline 160
0264 ; CRC16(&CRC,PGetChar()); /*数据校验*/
0264 09DF xcall _PGetChar
0266 A02E mov R10,R16
0268 2A2D mov R18,R10
026A 00E0 ldi R16,<L45
026C 10E0 ldi R17,>L45
026E 0E940000 xcall _CRC16
0272 .dbline 161
0272 ; C51_buf = (struct Device51_StructOfProtocol *)C51Buffer485;
0272 40E0 ldi R20,<_C51Buffer485
0274 50E0 ldi R21,>_C51Buffer485
0276 .dbline 162
0276 ; if (!CRC)
0276 20900200 lds R2,L45
027A 30900300 lds R3,L45+1
027E 2220 tst R2
0280 21F4 brne L59
0282 3320 tst R3
0284 11F4 brne L59
0286 X20:
0286 .dbline 164
0286 ; //接收完数据
0286 ; return 0;
0286 0027 clr R16
0288 01C0 xjmp L44
028A L59:
028A .dbline 166
028A ; else
028A ; return 1;
028A 01E0 ldi R16,1
028C .dbline -2
028C L44:
028C .dbline 0 ; func end
028C 0C940000 xjmp pop_xgsetF03C
0290 .dbsym l Device51 1 pS[Device51_Address]
0290 .dbsym r C51_buf 20 pS[Device51_StructOfProtocol]
0290 .dbsym r tmp 10 c
0290 .dbend
.area bss(ram, con, rel)
0008 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
0008 _F_TM::
0008 .blkb 1
0009 .dbsym e F_TM _F_TM c
0009 ; }
0009 ; //------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -