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

📄 mock_uart.lis

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