📄 can_module.lis
字号:
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 + -