📄 at90can128.s
字号:
ld R24,y+
ld R19,y+
ld R18,y+
ld R17,y+
ld R16,y+
ld R9,y+
ld R8,y+
ld R7,y+
ld R6,y+
ld R5,y+
ld R4,y+
ld R3,y+
ld R2,y+
ld R1,y+
ld R0,y+
reti
.dbend
.area vector(rom, abs)
.org 36
jmp _TIMER2_COMP_ISR
.area text(rom, con, rel)
.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点2\AT90CAN128.C
.dbfunc e TIMER2_COMP_ISR _TIMER2_COMP_ISR fV
.even
_TIMER2_COMP_ISR::
st -y,R2
st -y,R3
st -y,R24
st -y,R25
st -y,R26
st -y,R30
in R2,0x3f
st -y,R2
.dbline -1
.dbline 202
; }
;
;
; #pragma interrupt_handler TIMER2_COMP_ISR:iv_TIMER2_COMP
; void TIMER2_COMP_ISR(void)
; {
.dbline 203
; if (!send_mark)
lds R2,_send_mark
tst R2
brne L44
X12:
.dbline 204
; {
.dbline 205
; send_time++;
lds R24,_send_time
lds R25,_send_time+1
adiw R24,1
sts _send_time+1,R25
sts _send_time,R24
.dbline 206
; if (send_time >= 100)
cpi R24,100
ldi R30,0
cpc R25,R30
brlo L46
X13:
.dbline 207
; {
.dbline 208
; send_mark = TRUE;
ldi R24,1
sts _send_mark,R24
.dbline 209
; send_time = 0;
clr R2
clr R3
sts _send_time+1,R3
sts _send_time,R2
.dbline 210
; }
L46:
.dbline 211
; }
L44:
.dbline 212
; if (!display_mark)
lds R2,_display_mark
tst R2
brne L48
X14:
.dbline 213
; {
.dbline 214
; display_time++;
lds R24,_display_time
lds R25,_display_time+1
adiw R24,1
sts _display_time+1,R25
sts _display_time,R24
.dbline 215
; if (display_time >= 25)
cpi R24,25
ldi R30,0
cpc R25,R30
brlo L50
X15:
.dbline 216
; {
.dbline 217
; display_time = 0;
clr R2
clr R3
sts _display_time+1,R3
sts _display_time,R2
.dbline 218
; display_mark = TRUE;
ldi R24,1
sts _display_mark,R24
.dbline 219
; }
L50:
.dbline 220
; }
L48:
.dbline -2
L43:
.dbline 0 ; func end
ld R2,y+
out 0x3f,R2
ld R30,y+
ld R26,y+
ld R25,y+
ld R24,y+
ld R3,y+
ld R2,y+
reti
.dbend
.dbfunc e CHA_Init _CHA_Init fV
.even
_CHA_Init::
.dbline -1
.dbline 225
; }
;
;
; void CHA_Init(void)
; {
.dbline 226
; CHA++;
lds R24,_CHA
subi R24,255 ; addi 1
sts _CHA,R24
.dbline 227
; if (CHA >= 100)
lds R24,_CHA
cpi R24,100
brlo L53
X16:
.dbline 228
; CHA = 0;
clr R2
sts _CHA,R2
L53:
.dbline -2
L52:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; i -> R20
.even
_main::
.dbline -1
.dbline 232
; }
;
; void main(void)
; {
.dbline 235
; uint8 i;
;
; CLI();
cli
.dbline 236
; PORT_Init();
xcall _PORT_Init
.dbline 237
; TIMER0_Init();
xcall _TIMER0_Init
.dbline 238
; TIMER2_Init();
xcall _TIMER2_Init
.dbline 240
; // USART1_Init();
; TJA1040_DISABLE();
sbi 0xb,4
.dbline 241
; NOP();
nop
.dbline 242
; NOP();
nop
.dbline 243
; TJA1040_ENABLE();
cbi 0xb,4
.dbline 244
; NOP();
nop
.dbline 245
; NOP();
nop
.dbline 246
; CAN_Init();
xcall _CAN_Init
.dbline 247
; Watchdog_Init();
xcall _Watchdog_Init
.dbline 248
; SEI();
sei
xjmp L57
L56:
.dbline 250
; while (1)
; {
.dbline 287
; /*
; 00000000: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
; 00000010: 02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00 .B..............
; 00000020: 02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00 .C..............
; 00000030: 02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00 .D..............
; 00000040: 02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00 .E..............
; 00000050: 02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00 .F..............
; 00000060: 02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00 .G..............
; 00000070: 02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .H..............
; 00000080: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
; 00000090: 02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00 .B..............
; 000000A0: 02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00 .C..............
; 000000B0: 02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00 .D..............
; 000000C0: 02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00 .E..............
; 000000D0: 02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00 .F..............
; 000000E0: 02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00 .G..............
; 000000F0: 02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .H..............
; 00000100: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
; 00000110: 02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00 .B..............
; 00000120: 02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00 .C..............
; 00000130: 02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00 .D..............
; 00000140: 02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00 .E..............
; 00000150: 02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00 .F..............
; 00000160: 02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00 .G..............
; 00000170: 02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .H..............
; 00000180: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
; 00000190: 02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00 .B..............
; 000001A0: 02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00 .C..............
; 000001B0: 02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00 .D..............
; 000001C0: 02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00 .E..............
; 000001D0: 02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00 .F..............
; 000001E0: 02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00 .G..............
; 000001F0: 02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .H..............
; 00000200: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
;
; */
; if (send_mark)
lds R2,_send_mark
tst R2
brne X38
xjmp L59
X38:
X17:
.dbline 288
; {
.dbline 289
; send_mark = FALSE;
clr R2
sts _send_mark,R2
.dbline 290
; if (!(CANGSTA & (1 << TXBSY)))
lds R2,217
sbrc R2,4
rjmp L61
X18:
.dbline 291
; {
.dbline 292
; CANPAGE = 0x00;
clr R2
sts 237,R2
.dbline 293
; if (CANSTMOB & BIT(TXOK))
lds R2,238
sbrs R2,6
rjmp L63
X19:
.dbline 294
; {
.dbline 295
; CANSTMOB &= ~ BIT(TXOK);
lds R24,238
andi R24,191
sts 238,R24
.dbline 296
; me_DLC++;
lds R24,_me_DLC
subi R24,255 ; addi 1
sts _me_DLC,R24
.dbline 297
; if (me_DLC >= 9)
cpi R24,9
brlo L65
X20:
.dbline 298
; me_DLC = 1;
ldi R24,1
sts _me_DLC,R24
L65:
.dbline 299
; switch (me_DLC)
lds R20,_me_DLC
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L70
X21:
cpi R20,2
ldi R30,0
cpc R21,R30
breq L71
X22:
cpi R20,3
ldi R30,0
cpc R21,R30
breq L76
X23:
cpi R20,4
ldi R30,0
cpc R21,R30
brne X39
xjmp L81
X39:
X24:
cpi R20,5
ldi R30,0
cpc R21,R30
brne X40
xjmp L86
X40:
X25:
cpi R20,6
ldi R30,0
cpc R21,R30
brne X41
xjmp L91
X41:
X26:
cpi R20,7
ldi R30,0
cpc R21,R30
brne X42
xjmp L96
X42:
X27:
cpi R20,8
ldi R30,0
cpc R21,R30
brne X43
xjmp L101
X43:
X28:
xjmp L67
L70:
.dbline 302
; {
; case 1:
; CANMSG = 1;
ldi R24,1
sts 250,R24
.dbline 303
; CANCDMOB = 0x41;
ldi R24,65
sts 239,R24
.dbline 304
; break;
xjmp L68
L71:
.dbline 306
; case 2:
; for (i = 0 ; i < 2 ; i++)
clr R20
xjmp L75
L72:
.dbline 307
; CANMSG = 2;
ldi R24,2
sts 250,R24
L73:
.dbline 306
inc R20
L75:
.dbline 306
cpi R20,2
brlo L72
X29:
.dbline 308
; CANCDMOB = 0x42;
ldi R24,66
sts 239,R24
.dbline 309
; break;
xjmp L68
L76:
.dbline 311
; case 3:
; for (i = 0 ; i < 3 ; i++)
clr R20
xjmp L80
L77:
.dbline 312
; CANMSG = 3;
ldi R24,3
sts 250,R24
L78:
.dbline 311
inc R20
L80:
.dbline 311
cpi R20,3
brlo L77
X30:
.dbline 313
; CANCDMOB = 0x43;
ldi R24,67
sts 239,R24
.dbline 314
; break;
xjmp L68
L81:
.dbline 316
; case 4:
; for (i = 0 ; i < 4 ; i++)
clr R20
xjmp L85
L82:
.dbline 317
; CANMSG = 4;
ldi R24,4
sts 250,R24
L83:
.dbline 316
inc R20
L85:
.dbline 316
cpi R20,4
brlo L82
X31:
.dbline 318
; CANCDMOB = 0x44;
ldi R24,68
sts 239,R24
.dbline 319
; break;
xjmp L68
L86:
.dbline 321
; case 5:
; for (i = 0 ; i < 5 ; i++)
clr R20
xjmp L90
L87:
.dbline 322
; CANMSG = 5;
ldi R24,5
sts 250,R24
L88:
.dbline 321
inc R20
L90:
.dbline 321
cpi R20,5
brlo L87
X32:
.dbline 323
; CANCDMOB = 0x45;
ldi R24,69
sts 239,R24
.dbline 324
; break;
xjmp L68
L91:
.dbline 326
; case 6:
; for (i = 0 ; i < 6 ; i++)
clr R20
xjmp L95
L92:
.dbline 327
; CANMSG = 6;
ldi R24,6
sts 250,R24
L93:
.dbline 326
inc R20
L95:
.dbline 326
cpi R20,6
brlo L92
X33:
.dbline 328
; CANCDMOB = 0x46;
ldi R24,70
sts 239,R24
.dbline 329
; break;
xjmp L68
L96:
.dbline 331
; case 7:
; for (i = 0 ; i < 7 ; i++)
clr R20
xjmp L100
L97:
.dbline 332
; CANMSG = 7;
ldi R24,7
sts 250,R24
L98:
.dbline 331
inc R20
L100:
.dbline 331
cpi R20,7
brlo L97
X34:
.dbline 333
; CANCDMOB = 0x47;
ldi R24,71
sts 239,R24
.dbline 334
; break;
xjmp L68
L101:
.dbline 336
; case 8:
; for (i = 0 ; i < 8 ; i++)
clr R20
xjmp L105
L102:
.dbline 337
; CANMSG = 8;
ldi R24,8
sts 250,R24
L103:
.dbline 336
inc R20
L105:
.dbline 336
cpi R20,8
brlo L102
X35:
.dbline 338
; CANCDMOB = 0x48;
ldi R24,72
sts 239,R24
.dbline 339
; break;
L67:
L68:
.dbline 341
; }
; }
L63:
.dbline 342
; }
L61:
.dbline 343
; }
L59:
.dbline 344
; CHA = CANGIT & 0x7F;
lds R24,218
andi R24,127
sts _CHA,R24
.dbline 346
; // DISPLAY_LED();
; if (display_mark)
lds R2,_display_mark
tst R2
breq L106
X36:
.dbline 347
; {
.dbline 348
; display_mark = FALSE;
clr R2
sts _display_mark,R2
.dbline 349
; DISPLAY_Init(CHA);
lds R16,_CHA
clr R17
xcall _DISPLAY_Init
.dbline 350
; }
L106:
.dbline 351
; WDR();
wdr
.dbline 352
; }
L57:
.dbline 249
xjmp L56
X37:
.dbline -2
L55:
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
; }
;
;
; //熔丝位配置(打勾表示0,不打勾表示1)
; // 1 0
; //WDTON WDT关闭 WDT打开
; //CKDIV8 禁止系统时钟8分频 允许系统时钟8分频
; //EESAVE 全片擦除时擦除EERROM数据 全片擦除时保留EERROM数据
; //DWEN 禁止单线调试 使能单线调试
;
; //BOD检测电平选择:
; //BODLEVEL2..0 BOD门槛电压
; //111 BOD禁止
; //110 1.8V
; //101 2.7V
; //100 4.3V (选择4.3V)
; //其余 保留
;
; //时钟源选择:
; //系统时钟源 CKSEL3..0
; //低功耗晶振(小振幅) 1111-1000
; //大振幅晶振 0111-0110
; //低频晶振 0101-0100
; //128kHz内部RC振荡 0011
; //可校准内部RC振荡 0010
; //外部时钟 0000
; //保留选项 0001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -