📄 atmega16l_uart.lis
字号:
015E L21:
015E .dbline 345
015E ; case 3: /*地址码接收*/
015E ; *p_uart++ = tmp; /*接收地址*/
015E E0910500 lds R30,L8
0162 F0910600 lds R31,L8+1
0166 6193 st Z+,R22
0168 F0930600 sts L8+1,R31
016C E0930500 sts L8,R30
0170 .dbline 346
0170 ; CRC16(&CRC,tmp); /*数据校验*/
0170 262F mov R18,R22
0172 00E0 ldi R16,<L6
0174 10E0 ldi R17,>L6
0176 44DF xcall _CRC16
0178 .dbline 347
0178 ; Status++;
0178 80910000 lds R24,L5
017C 8F5F subi R24,255 ; addi 1
017E 80930000 sts L5,R24
0182 .dbline 348
0182 ; break;
0182 88C0 xjmp L10
0184 L22:
0184 .dbline 350
0184 ; case 4: /*包长度高位字节接收*/
0184 ; *p_uart++ = tmp; /*接收包长度低位字节*/
0184 E0910500 lds R30,L8
0188 F0910600 lds R31,L8+1
018C 6193 st Z+,R22
018E F0930600 sts L8+1,R31
0192 E0930500 sts L8,R30
0196 .dbline 351
0196 ; CRC16(&CRC,tmp); /*数据校验*/
0196 262F mov R18,R22
0198 00E0 ldi R16,<L6
019A 10E0 ldi R17,>L6
019C 31DF xcall _CRC16
019E .dbline 352
019E ; Status++;
019E 80910000 lds R24,L5
01A2 8F5F subi R24,255 ; addi 1
01A4 80930000 sts L5,R24
01A8 .dbline 353
01A8 ; break;
01A8 75C0 xjmp L10
01AA L23:
01AA .dbline 355
01AA ; case 5: /*包长度低位字节接收*/
01AA ; *p_uart++ = tmp; /*接收包长度高位字节*/
01AA E0910500 lds R30,L8
01AE F0910600 lds R31,L8+1
01B2 6193 st Z+,R22
01B4 F0930600 sts L8+1,R31
01B8 E0930500 sts L8,R30
01BC .dbline 356
01BC ; CRC16(&CRC,tmp); /*数据校验*/
01BC 262F mov R18,R22
01BE 00E0 ldi R16,<L6
01C0 10E0 ldi R17,>L6
01C2 1EDF xcall _CRC16
01C4 .dbline 357
01C4 ; p_buf = (struct StructOfProtocol *)Buffer485;
01C4 40E0 ldi R20,<_Buffer485
01C6 50E0 ldi R21,>_Buffer485
01C8 .dbline 358
01C8 ; Count = p_buf->Length;
01C8 FA01 movw R30,R20
01CA 2180 ldd R2,z+1
01CC 3280 ldd R3,z+2
01CE 30920400 sts L7+1,R3
01D2 20920300 sts L7,R2
01D6 .dbline 359
01D6 ; if (Count && Count <= (256 - 8)) Status++; /*包长度检查*/
01D6 2220 tst R2
01D8 11F4 brne X12
01DA 3320 tst R3
01DC 59F0 breq L24
01DE X12:
01DE 88EF ldi R24,248
01E0 90E0 ldi R25,0
01E2 8215 cp R24,R2
01E4 9305 cpc R25,R3
01E6 30F0 brlo L24
01E8 X13:
01E8 .dbline 359
01E8 80910000 lds R24,L5
01EC 8F5F subi R24,255 ; addi 1
01EE 80930000 sts L5,R24
01F2 50C0 xjmp L10
01F4 L24:
01F4 .dbline 360
01F4 ; else Status = 0; /*包长度异常 - 状态返回*/
01F4 2224 clr R2
01F6 20920000 sts L5,R2
01FA .dbline 361
01FA ; break;
01FA 4CC0 xjmp L10
01FC L26:
01FC .dbline 363
01FC ; case 6: /*数据包接收*/
01FC ; *p_uart++ = tmp; /*接收数据*/
01FC E0910500 lds R30,L8
0200 F0910600 lds R31,L8+1
0204 6193 st Z+,R22
0206 F0930600 sts L8+1,R31
020A E0930500 sts L8,R30
020E .dbline 364
020E ; CRC16(&CRC,tmp); /*数据校验*/
020E 262F mov R18,R22
0210 00E0 ldi R16,<L6
0212 10E0 ldi R17,>L6
0214 F5DE xcall _CRC16
0216 .dbline 365
0216 ; if (--Count == 0) Status++; /*数据包发送完毕?*/
0216 80910300 lds R24,L7
021A 90910400 lds R25,L7+1
021E 0197 sbiw R24,1
0220 6C01 movw R12,R24
0222 D0920400 sts L7+1,R13
0226 C0920300 sts L7,R12
022A 8030 cpi R24,0
022C 8907 cpc R24,R25
022E 09F0 breq X26
0230 31C0 xjmp L10
0232 X26:
0232 X14:
0232 .dbline 365
0232 80910000 lds R24,L5
0236 8F5F subi R24,255 ; addi 1
0238 80930000 sts L5,R24
023C .dbline 366
023C ; break;
023C 2BC0 xjmp L10
023E L29:
023E .dbline 368
023E ; case 7: /*高位校验码接收*/
023E ; CRC16(&CRC,tmp); /*数据校验*/
023E 262F mov R18,R22
0240 00E0 ldi R16,<L6
0242 10E0 ldi R17,>L6
0244 DDDE xcall _CRC16
0246 .dbline 369
0246 ; Status++;
0246 80910000 lds R24,L5
024A 8F5F subi R24,255 ; addi 1
024C 80930000 sts L5,R24
0250 .dbline 370
0250 ; break;
0250 21C0 xjmp L10
0252 L30:
0252 .dbline 372
0252 ; case 8: /*低位校验码接收*/
0252 ; CRC16(&CRC,tmp); /*数据校验*/
0252 262F mov R18,R22
0254 00E0 ldi R16,<L6
0256 10E0 ldi R17,>L6
0258 D3DE xcall _CRC16
025A .dbline 373
025A ; p_buf = (struct StructOfProtocol *)Buffer485;
025A 40E0 ldi R20,<_Buffer485
025C 50E0 ldi R21,>_Buffer485
025E .dbline 374
025E ; if (!CRC && (p_buf->Address == Device_Address || p_buf->Address == 0xff))
025E 20900100 lds R2,L6
0262 30900200 lds R3,L6+1
0266 2220 tst R2
0268 71F4 brne L31
026A 3320 tst R3
026C 61F4 brne L31
026E X15:
026E FA01 movw R30,R20
0270 4081 ldd R20,z+0
0272 5527 clr R21
0274 20900000 lds R2,_Device_Address
0278 4215 cp R20,R2
027A 11F0 breq L33
027C X16:
027C 4F3F cpi R20,255
027E 19F4 brne L31
0280 X17:
0280 L33:
0280 .dbline 375
0280 ; {//接收完数据
0280 .dbline 376
0280 ; communication->pc_rxd = 1;
0280 81E0 ldi R24,1
0282 F501 movw R30,R10
0284 8083 std z+0,R24
0286 .dbline 377
0286 ; }
0286 L31:
0286 .dbline 378
0286 ; Status = 0;
0286 2224 clr R2
0288 20920000 sts L5,R2
028C .dbline 379
028C ; break;
028C 03C0 xjmp L10
028E L9:
028E .dbline 381
028E ; default:
028E ; Status = 0;
028E 2224 clr R2
0290 20920000 sts L5,R2
0294 .dbline 382
0294 ; break;
0294 L10:
0294 .dbline -2
0294 L4:
0294 .dbline 0 ; func end
0294 0E940000 xcall pop_xgsetF03C
0298 0990 ld R0,y+
029A 0FBE out 0x3f,R0
029C F991 ld R31,y+
029E E991 ld R30,y+
02A0 B991 ld R27,y+
02A2 A991 ld R26,y+
02A4 9991 ld R25,y+
02A6 8991 ld R24,y+
02A8 3991 ld R19,y+
02AA 2991 ld R18,y+
02AC 1991 ld R17,y+
02AE 0991 ld R16,y+
02B0 9990 ld R9,y+
02B2 8990 ld R8,y+
02B4 7990 ld R7,y+
02B6 6990 ld R6,y+
02B8 5990 ld R5,y+
02BA 4990 ld R4,y+
02BC 3990 ld R3,y+
02BE 2990 ld R2,y+
02C0 1990 ld R1,y+
02C2 0990 ld R0,y+
02C4 1895 reti
02C6 .dbsym r communication 10 pS[data]
02C6 .dbsym r p_buf 20 pS[StructOfProtocol]
02C6 .dbsym r tmp 22 c
02C6 .dbend
.area vector(rom, abs)
.org 52
0034 0C946301 jmp _Uart0_tx_isr
.area text(rom, con, rel)
02C6 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\ATmega16L_Uart.C
.area bss(ram, con, rel)
0007 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\ATmega16L_Uart.C
0007 L35:
0007 .blkb 1
0008 L36:
0008 .blkb 2
000A L37:
000A .blkb 2
000C L38:
000C .blkb 2
.area text(rom, con, rel)
02C6 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\ATmega16L_Uart.C
02C6 .dbfunc e Uart0_tx_isr _Uart0_tx_isr fV
02C6 .dbsym s p_uart L38 pc
02C6 .dbsym s Count L37 i
02C6 .dbsym s CRC L36 i
02C6 .dbsym s Status L35 c
02C6 ; p_buf -> R20,R21
02C6 ; tmp -> R10
.even
02C6 _Uart0_tx_isr::
02C6 0A92 st -y,R0
02C8 1A92 st -y,R1
02CA 2A92 st -y,R2
02CC 3A92 st -y,R3
02CE 4A92 st -y,R4
02D0 5A92 st -y,R5
02D2 6A92 st -y,R6
02D4 7A92 st -y,R7
02D6 8A92 st -y,R8
02D8 9A92 st -y,R9
02DA 0A93 st -y,R16
02DC 1A93 st -y,R17
02DE 2A93 st -y,R18
02E0 3A93 st -y,R19
02E2 8A93 st -y,R24
02E4 9A93 st -y,R25
02E6 AA93 st -y,R26
02E8 BA93 st -y,R27
02EA EA93 st -y,R30
02EC FA93 st -y,R31
02EE 0FB6 in R0,0x3f
02F0 0A92 st -y,R0
02F2 0E940000 xcall push_xgset300C
02F6 .dbline -1
02F6 .dbline 389
02F6 ; }
02F6 ; }
02F6 ; //------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -