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

📄 can_module.lis

📁 Atmel mcu can interface design example
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01C8                   .dbsym r clockdiv 10 c
 01C8                   .dbend
 01C8                   .dbfunc e SJASetAccMask _SJASetAccMask fc
 01C8           ;       Err_Flag -> R20
 01C8           ;        Err_Cnt -> R22
 01C8           ;           amr3 -> R10
 01C8           ;           amr2 -> R12
 01C8           ;           amr1 -> R14
 01C8           ;           amr0 -> y+10
                        .even
 01C8           _SJASetAccMask::
 01C8 0E940000          xcall push_arg4
 01CC 0E940000          xcall push_gset5
 01D0 E22E              mov R14,R18
 01D2 CE84              ldd R12,y+14
 01D4 A888              ldd R10,y+16
 01D6                   .dbline -1
 01D6                   .dbline 186
 01D6           ; }
 01D6           ; 
 01D6           ; unsigned char SJASetAccMask(unsigned char amr0, unsigned char amr1, unsigned char amr2, unsigned char amr3)
 01D6           ; {
 01D6                   .dbline 187
 01D6           ;     unsigned char Err_Cnt = 0x20;
 01D6 60E2              ldi R22,32
 01D8                   .dbline 188
 01D8           ;       unsigned char Err_Flag = TRUE;
 01D8 41E0              ldi R20,1
 01DA                   .dbline 189
 01DA           ;       if(SJATestRstMode())
 01DA 74DF              xcall _SJATestRstMode
 01DC 0023              tst R16
 01DE 39F1              breq L58
 01E0                   .dbline 190
 01E0           ;       {
 01E0                   .dbline 191
 01E0           ;          Err_Flag = TRUE;
 01E0                   .dbline 192
 01E0           ;       }
 01E0 2BC0              xjmp L56
 01E2           X3:
 01E2                   .dbline 194
 01E2           ;       else
 01E2           ;       {
 01E2           L57:
 01E2                   .dbline 196
 01E2           ;          while(--Err_Cnt)
 01E2           ;          {
 01E2                   .dbline 197
 01E2           ;             write_sja(AMR0, amr0);
 01E2 2A85              ldd R18,y+10
 01E4 04E1              ldi R16,20
 01E6 19DF              xcall _write_sja
 01E8                   .dbline 198
 01E8           ;                 if(read_sja(AMR0) != amr0)
 01E8 04E1              ldi R16,20
 01EA 0ADF              xcall _read_sja
 01EC 0A84              ldd R0,y+10
 01EE 0015              cp R16,R0
 01F0 09F0              breq L60
 01F2                   .dbline 199
 01F2           ;                 {
 01F2                   .dbline 200
 01F2           ;                    continue;
 01F2 1DC0              xjmp L58
 01F4           L60:
 01F4                   .dbline 203
 01F4           ;                 } 
 01F4           ;                 
 01F4           ;                 Err_Cnt = 0x20;
 01F4 60E2              ldi R22,32
 01F6                   .dbline 204
 01F6           ;                 write_sja(AMR1, amr1);
 01F6 2E2D              mov R18,R14
 01F8 05E1              ldi R16,21
 01FA 0FDF              xcall _write_sja
 01FC                   .dbline 205
 01FC           ;                 if(read_sja(AMR1) != amr1)
 01FC 05E1              ldi R16,21
 01FE 00DF              xcall _read_sja
 0200 0E15              cp R16,R14
 0202 09F0              breq L62
 0204                   .dbline 206
 0204           ;                 {
 0204                   .dbline 207
 0204           ;                    continue;
 0204 14C0              xjmp L58
 0206           L62:
 0206                   .dbline 210
 0206           ;                 } 
 0206           ;                 
 0206           ;                 Err_Cnt = 0x20;
 0206 60E2              ldi R22,32
 0208                   .dbline 211
 0208           ;                 write_sja(AMR2, amr2);
 0208 2C2D              mov R18,R12
 020A 06E1              ldi R16,22
 020C 06DF              xcall _write_sja
 020E                   .dbline 212
 020E           ;                 if(read_sja(AMR2) != amr2)
 020E 06E1              ldi R16,22
 0210 F7DE              xcall _read_sja
 0212 0C15              cp R16,R12
 0214 09F0              breq L64
 0216                   .dbline 213
 0216           ;                 {
 0216                   .dbline 214
 0216           ;                    continue;
 0216 0BC0              xjmp L58
 0218           L64:
 0218                   .dbline 217
 0218           ;                 } 
 0218           ;                 
 0218           ;                 Err_Cnt = 0x20;
 0218 60E2              ldi R22,32
 021A                   .dbline 218
 021A           ;                 write_sja(AMR3, amr3);
 021A 2A2D              mov R18,R10
 021C 07E1              ldi R16,23
 021E FDDE              xcall _write_sja
 0220                   .dbline 219
 0220           ;                 if(read_sja(AMR3) != amr3)
 0220 07E1              ldi R16,23
 0222 EEDE              xcall _read_sja
 0224 0A15              cp R16,R10
 0226 09F0              breq L66
 0228                   .dbline 220
 0228           ;                 {
 0228                   .dbline 221
 0228           ;                    continue;
 0228 02C0              xjmp L58
 022A           L66:
 022A                   .dbline 224
 022A 4427              clr R20
 022C                   .dbline 225
 022C 05C0              xjmp L59
 022E           L58:
 022E                   .dbline 195
 022E 862F              mov R24,R22
 0230 8150              subi R24,1
 0232 682F              mov R22,R24
 0234 8823              tst R24
 0236 A9F6              brne L57
 0238           L59:
 0238                   .dbline 227
 0238           ;                 } 
 0238           ;                 
 0238           ;                 Err_Flag = FALSE;
 0238           ;                 break;   
 0238           ;          }
 0238           ;       }
 0238           L56:
 0238                   .dbline 228
 0238           ;       return Err_Flag;
 0238 042F              mov R16,R20
 023A                   .dbline -2
 023A           L54:
 023A 0E940000          xcall pop_gset5
 023E 2496              adiw R28,4
 0240                   .dbline 0 ; func end
 0240 0895              ret
 0242                   .dbsym r Err_Flag 20 c
 0242                   .dbsym r Err_Cnt 22 c
 0242                   .dbsym r amr3 10 c
 0242                   .dbsym r amr2 12 c
 0242                   .dbsym r amr1 14 c
 0242                   .dbsym l amr0 10 c
 0242                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\candesignnow\can_module.c
 0000           _SJA_BTR_CODETAB::
 0000                   .blkb 2
                        .area idata
 0000 532F              .byte 'S,47
                        .area data(ram, con, rel)
 0002                   .dbfile D:\candesignnow\can_module.c
 0002                   .blkb 2
                        .area idata
 0002 87FF              .byte 135,255
                        .area data(ram, con, rel)
 0004                   .dbfile D:\candesignnow\can_module.c
 0004                   .blkb 2
                        .area idata
 0004 472F              .byte 'G,47
                        .area data(ram, con, rel)
 0006                   .dbfile D:\candesignnow\can_module.c
 0006                   .blkb 2
                        .area idata
 0006 83FF              .byte 131,255
                        .area data(ram, con, rel)
 0008                   .dbfile D:\candesignnow\can_module.c
 0008                   .blkb 2
                        .area idata
 0008 432F              .byte 'C,47
                        .area data(ram, con, rel)
 000A                   .dbfile D:\candesignnow\can_module.c
 000A                   .blkb 2
                        .area idata
 000A 031C              .byte 3,28
                        .area data(ram, con, rel)
 000C                   .dbfile D:\candesignnow\can_module.c
 000C                   .blkb 2
                        .area idata
 000C 81FA              .byte 129,250
                        .area data(ram, con, rel)
 000E                   .dbfile D:\candesignnow\can_module.c
 000E                   .blkb 2
                        .area idata
 000E 011C              .byte 1,28
                        .area data(ram, con, rel)
 0010                   .dbfile D:\candesignnow\can_module.c
 0010                   .blkb 2
                        .area idata
 0010 80FA              .byte 128,250
                        .area data(ram, con, rel)
 0012                   .dbfile D:\candesignnow\can_module.c
 0012                   .blkb 2
                        .area idata
 0012 001C              .byte 0,28
                        .area data(ram, con, rel)
 0014                   .dbfile D:\candesignnow\can_module.c
 0014                   .blkb 2
                        .area idata
 0014 80B6              .byte 128,182
                        .area data(ram, con, rel)
 0016                   .dbfile D:\candesignnow\can_module.c
 0016                   .blkb 2
                        .area idata
 0016 0016              .byte 0,22
                        .area data(ram, con, rel)
 0018                   .dbfile D:\candesignnow\can_module.c
 0018                   .blkb 2
                        .area idata
 0018 0014              .byte 0,20
                        .area data(ram, con, rel)
 001A                   .dbfile D:\candesignnow\can_module.c
 001A                   .dbsym e SJA_BTR_CODETAB _SJA_BTR_CODETAB A[26:26]c
                        .area text(rom, con, rel)
 0242                   .dbfile D:\candesignnow\can_module.c
 0242                   .dbfunc e SJASetBaudRateStandard _SJASetBaudRateStandard fc
 0242           ;       Err_Flag -> R20
 0242           ;        Err_Cnt -> R22
 0242           ;   BaudRateSize -> R10
                        .even
 0242           _SJASetBaudRateStandard::
 0242 0E940000          xcall push_gset3
 0246 A02E              mov R10,R16
 0248                   .dbline -1
 0248                   .dbline 249
 0248           ; }
 0248           ; 
 0248           ; //16MHZ
 0248           ; unsigned char SJA_BTR_CODETAB[] = {
 0248           ;       0x53, 0x2F,   //20KBPS    0
 0248           ;         0x87, 0xFF,   //40KBPS    1
 0248           ;         0x47, 0x2F,   //50KBPS    2
 0248           ;         0x83, 0xFF,   //80KBPS    3
 0248           ;         0x43, 0x2F,   //100KBPS   4
 0248           ;         0x03, 0x1C,   //125KBPS   5
 0248           ;         0x81, 0xFA,   //200KBPS   6
 0248           ;         0x01, 0x1C,   //250KBPS   7
 0248           ;         0x80, 0xFA,   //400KBPS   8
 0248           ;         0x00, 0x1C,   //500KBPS   9
 0248           ;         0x80, 0xB6,   //666KBPS   10
 0248           ;         0x00, 0x16,   //800KBPS   11
 0248           ;         0x00, 0x14    //1000KBPS  12
 0248           ; };
 0248           ; 
 0248           ; unsigned char SJASetBaudRateStandard(unsigned char BaudRateSize)
 0248           ; {
 0248                   .dbline 250
 0248           ;      unsigned char Err_Cnt = 0x20;
 0248 60E2              ldi R22,32
 024A                   .dbline 251
 024A           ;        unsigned char Err_Flag = TRUE;
 024A 41E0              ldi R20,1
 024C                   .dbline 252
 024C           ;        if(BaudRateSize > 12)
 024C 8CE0              ldi R24,12
 024E 8A15              cp R24,R10
 0250 08F0              brlo X5
 0252 32C0              xjmp L72
 0254           X5:
 0254                   .dbline 253
 0254           ;        {
 0254                   .dbline 254
 0254           ;           Err_Flag = TRUE;
 0254                   .dbline 255
 0254           ;        }
 0254 37C0              xjmp L70
 0256           X4:
 0256                   .dbline 257
 0256           ;        else
 0256           ;        {
 0256           L71:
 0256                   .dbline 259
 0256           ;           while(--Err_Cnt)
 0256           ;               {
 0256                   .dbline 260
 0256           ;                   write_sja(BTR0, SJA_BTR_CODETAB[BaudRateSize*2]);
 0256 82E0              ldi R24,2
 0258 8A9D              mul R24,R10
 025A F001              movw R30,R0
 025C 80E0              ldi R24,<_SJA_BTR_CODETAB
 025E 90E0              ldi R25,>_SJA_BTR_CODETAB
 0260 E80F              add R30,R24
 0262 F91F              adc R31,R25
 0264 2081              ldd R18,z+0
 0266 06E0              ldi R16,6
 0268 D8DE              xcall _write_sja
 026A                   .dbline 261
 026A           ;                       if(read_sja(BTR0) != SJA_BTR_CODETAB[BaudRateSize*2])
 026A 06E0              ldi R16,6
 026C C9DE              xcall _read_sja
 026E 82E0              ldi R24,2
 0270 8A9D              mul R24,R10
 0272 F001              movw R30,R0
 0274 80E0              ldi R24,<_SJA_BTR_CODETAB
 0276 90E0              ldi R25,>_SJA_BTR_CODETAB
 0278 E80F              add R30,R24
 027A F91F              adc R31,R25
 027C 2080              ldd R2,z+0
 027E 0215              cp R16,R2
 0280 09F0              breq L74
 0282                   .dbline 262
 0282           ;                       {
 0282                   .dbline 263
 0282           ;                          continue;
 0282 1AC0              xjmp L72
 0284           L74:
 0284                   .dbline 266
 0284           ;                       }
 0284           ;                       
 0284           ;                       Err_Cnt = 0x20;
 0284 60E2              ldi R22,32
 0286                   .dbline 267

⌨️ 快捷键说明

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