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

📄 16mcan.lst

📁 can tongxunCAN128的底层驱动
💻 LST
📖 第 1 页 / 共 3 页
字号:
    03AD 940E051C  CALL	lsl16
    03AF 0178      MOVW	R14,R16
(0248) 	  RCF=(RC_CANSI&tempp);
    03B0 01FE      MOVW	R30,R28
    03B1 53E0      SUBI	R30,0x30
    03B2 4FFF      SBCI	R31,0xFF
    03B3 80A0      LDD	R10,Z+0
    03B4 80B1      LDD	R11,Z+1
    03B5 22A0      AND	R10,R16
    03B6 22B1      AND	R11,R17
(0249) 	  if(RCF!=0)
    03B7 20AA      TST	R10
    03B8 F411      BNE	0x03BB
    03B9 20BB      TST	R11
    03BA F0C1      BEQ	0x03D3
(0250) 	    {
(0251) 		 if(i==10)
    03BB 2D8C      MOV	R24,R12
    03BC 308A      CPI	R24,0xA
    03BD F409      BNE	0x03BF
(0252) 		   NOP();
    03BE 0000      NOP
(0253) 		 CAN_REMOb[tt]=i;
    03BF 01CE      MOVW	R24,R28
    03C0 548C      SUBI	R24,0x4C
    03C1 4F9F      SBCI	R25,0xFF
    03C2 01DE      MOVW	R26,R28
    03C3 53A1      SUBI	R26,0x31
    03C4 4FBF      SBCI	R27,0xFF
    03C5 91EC      LD	R30,0(X)
    03C6 27FF      CLR	R31
    03C7 0FE8      ADD	R30,R24
    03C8 1FF9      ADC	R31,R25
    03C9 82C0      STD	Z+0,R12
(0254) 		 tt++;
    03CA 01FE      MOVW	R30,R28
    03CB 53E1      SUBI	R30,0x31
    03CC 4FFF      SBCI	R31,0xFF
    03CD 8000      LDD	R0,Z+0
    03CE 9403      INC	R0
    03CF 01FE      MOVW	R30,R28
    03D0 53E1      SUBI	R30,0x31
    03D1 4FFF      SBCI	R31,0xFF
    03D2 8200      STD	Z+0,R0
    03D3 94C3      INC	R12
    03D4 2D8C      MOV	R24,R12
    03D5 308F      CPI	R24,0xF
    03D6 F290      BCS	0x03A9
(0255) 		 }
(0256) 	 }
(0257) 	  
(0258)    /* for(i=0;i<tt;i++)
(0259) 	{
(0260) 	 CANPAGE = (CAN_REMOb[i]<<4);
(0261) 	 CANSTMOB &= ~(1<<RXOK);
(0262) 	 for (nb_data = 0; nb_data <(CANCDMOB&DLC_MSK); nb_data++)  
(0263) 	  {
(0264) 	   msg[i].Data[nb_data]=CANMSG;
(0265) 	  }
(0266) 	   msg[i].ID = 0;
(0267)        msg[i].ID |= ((unsigned long) CANIDT1<<24);    //get identifier
(0268)        msg[i].ID |= ((unsigned long) CANIDT2<<16);
(0269)        msg[i].ID |= ((unsigned long) CANIDT3<<8);
(0270)        msg[i].ID |= (CANIDT4&0xF8);
(0271)        msg[i].ID >>= 3;
(0272) 	   CANCDMOB = (2<<CONMOB) | (1<<IDE);
(0273) 	 }*/
(0274) 	 
(0275) 	 for(i=0;i<tt;i++)
    03D7 24CC      CLR	R12
    03D8 C0C2      RJMP	0x049B
(0276) 	 {
(0277) 	 CANPAGE = (CAN_REMOb[i]<<4);
    03D9 01CE      MOVW	R24,R28
    03DA 548C      SUBI	R24,0x4C
    03DB 4F9F      SBCI	R25,0xFF
    03DC 2DEC      MOV	R30,R12
    03DD 27FF      CLR	R31
    03DE 0FE8      ADD	R30,R24
    03DF 1FF9      ADC	R31,R25
    03E0 8180      LDD	R24,Z+0
    03E1 708F      ANDI	R24,0xF
    03E2 9582      SWAP	R24
    03E3 938000ED  STS	0xED,R24
(0278) 	 CANSTMOB &= ~(1<<RXOK);
    03E5 918000EE  LDS	R24,0xEE
    03E7 7D8F      ANDI	R24,0xDF
    03E8 938000EE  STS	0xEE,R24
(0279) 	 for (nb_data = 0; nb_data <(CANCDMOB&DLC_MSK); nb_data++)  
    03EA 24AA      CLR	R10
    03EB C00F      RJMP	0x03FB
(0280) 	   {
(0281) 	    msg[i].Data[nb_data]=CANMSG;
    03EC E08C      LDI	R24,0xC
    03ED 9D8C      MUL	R24,R12
    03EE 0110      MOVW	R2,R0
    03EF 01CE      MOVW	R24,R28
    03F0 9604      ADIW	R24,4
    03F1 0E28      ADD	R2,R24
    03F2 1E39      ADC	R3,R25
    03F3 2DEA      MOV	R30,R10
    03F4 27FF      CLR	R31
    03F5 0DE2      ADD	R30,R2
    03F6 1DF3      ADC	R31,R3
    03F7 902000FA  LDS	R2,0xFA
    03F9 8220      STD	Z+0,R2
    03FA 94A3      INC	R10
    03FB 918000EF  LDS	R24,0xEF
    03FD 708F      ANDI	R24,0xF
    03FE 16A8      CP	R10,R24
    03FF F360      BCS	0x03EC
(0282) 	   }
(0283) 	   msg[i].ID = 0;
    0400 E08C      LDI	R24,0xC
    0401 9D8C      MUL	R24,R12
    0402 01F0      MOVW	R30,R0
    0403 01CE      MOVW	R24,R28
    0404 0FE8      ADD	R30,R24
    0405 1FF9      ADC	R31,R25
    0406 E040      LDI	R20,0
    0407 E050      LDI	R21,0
    0408 E060      LDI	R22,0
    0409 E070      LDI	R23,0
    040A 8340      STD	Z+0,R20
    040B 8351      STD	Z+1,R21
    040C 8362      STD	Z+2,R22
    040D 8373      STD	Z+3,R23
(0284)        msg[i].ID |= ((unsigned long) CANIDT1<<24);    //get identifier
    040E E08C      LDI	R24,0xC
    040F 9D8C      MUL	R24,R12
    0410 0110      MOVW	R2,R0
    0411 01CE      MOVW	R24,R28
    0412 0E28      ADD	R2,R24
    0413 1E39      ADC	R3,R25
    0414 E188      LDI	R24,0x18
    0415 E090      LDI	R25,0
    0416 910000F3  LDS	R16,0xF3
    0418 2711      CLR	R17
    0419 2722      CLR	R18
    041A 2733      CLR	R19
    041B 938A      ST	R24,-Y
    041C 940E0523  CALL	lsl32
    041E 01F1      MOVW	R30,R2
    041F 8040      LDD	R4,Z+0
    0420 8051      LDD	R5,Z+1
    0421 8062      LDD	R6,Z+2
    0422 8073      LDD	R7,Z+3
    0423 2A40      OR	R4,R16
    0424 2A51      OR	R5,R17
    0425 2A62      OR	R6,R18
    0426 2A73      OR	R7,R19
    0427 8240      STD	Z+0,R4
    0428 8251      STD	Z+1,R5
    0429 8262      STD	Z+2,R6
    042A 8273      STD	Z+3,R7
(0285)        msg[i].ID |= ((unsigned long) CANIDT2<<16);
    042B E08C      LDI	R24,0xC
    042C 9D8C      MUL	R24,R12
    042D 0110      MOVW	R2,R0
    042E 01CE      MOVW	R24,R28
    042F 0E28      ADD	R2,R24
    0430 1E39      ADC	R3,R25
    0431 904000F2  LDS	R4,0xF2
    0433 2455      CLR	R5
    0434 2466      CLR	R6
    0435 2477      CLR	R7
    0436 0132      MOVW	R6,R4
    0437 2444      CLR	R4
    0438 2455      CLR	R5
    0439 01F1      MOVW	R30,R2
    043A 8140      LDD	R20,Z+0
    043B 8151      LDD	R21,Z+1
    043C 8162      LDD	R22,Z+2
    043D 8173      LDD	R23,Z+3
    043E 2944      OR	R20,R4
    043F 2955      OR	R21,R5
    0440 2966      OR	R22,R6
    0441 2977      OR	R23,R7
    0442 8340      STD	Z+0,R20
    0443 8351      STD	Z+1,R21
    0444 8362      STD	Z+2,R22
    0445 8373      STD	Z+3,R23
(0286)        msg[i].ID |= ((unsigned long) CANIDT3<<8);
    0446 E08C      LDI	R24,0xC
    0447 9D8C      MUL	R24,R12
    0448 0110      MOVW	R2,R0
    0449 01CE      MOVW	R24,R28
    044A 0E28      ADD	R2,R24
    044B 1E39      ADC	R3,R25
    044C E088      LDI	R24,0x8
    044D E090      LDI	R25,0
    044E 910000F1  LDS	R16,0xF1
    0450 2711      CLR	R17
    0451 2722      CLR	R18
    0452 2733      CLR	R19
    0453 938A      ST	R24,-Y
    0454 940E0523  CALL	lsl32
    0456 01F1      MOVW	R30,R2
    0457 8040      LDD	R4,Z+0
    0458 8051      LDD	R5,Z+1
    0459 8062      LDD	R6,Z+2
    045A 8073      LDD	R7,Z+3
    045B 2A40      OR	R4,R16
    045C 2A51      OR	R5,R17
    045D 2A62      OR	R6,R18
    045E 2A73      OR	R7,R19
    045F 8240      STD	Z+0,R4
    0460 8251      STD	Z+1,R5
    0461 8262      STD	Z+2,R6
    0462 8273      STD	Z+3,R7
(0287)        msg[i].ID |= (CANIDT4&0xF8);
    0463 E08C      LDI	R24,0xC
    0464 9D8C      MUL	R24,R12
    0465 0110      MOVW	R2,R0
    0466 01CE      MOVW	R24,R28
    0467 0E28      ADD	R2,R24
    0468 1E39      ADC	R3,R25
    0469 918000F0  LDS	R24,0xF0
    046B 2799      CLR	R25
    046C 7F88      ANDI	R24,0xF8
    046D 7090      ANDI	R25,0
    046E 012C      MOVW	R4,R24
    046F 2466      CLR	R6
    0470 FC57      SBRC	R5,7
    0471 9460      COM	R6
    0472 2477      CLR	R7
    0473 FC67      SBRC	R6,7
    0474 9470      COM	R7
    0475 01F1      MOVW	R30,R2
    0476 8140      LDD	R20,Z+0
    0477 8151      LDD	R21,Z+1
    0478 8162      LDD	R22,Z+2
    0479 8173      LDD	R23,Z+3
    047A 2944      OR	R20,R4
    047B 2955      OR	R21,R5
    047C 2966      OR	R22,R6
    047D 2977      OR	R23,R7
    047E 8340      STD	Z+0,R20
    047F 8351      STD	Z+1,R21
    0480 8362      STD	Z+2,R22
    0481 8373      STD	Z+3,R23
(0288)        msg[i].ID >>= 3;
    0482 E08C      LDI	R24,0xC
    0483 9D8C      MUL	R24,R12
    0484 0110      MOVW	R2,R0
    0485 01CE      MOVW	R24,R28
    0486 0E28      ADD	R2,R24
    0487 1E39      ADC	R3,R25
    0488 E083      LDI	R24,3
    0489 E090      LDI	R25,0
    048A 01F1      MOVW	R30,R2
    048B 8100      LDD	R16,Z+0
    048C 8111      LDD	R17,Z+1
    048D 8122      LDD	R18,Z+2
    048E 8133      LDD	R19,Z+3
    048F 938A      ST	R24,-Y
    0490 940E04BA  CALL	asr32
    0492 01F1      MOVW	R30,R2
    0493 8300      STD	Z+0,R16
    0494 8311      STD	Z+1,R17
    0495 8322      STD	Z+2,R18
    0496 8333      STD	Z+3,R19
(0289) 	   CANCDMOB = (2<<CONMOB) | (1<<IDE);
    0497 E980      LDI	R24,0x90
    0498 938000EF  STS	0xEF,R24
    049A 94C3      INC	R12
    049B 01FE      MOVW	R30,R28
    049C 53E1      SUBI	R30,0x31
    049D 4FFF      SBCI	R31,0xFF
    049E 8000      LDD	R0,Z+0
    049F 14C0      CP	R12,R0
    04A0 F408      BCC	0x04A2
    04A1 CF37      RJMP	0x03D9
(0290) 	 }
(0291) 	 
(0292) 	 for(nn=0;nn<tt;nn++)
    04A2 24EE      CLR	R14
    04A3 C001      RJMP	0x04A5
    04A4 94E3      INC	R14
    04A5 01FE      MOVW	R30,R28
    04A6 53E1      SUBI	R30,0x31
    04A7 4FFF      SBCI	R31,0xFF
    04A8 8000      LDD	R0,Z+0
    04A9 14E0      CP	R14,R0
    04AA F3C8      BCS	0x04A4
(0293) 	 {
(0294) /*****************************************************
(0295) *          用户程序
(0296) *      举例: msg[nn].ID 是ID 号
(0297)              msg[nn].date[0]~msg[nn].date[8] 是数据
(0298) ********************************************************/
(0299) 	 } 
(0300)    }
(0301)    CANPAGE = temp;                 //restore CANPAGE
FILE: <library>
    04AB 01FE      MOVW	R30,R28
    04AC 52EE      SUBI	R30,0x2E
    04AD 4FFF      SBCI	R31,0xFF
    04AE 8000      LDD	R0,Z+0
    04AF 920000ED  STS	0xED,R0
    04B1 96EF      ADIW	R28,0x3F
    04B2 96EF      ADIW	R28,0x3F
    04B3 96EF      ADIW	R28,0x3F
    04B4 9666      ADIW	R28,0x16
    04B5 940E04CC  CALL	pop_gset5
    04B7 940E0505  CALL	pop_lset
    04B9 9518      RETI
asr32:
    04BA 920F      PUSH	R0
    04BB 9009      LD	R0,Y+
    04BC 2000      TST	R0
    04BD F031      BEQ	0x04C4
    04BE 9535      ASR	R19
    04BF 9527      ROR	R18
    04C0 9517      ROR	R17
    04C1 9507      ROR	R16
    04C2 940A      DEC	R0
    04C3 CFF8      RJMP	0x04BC
    04C4 900F      POP	R0
    04C5 9508      RET
pop_gset3:
    04C6 E0E4      LDI	R30,4
    04C7 940C04DB  JMP	pop
pop_gset4:
    04C9 E0E8      LDI	R30,0x8
    04CA 940C04DB  JMP	pop
pop_gset5:
    04CC 27EE      CLR	R30
    04CD 940C04DB  JMP	pop
push_gset5:
    04CF 92FA      ST	R15,-Y
    04D0 92EA      ST	R14,-Y
push_gset4:
    04D1 92DA      ST	R13,-Y
    04D2 92CA      ST	R12,-Y
push_gset3:
    04D3 92BA      ST	R11,-Y
    04D4 92AA      ST	R10,-Y
push_gset2:
    04D5 937A      ST	R23,-Y
    04D6 936A      ST	R22,-Y
push_gset1:
    04D7 935A      ST	R21,-Y
    04D8 934A      ST	R20,-Y
    04D9 9508      RET
pop_gset1:
    04DA E0E1      LDI	R30,1
pop:
    04DB 9149      LD	R20,Y+
    04DC 9159      LD	R21,Y+
    04DD FDE0      SBRC	R30,0
    04DE 9508      RET
    04DF 9169      LD	R22,Y+
    04E0 9179      LD	R23,Y+
    04E1 FDE1      SBRC	R30,1
    04E2 9508      RET
    04E3 90A9      LD	R10,Y+
    04E4 90B9      LD	R11,Y+
    04E5 FDE2      SBRC	R30,2
    04E6 9508      RET
    04E7 90C9      LD	R12,Y+
    04E8 90D9      LD	R13,Y+
    04E9 FDE3      SBRC	R30,3
    04EA 9508      RET
    04EB 90E9      LD	R14,Y+
    04EC 90F9      LD	R15,Y+
    04ED 9508      RET
push_lset:
    04EE 93FA      ST	R31,-Y
    04EF 93EA      ST	R30,-Y
    04F0 93BA      ST	R27,-Y
    04F1 93AA      ST	R26,-Y
    04F2 939A      ST	R25,-Y
    04F3 938A      ST	R24,-Y
    04F4 933A      ST	R19,-Y
    04F5 932A      ST	R18,-Y
    04F6 931A      ST	R17,-Y
    04F7 930A      ST	R16,-Y
    04F8 929A      ST	R9,-Y
    04F9 928A      ST	R8,-Y
    04FA 927A      ST	R7,-Y
    04FB 926A      ST	R6,-Y
    04FC 925A      ST	R5,-Y
    04FD 924A      ST	R4,-Y
    04FE 923A      ST	R3,-Y
    04FF 922A      ST	R2,-Y
    0500 921A      ST	R1,-Y
    0501 920A      ST	R0,-Y
    0502 B60F      IN	R0,0x3F
    0503 920A      ST	R0,-Y
    0504 9508      RET
pop_lset:
    0505 9009      LD	R0,Y+
    0506 BE0F      OUT	0x3F,R0
    0507 9009      LD	R0,Y+
    0508 9019      LD	R1,Y+
    0509 9029      LD	R2,Y+
    050A 9039      LD	R3,Y+
    050B 9049      LD	R4,Y+
    050C 9059      LD	R5,Y+
    050D 9069      LD	R6,Y+
    050E 9079      LD	R7,Y+
    050F 9089      LD	R8,Y+
    0510 9099      LD	R9,Y+
    0511 9109      LD	R16,Y+
    0512 9119      LD	R17,Y+
    0513 9129      LD	R18,Y+
    0514 9139      LD	R19,Y+
    0515 9189      LD	R24,Y+
    0516 9199      LD	R25,Y+
    0517 91A9      LD	R26,Y+
    0518 91B9      LD	R27,Y+
    0519 91E9      LD	R30,Y+
    051A 91F9      LD	R31,Y+
    051B 9508      RET
lsl16:
    051C 2322      TST	R18
    051D F021      BEQ	0x0522
    051E 0F00      LSL	R16
    051F 1F11      ROL	R17
    0520 952A      DEC	R18
    0521 CFFA      RJMP	lsl16
    0522 9508      RET
lsl32:
    0523 920F      PUSH	R0
    0524 9009      LD	R0,Y+
    0525 2000      TST	R0
    0526 F031      BEQ	0x052D
    0527 0F00      LSL	R16
    0528 1F11      ROL	R17
    0529 1F22      ROL	R18
    052A 1F33      ROL	R19
    052B 940A      DEC	R0
    052C CFF8      RJMP	0x0525
    052D 900F      POP	R0
    052E 9508      RET
asgnblk:
    052F 93AA      ST	R26,-Y
    0530 93BA      ST	R27,-Y
    0531 93EA      ST	R30,-Y
    0532 93FA      ST	R31,-Y
    0533 920A      ST	R0,-Y
    0534 81AF      LDD	R26,Y+7
    0535 85B8      LDD	R27,Y+8
    0536 81ED      LDD	R30,Y+5
    0537 81FE      LDD	R31,Y+6
    0538 3000      CPI	R16,0
    0539 0701      CPC	R16,R17
    053A F029      BEQ	0x0540
    053B 9001      LD	R0,Z+
    053C 920D      ST	R0,X+
    053D 5001      SUBI	R16,1
    053E 4010      SBCI	R17,0
    053F CFF8      RJMP	0x0538
    0540 9009      LD	R0,Y+
    0541 91F9      LD	R31,Y+
    0542 91E9      LD	R30,Y+
    0543 91B9      LD	R27,Y+
    0544 91A9      LD	R26,Y+
    0545 9624      ADIW	R28,4
    0546 9508      RET

⌨️ 快捷键说明

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