📄 can_module.lis
字号:
0366 .dbline 0 ; func end
0366 0895 ret
0368 .dbsym r Err_Flag 20 c
0368 .dbsym r Err_Cnt 22 c
0368 .dbsym r value 10 c
0368 .dbend
0368 .dbfunc e Init_CAN _Init_CAN fV
0368 ; temp -> R22
0368 ; k -> R20,R21
.even
0368 _Init_CAN::
0368 0E940000 xcall push_gset2
036C 2397 sbiw R28,3
036E .dbline -1
036E .dbline 403
036E ; }
036E ;
036E ;
036E ;
036E ; /*************************************************
036E ; SJA1000初始化子函数
036E ; *************************************************/
036E ; void Init_CAN(void)
036E ; {
036E .dbline 406
036E ; unsigned char temp;
036E ; unsigned int k ;
036E ; CLI();
036E F894 cli
0370 L101:
0370 .dbline 408
0370 ; do
0370 ; {
0370 .dbline 409
0370 ; temp = SJATestInterface(0x55);
0370 05E5 ldi R16,85
0372 60DE xcall _SJATestInterface
0374 602F mov R22,R16
0376 .dbline 410
0376 L102:
0376 .dbline 410
0376 ; }while(temp);//检查硬件连线
0376 6623 tst R22
0378 D9F7 brne L101
037A .dbline 411
037A ; WDR();
037A A895 wdr
037C .dbline 412
037C 4427 clr R20
037E 5527 clr R21
0380 02C0 xjmp L107
0382 L104:
0382 .dbline 412
0382 L105:
0382 .dbline 412
0382 4F5F subi R20,255 ; offset = 1
0384 5F4F sbci R21,255
0386 L107:
0386 .dbline 412
0386 ; for(k=0;k<6;k++); //延时约5us
0386 4630 cpi R20,6
0388 E0E0 ldi R30,0
038A 5E07 cpc R21,R30
038C D0F3 brlo L104
038E L108:
038E .dbline 414
038E ; do
038E ; {
038E .dbline 415
038E ; temp = SJAEntryResetMode();
038E 6ADE xcall _SJAEntryResetMode
0390 602F mov R22,R16
0392 .dbline 416
0392 L109:
0392 .dbline 416
0392 ; }while(temp);
0392 6623 tst R22
0394 E1F7 brne L108
0396 .dbline 417
0396 ; WDR();
0396 A895 wdr
0398 .dbline 418
0398 ; read_sja(IR);//clear IR
0398 03E0 ldi R16,3
039A 32DE xcall _read_sja
039C .dbline 419
039C 4427 clr R20
039E 5527 clr R21
03A0 02C0 xjmp L114
03A2 L111:
03A2 .dbline 419
03A2 L112:
03A2 .dbline 419
03A2 4F5F subi R20,255 ; offset = 1
03A4 5F4F sbci R21,255
03A6 L114:
03A6 .dbline 419
03A6 ; for(k=0;k<6;k++); //延时约5us
03A6 4630 cpi R20,6
03A8 E0E0 ldi R30,0
03AA 5E07 cpc R21,R30
03AC D0F3 brlo L111
03AE .dbline 420
03AE ; WDR();
03AE A895 wdr
03B0 .dbline 421
03B0 ; if(!SJATestRstMode())
03B0 89DE xcall _SJATestRstMode
03B2 0023 tst R16
03B4 09F0 breq X8
03B6 74C0 xjmp L115
03B8 X8:
03B8 .dbline 422
03B8 ; {
03B8 L117:
03B8 .dbline 424
03B8 ; do
03B8 ; {
03B8 .dbline 425
03B8 ; temp = SJASetClockDivision(0xC8);
03B8 08EC ldi R16,200
03BA EBDE xcall _SJASetClockDivision
03BC 602F mov R22,R16
03BE .dbline 426
03BE L118:
03BE .dbline 426
03BE ; }while(temp);
03BE 6623 tst R22
03C0 D9F7 brne L117
03C2 .dbline 427
03C2 ; WDR();
03C2 A895 wdr
03C4 .dbline 428
03C4 4427 clr R20
03C6 5527 clr R21
03C8 02C0 xjmp L123
03CA L120:
03CA .dbline 428
03CA L121:
03CA .dbline 428
03CA 4F5F subi R20,255 ; offset = 1
03CC 5F4F sbci R21,255
03CE L123:
03CE .dbline 428
03CE ; for(k=0;k<6;k++); //延时约5us
03CE 4630 cpi R20,6
03D0 E0E0 ldi R30,0
03D2 5E07 cpc R21,R30
03D4 D0F3 brlo L120
03D6 L124:
03D6 .dbline 430
03D6 ; do
03D6 ; {
03D6 .dbline 431
03D6 ; temp = SJASetOutControl(0x1a);
03D6 0AE1 ldi R16,26
03D8 84DE xcall _SJASetOutControl
03DA 602F mov R22,R16
03DC .dbline 432
03DC L125:
03DC .dbline 432
03DC ; }while(temp);
03DC 6623 tst R22
03DE D9F7 brne L124
03E0 .dbline 433
03E0 ; WDR();
03E0 A895 wdr
03E2 .dbline 434
03E2 4427 clr R20
03E4 5527 clr R21
03E6 02C0 xjmp L130
03E8 L127:
03E8 .dbline 434
03E8 L128:
03E8 .dbline 434
03E8 4F5F subi R20,255 ; offset = 1
03EA 5F4F sbci R21,255
03EC L130:
03EC .dbline 434
03EC ; for(k=0;k<6;k++); //延时约5us
03EC 4630 cpi R20,6
03EE E0E0 ldi R30,0
03F0 5E07 cpc R21,R30
03F2 D0F3 brlo L127
03F4 L131:
03F4 .dbline 436
03F4 ; do
03F4 ; {
03F4 .dbline 437
03F4 ; temp = SJASetBaudRateStandard(2);
03F4 02E0 ldi R16,2
03F6 25DF xcall _SJASetBaudRateStandard
03F8 602F mov R22,R16
03FA .dbline 438
03FA L132:
03FA .dbline 438
03FA ; }while(temp);
03FA 6623 tst R22
03FC D9F7 brne L131
03FE .dbline 439
03FE ; WDR();
03FE A895 wdr
0400 .dbline 440
0400 4427 clr R20
0402 5527 clr R21
0404 02C0 xjmp L137
0406 L134:
0406 .dbline 440
0406 L135:
0406 .dbline 440
0406 4F5F subi R20,255 ; offset = 1
0408 5F4F sbci R21,255
040A L137:
040A .dbline 440
040A ; for(k=0;k<6;k++); //延时约5us
040A 4630 cpi R20,6
040C E0E0 ldi R30,0
040E 5E07 cpc R21,R30
0410 D0F3 brlo L134
0412 L138:
0412 .dbline 442
0412 ; do
0412 ; {
0412 .dbline 443
0412 ; temp = SJASetAccCode(0x00, 0x00, 0x00, 0x00);
0412 2224 clr R2
0414 2A82 std y+2,R2
0416 2882 std y+0,R2
0418 2227 clr R18
041A 0027 clr R16
041C 7DDE xcall _SJASetAccCode
041E 602F mov R22,R16
0420 .dbline 444
0420 L139:
0420 .dbline 444
0420 ; }while(temp);
0420 6623 tst R22
0422 B9F7 brne L138
0424 .dbline 445
0424 ; WDR();
0424 A895 wdr
0426 .dbline 446
0426 4427 clr R20
0428 5527 clr R21
042A 02C0 xjmp L144
042C L141:
042C .dbline 446
042C L142:
042C .dbline 446
042C 4F5F subi R20,255 ; offset = 1
042E 5F4F sbci R21,255
0430 L144:
0430 .dbline 446
0430 ; for(k=0;k<6;k++); //延时约5us
0430 4630 cpi R20,6
0432 E0E0 ldi R30,0
0434 5E07 cpc R21,R30
0436 D0F3 brlo L141
0438 L145:
0438 .dbline 448
0438 ; do
0438 ; {
0438 .dbline 449
0438 ; temp = SJASetAccMask(0xFF, 0xFF, 0xFF, 0xFF);
0438 8FEF ldi R24,255
043A 8A83 std y+2,R24
043C 8883 std y+0,R24
043E 2FEF ldi R18,255
0440 0FEF ldi R16,255
0442 C2DE xcall _SJASetAccMask
0444 602F mov R22,R16
0446 .dbline 450
0446 L146:
0446 .dbline 450
0446 ; }while(temp);
0446 6623 tst R22
0448 B9F7 brne L145
044A .dbline 451
044A ; WDR();
044A A895 wdr
044C .dbline 452
044C 4427 clr R20
044E 5527 clr R21
0450 02C0 xjmp L151
0452 L148:
0452 .dbline 452
0452 L149:
0452 .dbline 452
0452 4F5F subi R20,255 ; offset = 1
0454 5F4F sbci R21,255
0456 L151:
0456 .dbline 452
0456 ; for(k=0;k<6;k++); //延时约5us
0456 4630 cpi R20,6
0458 E0E0 ldi R30,0
045A 5E07 cpc R21,R30
045C D0F3 brlo L148
045E L152:
045E .dbline 454
045E ; do
045E ; {
045E .dbline 455
045E ; temp = SJASetOtherReg();
045E 36DF xcall _SJASetOtherReg
0460 602F mov R22,R16
0462 .dbline 456
0462 L153:
0462 .dbline 456
0462 ; }while(temp);
0462 6623 tst R22
0464 E1F7 brne L152
0466 .dbline 457
0466 ; WDR();
0466 A895 wdr
0468 .dbline 458
0468 4427 clr R20
046A 5527 clr R21
046C 02C0 xjmp L158
046E L155:
046E .dbline 458
046E L156:
046E .dbline 458
046E 4F5F subi R20,255 ; offset = 1
0470 5F4F sbci R21,255
0472 L158:
0472 .dbline 458
0472 ; for(k=0;k<6;k++); //延时约5us
0472 4630 cpi R20,6
0474 E0E0 ldi R30,0
0476 5E07 cpc R21,R30
0478 D0F3 brlo L155
047A L159:
047A .dbline 460
047A ; do
047A ; {
047A .dblin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -