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

📄 mfrc500uc.lis

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 028A EC2D              mov R30,R12
 028C FF27              clr R31
 028E E80F              add R30,R24
 0290 F91F              adc R31,R25
 0292 2080              ldd R2,z+0
 0294 40900E01          lds R4,_MSndBuffer
 0298 50900F01          lds R5,_MSndBuffer+1
 029C EC2D              mov R30,R12
 029E FF27              clr R31
 02A0 E40D              add R30,R4
 02A2 F51D              adc R31,R5
 02A4 2282              std z+2,R2
 02A6                   .dbline 145
 02A6           L43:
 02A6                   .dbline 142
 02A6 C394              inc R12
 02A8           L45:
 02A8                   .dbline 142
 02A8 0884              ldd R0,y+8
 02AA C014              cp R12,R0
 02AC 60F3              brlo L42
 02AE                   .dbline 146
 02AE           ;          {
 02AE           ;             MSndBuffer[i + 2] = snr_in[i];
 02AE           ;          }
 02AE           ;          MInfo.nBytesToSend = 2 + nbytes;    
 02AE 802D              mov R24,R0
 02B0 8E5F              subi R24,254    ; addi 2
 02B2 80930601          sts _MInfo+4,R24
 02B6                   .dbline 147
 02B6           ;         status = PcdSingleResponseCmd(0x1e,
 02B6 80E0              ldi R24,<_MInfo
 02B8 90E0              ldi R25,>_MInfo
 02BA 9B83              std y+3,R25
 02BC 8A83              std y+2,R24
 02BE 20900C01          lds R2,_MRcvBuffer
 02C2 30900D01          lds R3,_MRcvBuffer+1
 02C6 3982              std y+1,R3
 02C8 2882              std y+0,R2
 02CA 20910E01          lds R18,_MSndBuffer
 02CE 30910F01          lds R19,_MSndBuffer+1
 02D2 0EE1              ldi R16,30
 02D4 F9D6              xcall _PcdSingleResponseCmd
 02D6 202E              mov R2,R16
 02D8 3324              clr R3
 02DA 3B86              std y+11,R3
 02DC 2A86              std y+10,R2
 02DE                   .dbline 151
 02DE           ;                             MSndBuffer,
 02DE           ;                             MRcvBuffer,
 02DE           ;                             &MInfo);
 02DE           ;        if (nbits == 7)
 02DE 8985              ldd R24,y+9
 02E0 8730              cpi R24,7
 02E2 09F0              breq X6
 02E4 41C0              xjmp L47
 02E6           X6:
 02E6                   .dbline 152
 02E6           ;          {
 02E6                   .dbline 153
 02E6           ;             dummyShift1 = 0x00;
 02E6 4427              clr R20
 02E8                   .dbline 154
 02E8           ;             for (i = 0; i < MInfo.nBytesReceived; i++)
 02E8 CC24              clr R12
 02EA 1FC0              xjmp L52
 02EC           L49:
 02EC                   .dbline 155
 02EC                   .dbline 156
 02EC 20900C01          lds R2,_MRcvBuffer
 02F0 30900D01          lds R3,_MRcvBuffer+1
 02F4 EC2D              mov R30,R12
 02F6 FF27              clr R31
 02F8 E20D              add R30,R2
 02FA F31D              adc R31,R3
 02FC E080              ldd R14,z+0
 02FE                   .dbline 157
 02FE 4C2C              mov R4,R12
 0300 5524              clr R5
 0302 420C              add R4,R2
 0304 531C              adc R5,R3
 0306 17E0              ldi R17,7
 0308 1C19              sub R17,R12
 030A F201              movw R30,R4
 030C 0081              ldd R16,z+0
 030E 0E940000          xcall lsl8
 0312 202E              mov R2,R16
 0314 1C2D              mov R17,R12
 0316 1F5F              subi R17,255    ; addi 1
 0318 042F              mov R16,R20
 031A 0E940000          xcall lsr8
 031E 302E              mov R3,R16
 0320 3228              or R3,R2
 0322 F201              movw R30,R4
 0324 3082              std z+0,R3
 0326                   .dbline 158
 0326 4E2D              mov R20,R14
 0328                   .dbline 159
 0328           L50:
 0328                   .dbline 154
 0328 C394              inc R12
 032A           L52:
 032A                   .dbline 154
 032A 20900701          lds R2,_MInfo+5
 032E C214              cp R12,R2
 0330 E8F2              brlo L49
 0332                   .dbline 160
 0332           ;             {
 0332           ;                 dummyShift2 = MRcvBuffer[i];
 0332           ;                 MRcvBuffer[i] = (dummyShift1 >> (i+1)) | (MRcvBuffer[i] << (7-i));
 0332           ;                 dummyShift1 = dummyShift2;
 0332           ;             }
 0332           ;             MInfo.nBitsReceived -= MInfo.nBytesReceived; // subtract received parity bits
 0332 3324              clr R3
 0334 40900801          lds R4,_MInfo+6
 0338 50900901          lds R5,_MInfo+6+1
 033C 4218              sub R4,R2
 033E 5308              sbc R5,R3
 0340 50920901          sts _MInfo+6+1,R5
 0344 40920801          sts _MInfo+6,R4
 0348                   .dbline 161
 0348           ;             if ( MInfo.collPos ) MInfo.collPos += 7 - (MInfo.collPos + 6) / 9;
 0348 20900B01          lds R2,_MInfo+9
 034C 2220              tst R2
 034E 61F0              breq L56
 0350                   .dbline 161
 0350 19E0              ldi R17,9
 0352 022D              mov R16,R2
 0354 0A5F              subi R16,250    ; addi 6
 0356 0E940000          xcall div8u
 035A 87E0              ldi R24,7
 035C 801B              sub R24,R16
 035E 20900B01          lds R2,_MInfo+9
 0362 280E              add R2,R24
 0364 20920B01          sts _MInfo+9,R2
 0368           L56:
 0368                   .dbline 162
 0368           ;          }
 0368           L47:
 0368                   .dbline 163
 0368           ;          if ( status == MI_OK || status == MI_COLLERR)    // no other occured
 0368 0A84              ldd R0,y+10
 036A 1B84              ldd R1,y+11
 036C 0020              tst R0
 036E 11F4              brne X2
 0370 1120              tst R1
 0372 39F0              breq L63
 0374           X2:
 0374 8A85              ldd R24,y+10
 0376 9B85              ldd R25,y+11
 0378 883E              cpi R24,232
 037A EFEF              ldi R30,255
 037C 9E07              cpc R25,R30
 037E 09F0              breq X7
 0380 78C0              xjmp L61
 0382           X7:
 0382           L63:
 0382                   .dbline 164
 0382           ;          {
 0382                   .dbline 165
 0382           ;              if ( MInfo.nBitsReceived != (40 - bcnt) ) // not 5 bytes answered
 0382 288C              ldd R2,y+24
 0384 3324              clr R3
 0386 88E2              ldi R24,40
 0388 90E0              ldi R25,0
 038A 8219              sub R24,R2
 038C 9309              sbc R25,R3
 038E 20900801          lds R2,_MInfo+6
 0392 30900901          lds R3,_MInfo+6+1
 0396 2816              cp R2,R24
 0398 3906              cpc R3,R25
 039A 29F0              breq L64
 039C                   .dbline 166
 039C           ;             {
 039C                   .dbline 167
 039C           ;                status = MI_BITCOUNTERR;
 039C 85EF              ldi R24,-11
 039E 9FEF              ldi R25,-1
 03A0 9B87              std y+11,R25
 03A2 8A87              std y+10,R24
 03A4                   .dbline 168
 03A4           ;             } 
 03A4 66C0              xjmp L65
 03A6           L64:
 03A6                   .dbline 170
 03A6           ;             else 
 03A6           ;             {
 03A6                   .dbline 171
 03A6           ;                byteOffset = 0;
 03A6 6627              clr R22
 03A8                   .dbline 172
 03A8           ;                if ( nbits != 0 )           // last byte was not complete
 03A8 0984              ldd R0,y+9
 03AA 0020              tst R0
 03AC A9F0              breq L67
 03AE                   .dbline 173
 03AE           ;                {
 03AE                   .dbline 174
 03AE           ;                   snr_in[nbytes - 1] = snr_in[nbytes - 1] | MRcvBuffer[0];
 03AE CE01              movw R24,R28
 03B0 0396              adiw R24,3
 03B2 E885              ldd R30,y+8
 03B4 FF27              clr R31
 03B6 E80F              add R30,R24
 03B8 F91F              adc R31,R25
 03BA 2080              ldd R2,z+0
 03BC E0910C01          lds R30,_MRcvBuffer
 03C0 F0910D01          lds R31,_MRcvBuffer+1
 03C4 3080              ldd R3,z+0
 03C6 2328              or R2,R3
 03C8 CE01              movw R24,R28
 03CA 0396              adiw R24,3
 03CC E885              ldd R30,y+8
 03CE FF27              clr R31
 03D0 E80F              add R30,R24
 03D2 F91F              adc R31,R25
 03D4 2082              std z+0,R2
 03D6                   .dbline 175
 03D6           ;                   byteOffset = 1;
 03D6 61E0              ldi R22,1
 03D8                   .dbline 176
 03D8           ;                }
 03D8           L67:
 03D8                   .dbline 177
 03D8           ;                for ( i =0; i < (4 - nbytes); i++)     
 03D8 CC24              clr R12
 03DA 19C0              xjmp L74
 03DC           L71:
 03DC                   .dbline 178
 03DC                   .dbline 179
 03DC 262E              mov R2,R22
 03DE 3324              clr R3
 03E0 EC2D              mov R30,R12
 03E2 FF27              clr R31
 03E4 E20D              add R30,R2
 03E6 F31D              adc R31,R3
 03E8 20900C01          lds R2,_MRcvBuffer
 03EC 30900D01          lds R3,_MRcvBuffer+1
 03F0 E20D              add R30,R2
 03F2 F31D              adc R31,R3
 03F4 2080              ldd R2,z+0
 03F6 3C2C              mov R3,R12
 03F8 4424              clr R4
 03FA E885              ldd R30,y+8
 03FC FF27              clr R31
 03FE E30D              add R30,R3
 0400 F41D              adc R31,R4
 0402 CE01              movw R24,R28
 0404 0496              adiw R24,4
 0406 E80F              add R30,R24
 0408 F91F              adc R31,R25
 040A 2082              std z+0,R2
 040C                   .dbline 180
 040C           L72:
 040C                   .dbline 177
 040C C394              inc R12
 040E           L74:
 040E                   .dbline 177
 040E 84E0              ldi R24,4
 0410 0884              ldd R0,y+8
 0412 8019              sub R24,R0
 0414 C816              cp R12,R24
 0416 10F3              brlo L71
 0418                   .dbline 181
 0418           ;                {
 0418           ;                   snr_in[nbytes + i] = MRcvBuffer[i + byteOffset];
 0418           ;                }
 0418           ;                if (status != MI_COLLERR ) // no error and no collision
 0418 8A85              ldd R24,y+10
 041A 9B85              ldd R25,y+11
 041C 883E              cpi R24,232
 041E EFEF              ldi R30,255
 0420 9E07              cpc R25,R30
 0422 E1F0              breq L75
 0424                   .dbline 182
 0424           ;                {
 0424                   .dbline 183
 0424           ;                   snr_crc = snr_in[0] ^ snr_in[1] ^ snr_in[2] ^ snr_in[3];
 0424 2D80              ldd R2,y+5
 0426 4C81              ldd R20,y+4
 0428 4225              eor R20,R2
 042A 2E80              ldd R2,y+6
 042C 4225              eor R20,R2
 042E 2F80              ldd R2,y+7
 0430 4225              eor R20,R2
 0432                   .dbline 184
 0432           ;                   snr_check = MRcvBuffer[MInfo.nBytesReceived - 1];
 0432 20900C01          lds R2,_MRcvBuffer
 0436 30900D01          lds R3,_MRcvBuffer+1
 043A E0910701          lds R30,_MInfo+5
 043E FF27              clr R31
 0440 3197              sbiw R30,1
 0442 E20D              add R30,R2
 0444 F31D              adc R31,R3
 0446 E080              ldd R14,z+0
 0448                   .dbline 185
 0448           ;                   if (snr_crc != snr_check)
 0448 4E15              cp R20,R14
 044A 29F0              breq L81
 044C                   .dbline 186
 044C           ;                   {
 044C                   .dbline 187
 044C           ;                      status = MI_SERNRERR;
 044C 88EF              ldi R24,-8
 044E 9FEF              ldi R25,-1
 0450 9B87              std y+11,R25
 0452 8A87              std y+10,R24
 0454                   .dbline 188
 0454           ;                   } 
 0454 0EC0              xjmp L76
 0456           L81:
 0456                   .dbline 190
 0456           ;                   else   
 0456           ;                   {
 0456                   .dbline 191
 0456           ;                      complete = 1;
 0456 AA24              clr R10
 0458 A394              inc R10
 045A                   .dbline 192
 045A           ;                   }
 045A                   .dbline 193

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -