?? 16mcan.lst
字號:
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 + -