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

📄 can_module.lis

📁 Atmel mcu can interface design example
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -