📄 128can.lst
字号:
04E3 E091 LDI R25,1
04E4 0FE8 ADD R30,R24
04E5 1FF9 ADC R31,R25
04E6 0115 MOVW R2,R10
04E7 2C23 MOV R2,R3
04E8 2433 CLR R3
04E9 8220 STD Z+0,R2
(0058) Pass_Flag = Pass_Flag + 1;
04EA 918001F5 LDS R24,Pass_Flag
04EC 5F8F SUBI R24,0xFF
04ED 938001F5 STS Pass_Flag,R24
(0059) NOP();
04EF 0000 NOP
04F0 9543 INC R20
04F1 3046 CPI R20,6
04F2 F408 BCC 0x04F4
04F3 CFB5 RJMP 0x04A9
(0060) }
(0061) if(Pass_Flag!=0x06)
04F4 918001F5 LDS R24,Pass_Flag
04F6 3086 CPI R24,6
04F7 F011 BEQ 0x04FA
(0062) RESET;
04F8 940C0000 JMP 0x0
(0063) WDR();
04FA 95A8 WDR
(0064)
(0065) Pass_Flag = 0x00;
04FB 2422 CLR R2
04FC 922001F5 STS Pass_Flag,R2
(0066) for(i=0;i<6;i++)
04FE 2744 CLR R20
04FF C048 RJMP 0x0548
(0067) {
(0068) temp=CANMOBMD[i]<<3;
0500 E084 LDI R24,4
0501 9F84 MUL R24,R20
0502 01F0 MOVW R30,R0
0503 E38C LDI R24,0x3C
0504 E091 LDI R25,1
0505 0FE8 ADD R30,R24
0506 1FF9 ADC R31,R25
0507 8100 LDD R16,Z+0
0508 8111 LDD R17,Z+1
0509 8122 LDD R18,Z+2
050A 8133 LDD R19,Z+3
050B E083 LDI R24,3
050C E090 LDI R25,0
050D 938A ST R24,-Y
050E 940E0C57 CALL lsl32
0510 8308 STD Y+0,R16
0511 8319 STD Y+1,R17
0512 832A STD Y+2,R18
0513 833B STD Y+3,R19
(0069) temp1=(unsigned int)temp; //低16位
0514 8168 LDD R22,Y+0
0515 8179 LDD R23,Y+1
(0070) temp2=(unsigned int)(temp/0x00010000); //高16位
0516 8028 LDD R2,Y+0
0517 8039 LDD R3,Y+1
0518 804A LDD R4,Y+2
0519 805B LDD R5,Y+3
051A 0152 MOVW R10,R4
(0071) CANIDM[i][3]=(Uchar)temp1;
051B E084 LDI R24,4
051C 9F84 MUL R24,R20
051D 01F0 MOVW R30,R0
051E EB87 LDI R24,0xB7
051F E091 LDI R25,1
0520 0FE8 ADD R30,R24
0521 1FF9 ADC R31,R25
0522 8360 STD Z+0,R22
(0072) CANIDM[i][2]=(Uchar)(temp1>>8);
0523 E084 LDI R24,4
0524 9F84 MUL R24,R20
0525 01F0 MOVW R30,R0
0526 EB86 LDI R24,0xB6
0527 E091 LDI R25,1
0528 0FE8 ADD R30,R24
0529 1FF9 ADC R31,R25
052A 011B MOVW R2,R22
052B 2C23 MOV R2,R3
052C 2433 CLR R3
052D 8220 STD Z+0,R2
(0073) CANIDM[i][1]=(Uchar)temp2;
052E E084 LDI R24,4
052F 9F84 MUL R24,R20
0530 01F0 MOVW R30,R0
0531 EB85 LDI R24,0xB5
0532 E091 LDI R25,1
0533 0FE8 ADD R30,R24
0534 1FF9 ADC R31,R25
0535 82A0 STD Z+0,R10
(0074) CANIDM[i][0]=(Uchar)(temp2>>8);
0536 E084 LDI R24,4
0537 9F84 MUL R24,R20
0538 01F0 MOVW R30,R0
0539 EB84 LDI R24,0xB4
053A E091 LDI R25,1
053B 0FE8 ADD R30,R24
053C 1FF9 ADC R31,R25
053D 0115 MOVW R2,R10
053E 2C23 MOV R2,R3
053F 2433 CLR R3
0540 8220 STD Z+0,R2
(0075) Pass_Flag = Pass_Flag + 1;
0541 918001F5 LDS R24,Pass_Flag
0543 5F8F SUBI R24,0xFF
0544 938001F5 STS Pass_Flag,R24
(0076) NOP();
0546 0000 NOP
0547 9543 INC R20
0548 3046 CPI R20,6
0549 F408 BCC 0x054B
054A CFB5 RJMP 0x0500
(0077) }
(0078) if(Pass_Flag!=0x06)
054B 918001F5 LDS R24,Pass_Flag
054D 3086 CPI R24,6
054E F011 BEQ 0x0551
(0079) RESET;
054F 940C0000 JMP 0x0
(0080) //reset all MObs
(0081)
(0082) Pass_Flag = 0x00;
0551 2422 CLR R2
0552 922001F5 STS Pass_Flag,R2
(0083) for (i=0; i<15; i++)
0554 2744 CLR R20
0555 C028 RJMP 0x057E
(0084) {
(0085) CANPAGE = (i<<4); //select MOb
0556 2F84 MOV R24,R20
0557 708F ANDI R24,0xF
0558 9582 SWAP R24
0559 938000ED STS 0xED,R24
(0086) CANCDMOB = 0; //disable MOb
055B 2422 CLR R2
055C 922000EF STS 0xEF,R2
(0087) CANSTMOB = 0; //clear status
055E 922000EE STS 0xEE,R2
(0088) CANIDT1 = 0; //clear ID
0560 922000F3 STS 0xF3,R2
(0089) CANIDT2 = 0;
0562 922000F2 STS 0xF2,R2
(0090) CANIDT3 = 0;
0564 922000F1 STS 0xF1,R2
(0091) CANIDT4 = 0;
0566 922000F0 STS 0xF0,R2
(0092) CANIDM1 = 0; //clear mask
0568 922000F7 STS 0xF7,R2
(0093) CANIDM2 = 0;
056A 922000F6 STS 0xF6,R2
(0094) CANIDM3 = 0;
056C 922000F5 STS 0xF5,R2
(0095) CANIDM4 = 0;
056E 922000F4 STS 0xF4,R2
(0096) for (j=0; j<8; j++)
0570 2766 CLR R22
0571 C004 RJMP 0x0576
(0097) CANMSG = 0; //clear data
0572 2422 CLR R2
0573 922000FA STS 0xFA,R2
0575 9563 INC R22
0576 3068 CPI R22,0x8
0577 F3D0 BCS 0x0572
(0098)
(0099) Pass_Flag = Pass_Flag + 1;
0578 918001F5 LDS R24,Pass_Flag
057A 5F8F SUBI R24,0xFF
057B 938001F5 STS Pass_Flag,R24
057D 9543 INC R20
057E 304F CPI R20,0xF
057F F2B0 BCS 0x0556
(0100) }
(0101) if(Pass_Flag!=0x0f)
0580 918001F5 LDS R24,Pass_Flag
0582 308F CPI R24,0xF
0583 F011 BEQ 0x0586
(0102) RESET;
0584 940C0000 JMP 0x0
(0103)
(0104) WDR();
0586 95A8 WDR
(0105) CANBT1 = CanBaud[2][0];
0587 E9EA LDI R30,0x9A
0588 E0F0 LDI R31,0
0589 91E4 LPM R30,0(Z)
058A 93E000E2 STS 0xE2,R30
(0106) CANBT2 = CanBaud[2][1];
058C E9EB LDI R30,0x9B
058D E0F0 LDI R31,0
058E 91E4 LPM R30,0(Z)
058F 93E000E3 STS 0xE3,R30
(0107) CANBT3 = CanBaud[2][2];
0591 E9EC LDI R30,0x9C
0592 E0F0 LDI R31,0
0593 91E4 LPM R30,0(Z)
0594 93E000E4 STS 0xE4,R30
(0108)
(0109) //configure MObi
(0110) /******************************************************************/
(0111)
(0112) Pass_Flag = 0x00;
0596 2422 CLR R2
0597 922001F5 STS Pass_Flag,R2
(0113) for (i=0; i<3; i++)
0599 2744 CLR R20
059A C05F RJMP 0x05FA
(0114) {
(0115) CANPAGE = (i<<4); //MOb 0,1,2设置为发送模式
059B 2F84 MOV R24,R20
059C 708F ANDI R24,0xF
059D 9582 SWAP R24
059E 938000ED STS 0xED,R24
(0116) CANIDT1 = CANIDT[i][0]; //初始化 ID
05A0 E084 LDI R24,4
05A1 9F84 MUL R24,R20
05A2 01F0 MOVW R30,R0
05A3 E788 LDI R24,0x78
05A4 E091 LDI R25,1
05A5 0FE8 ADD R30,R24
05A6 1FF9 ADC R31,R25
05A7 8020 LDD R2,Z+0
05A8 922000F3 STS 0xF3,R2
(0117) CANIDT2 = CANIDT[i][1];
05AA E084 LDI R24,4
05AB 9F84 MUL R24,R20
05AC 01F0 MOVW R30,R0
05AD E789 LDI R24,0x79
05AE E091 LDI R25,1
05AF 0FE8 ADD R30,R24
05B0 1FF9 ADC R31,R25
05B1 8020 LDD R2,Z+0
05B2 922000F2 STS 0xF2,R2
(0118) CANIDT3 = CANIDT[i][2];
05B4 E084 LDI R24,4
05B5 9F84 MUL R24,R20
05B6 01F0 MOVW R30,R0
05B7 E78A LDI R24,0x7A
05B8 E091 LDI R25,1
05B9 0FE8 ADD R30,R24
05BA 1FF9 ADC R31,R25
05BB 8020 LDD R2,Z+0
05BC 922000F1 STS 0xF1,R2
(0119) CANIDT4 = CANIDT[i][3];
05BE E084 LDI R24,4
05BF 9F84 MUL R24,R20
05C0 01F0 MOVW R30,R0
05C1 E78B LDI R24,0x7B
05C2 E091 LDI R25,1
05C3 0FE8 ADD R30,R24
05C4 1FF9 ADC R31,R25
05C5 8020 LDD R2,Z+0
05C6 922000F0 STS 0xF0,R2
(0120) CANIDM1 = CANIDM[i][0]; //初始化 mask
05C8 E084 LDI R24,4
05C9 9F84 MUL R24,R20
05CA 01F0 MOVW R30,R0
05CB EB84 LDI R24,0xB4
05CC E091 LDI R25,1
05CD 0FE8 ADD R30,R24
05CE 1FF9 ADC R31,R25
05CF 8020 LDD R2,Z+0
05D0 922000F7 STS 0xF7,R2
(0121) CANIDM2 = CANIDM[i][1];
05D2 E084 LDI R24,4
05D3 9F84 MUL R24,R20
05D4 01F0 MOVW R30,R0
05D5 EB85 LDI R24,0xB5
05D6 E091 LDI R25,1
05D7 0FE8 ADD R30,R24
05D8 1FF9 ADC R31,R25
05D9 8020 LDD R2,Z+0
05DA 922000F6 STS 0xF6,R2
(0122) CANIDM3 = CANIDM[i][2];
05DC E084 LDI R24,4
05DD 9F84 MUL R24,R20
05DE 01F0 MOVW R30,R0
05DF EB86 LDI R24,0xB6
05E0 E091 LDI R25,1
05E1 0FE8 ADD R30,R24
05E2 1FF9 ADC R31,R25
05E3 8020 LDD R2,Z+0
05E4 922000F5 STS 0xF5,R2
(0123) CANIDM4 = CANIDM[i][3]; //0 = ignore bit
05E6 E084 LDI R24,4
05E7 9F84 MUL R24,R20
05E8 01F0 MOVW R30,R0
05E9 EB87 LDI R24,0xB7
05EA E091 LDI R25,1
05EB 0FE8 ADD R30,R24
05EC 1FF9 ADC R31,R25
05ED 8020 LDD R2,Z+0
05EE 922000F4 STS 0xF4,R2
(0124) //CANIDM4 = (1<<IDEMSK); //identifier extention mask
(0125) CANCDMOB = (1<<IDE)|(8<<DLC0); //reception, ext. ID,rev2.0B
05F0 E188 LDI R24,0x18
05F1 938000EF STS 0xEF,R24
(0126) NOP();
05F3 0000 NOP
(0127) Pass_Flag = Pass_Flag + 1;
05F4 918001F5 LDS R24,Pass_Flag
05F6 5F8F SUBI R24,0xFF
05F7 938001F5 STS Pass_Flag,R24
05F9 9543 INC R20
05FA 3043 CPI R20,3
05FB F408 BCC 0x05FD
05FC CF9E RJMP 0x059B
(0128) }
(0129)
(0130) if(Pass_Flag!=0x03)
05FD 918001F5 LDS R24,Pass_Flag
05FF 3083 CPI R24,3
0600 F011 BEQ 0x0603
(0131) RESET;
0601 940C0000 JMP 0x0
(0132)
(0133) WDR();
0603 95A8 WDR
(0134)
(0135) Pass_Flag = 0x00;
0604 2422 CLR R2
0605 922001F5 STS Pass_Flag,R2
(0136) for(i=3;i<6;i++)
0607 E043 LDI R20,3
0608 C05F RJMP 0x0668
(0137) {
(0138) CANPAGE = (i<<4); //MOb3,4,5设置为接受模式
0609 2F84 MOV R24,R20
060A 708F ANDI R24,0xF
060B 9582 SWAP R24
060C 938000ED STS 0xED,R24
(0139) CANIDT1 = CANIDT[i][0]; //初始化 ID
060E E084 LDI R24,4
060F 9F84 MUL R24,R20
0610 01F0 MOVW R30,R0
0611 E788 LDI R24,0x78
0612 E091 LDI R25,1
0613 0FE8 ADD R30,R24
0614 1FF9 ADC R31,R25
0615 8020 LDD R2,Z+0
0616 922000F3 STS 0xF3,R2
(0140) CANIDT2 = CANIDT[i][1];
0618 E084 LDI R24,4
0619 9F84 MUL R24,R20
061A 01F0 MOVW R30,R0
061B E789 LDI R24,0x79
061C E091 LDI R25,1
061D 0FE8 ADD R30,R24
061E 1FF9 ADC R31,R25
061F 8020 LDD R2,Z+0
0620 922000F2 STS 0xF2,R2
(0141) CANIDT3 = CANIDT[i][2];
0622 E084 LDI R24,4
0623 9F84 MUL R24,R20
0624 01F0 MOVW R30,R0
0625 E78A LDI R24,0x7A
0626 E091 LDI R25,1
0627 0FE8 ADD R30,R24
0628 1FF9 ADC R31,R25
0629 8020 LDD R2,Z+0
062A 922000F1 STS 0xF1,R2
(0142) CANIDT4 = CANIDT[i][3];
062C E084 LDI R24,4
062D 9F84 MUL R24,R20
062E 01F0 MOVW R30,R0
062F E78B LDI R24,0x7B
0630 E091 LDI R25,1
0631 0FE8 ADD R30,R24
0632 1FF9 ADC R31,R25
0633 8020 LDD R2,Z+0
0634 922000F0 STS 0xF0,R2
(0143) CANIDM1 = CANIDM[i][0]; //初始化 mask
0636 E084 LDI R24,4
0637 9F84 MUL R24,R20
0638 01F0 MOVW R30,R0
0639 EB84 LDI R24,0xB4
063A E091 LDI R25,1
063B 0FE8 ADD R30,R24
063C 1FF9 ADC R31,R25
063D 8020 LDD R2,Z+0
063E 922000F7 STS 0xF7,R2
(0144) CANIDM2 = CANIDM[i][1];
0640 E084 LDI R24,4
0641 9F84 MUL R24,R20
0642 01F0 MOVW R30,R0
0643 EB85 LDI R24,0xB5
0644 E091 LDI R25,1
0645 0FE8 ADD R30,R24
0646 1FF9 ADC R31,R25
0647 8020 LDD R2,Z+0
0648 922000F6 STS 0xF6,R2
(0145) CANIDM3 = CANIDM[i][2];
064A E084 LDI R24,4
064B 9F84 MUL R24,R20
064C 01F0 MOVW R30,R0
064D EB86 LDI R24,0xB6
064E E091 LDI R25,1
064F 0FE8 ADD R30,R24
0650 1FF9 ADC R31,R25
0651 8020 LDD R2,Z+0
0652 922000F5 STS 0xF5,R2
(0146) CANIDM4 = CANIDM[i][3]; //0 = ignore bit
0654 E084 LDI R24,4
0655 9F84 MUL R24,R20
0656 01F0 MOVW R30,R0
0657 EB87 LDI R24,0xB7
0658 E091 LDI R25,1
0659 0FE8 ADD R30,R24
065A 1FF9 ADC R31,R25
065B 8020 LDD R2,Z+0
065C 922000F4 STS 0xF4,R2
(0147) CANCDMOB = (2<<CONMOB0)|(1<<IDE)|(8<<DLC0); //reception, ext. ID,rev2.0B
065E E988 LDI R24,0x98
065F 938000EF STS 0xEF,R24
(0148) NOP();
0661 0000 NOP
(0149) Pass_Flag = Pass_Flag + 1;
0662 918001F5 LDS R24,Pass_Flag
0664 5F8F SUBI R24,0xFF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -