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

📄 atmega16l_uart.lis

📁 电梯楼层采集器代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -