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

📄 mfrc50~1.lis

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

⌨️ 快捷键说明

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