📄 at90can128.s
字号:
.dbfunc e TIMER0_COMP_ISR _TIMER0_COMP_ISR fV
.even
_TIMER0_COMP_ISR::
st -y,R0
st -y,R1
st -y,R2
st -y,R3
st -y,R4
st -y,R5
st -y,R6
st -y,R7
st -y,R8
st -y,R9
st -y,R16
st -y,R17
st -y,R18
st -y,R19
st -y,R24
st -y,R25
st -y,R26
st -y,R27
st -y,R30
st -y,R31
in R0,0x3f
st -y,R0
st -y,R20
st -y,R21
.dbline -1
.dbline 180
; }
;
;
; #pragma interrupt_handler TIMER0_COMP_ISR:iv_TIMER0_COMP
; void TIMER0_COMP_ISR(void)
; {
.dbline 181
; CS++;
lds R24,_CS
subi R24,255 ; addi 1
sts _CS,R24
.dbline 182
; if (CS > 1)
ldi R24,1
lds R2,_CS
cp R24,R2
brsh L36
X9:
.dbline 183
; CS = 0;
clr R2
sts _CS,R2
L36:
.dbline 184
; switch (CS)
lds R20,_CS
clr R21
cpi R20,0
cpc R20,R21
breq L41
X10:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L42
X11:
xjmp L38
L41:
.dbline 187
; {
; case 0:
; CS2_OFF();
sbi 0x8,6
.dbline 188
; CS1_ON();
cbi 0x8,7
.dbline 189
; break;
xjmp L39
L42:
.dbline 191
; case 1:
; CS1_OFF();
sbi 0x8,7
.dbline 192
; CS2_ON();
cbi 0x8,6
.dbline 193
; break;
L38:
L39:
.dbline 195
; }
; PORTA = ~ExChange(DISPLAY_CODE(CS));
lds R16,_CS
xcall _DISPLAY_CODE
xcall _ExChange
mov R2,R16
com R2
out 0x2,R2
.dbline -2
L35:
.dbline 0 ; func end
ld R21,y+
ld R20,y+
ld R0,y+
out 0x3f,R0
ld R31,y+
ld R30,y+
ld R27,y+
ld R26,y+
ld R25,y+
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\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
.dbfunc e TIMER2_COMP_ISR _TIMER2_COMP_ISR fV
.even
_TIMER2_COMP_ISR::
st -y,R2
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 201
; }
;
;
; #pragma interrupt_handler TIMER2_COMP_ISR:iv_TIMER2_COMP
; void TIMER2_COMP_ISR(void)
; {
.dbline 202
; if (!send_mark)
lds R2,_send_mark
tst R2
brne L44
X12:
.dbline 203
; {
.dbline 204
; send_time++;
lds R24,_send_time
subi R24,255 ; addi 1
sts _send_time,R24
.dbline 205
; if (send_time >= 100)
cpi R24,100
brlo L46
X13:
.dbline 206
; {
.dbline 207
; send_mark = TRUE;
ldi R24,1
sts _send_mark,R24
.dbline 208
; send_time = 0;
clr R2
sts _send_time,R2
.dbline 209
; }
L46:
.dbline 210
; }
L44:
.dbline 211
; if (!display_mark)
lds R2,_display_mark
tst R2
brne L48
X14:
.dbline 212
; {
.dbline 213
; display_time++;
lds R24,_display_time
subi R24,255 ; addi 1
sts _display_time,R24
.dbline 214
; if (display_time >= 25)
cpi R24,25
brlo L50
X15:
.dbline 215
; {
.dbline 216
; display_time = 0;
clr R2
sts _display_time,R2
.dbline 217
; display_mark = TRUE;
ldi R24,1
sts _display_mark,R24
.dbline 218
; }
L50:
.dbline 219
; }
L48:
.dbline -2
L43:
.dbline 0 ; func end
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R2,y+
reti
.dbend
.dbfunc e CHA_Init _CHA_Init fV
.even
_CHA_Init::
.dbline -1
.dbline 224
; }
;
;
; void CHA_Init(void)
; {
.dbline 225
; CHA++;
lds R24,_CHA
subi R24,255 ; addi 1
sts _CHA,R24
.dbline 226
; if (CHA >= 100)
lds R24,_CHA
cpi R24,100
brlo L53
X16:
.dbline 227
; CHA = 0;
clr R2
sts _CHA,R2
L53:
.dbline -2
L52:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; len -> R22
; i -> R20
.even
_main::
.dbline -1
.dbline 231
; }
;
; void main(void)
; {
.dbline 234
; uint8 i,len;
;
; CLI();
cli
.dbline 235
; PORT_Init();
xcall _PORT_Init
.dbline 236
; TIMER0_Init();
xcall _TIMER0_Init
.dbline 237
; TIMER2_Init();
xcall _TIMER2_Init
.dbline 238
; USART1_Init();
xcall _USART1_Init
.dbline 239
; TJA1040_DISABLE();
sbi 0xb,4
.dbline 240
; NOP();
nop
.dbline 241
; NOP();
nop
.dbline 242
; TJA1040_ENABLE();
cbi 0xb,4
.dbline 243
; NOP();
nop
.dbline 244
; NOP();
nop
.dbline 245
; CAN_Init();
xcall _CAN_Init
.dbline 246
; Watchdog_Init();
xcall _Watchdog_Init
.dbline 247
; SEI();
sei
xjmp L57
L56:
.dbline 284
; /*
; 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..............
; */
; while (1)
; {
.dbline 285
; CANPAGE = 0x00;
clr R2
sts 237,R2
.dbline 286
; if (CANSTMOB & (1 << RXOK))
lds R2,238
sbrs R2,5
rjmp L59
X17:
.dbline 287
; {
.dbline 288
; CANSTMOB &= ~(1 << RXOK);
lds R24,238
andi R24,223
sts 238,R24
.dbline 289
; for (i = 0 ; i < 16 ; i++)
clr R20
xjmp L64
L61:
.dbline 290
; rec_Buf[i] = 0x00;
ldi R24,<_rec_Buf
ldi R25,>_rec_Buf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
L62:
.dbline 289
inc R20
L64:
.dbline 289
cpi R20,16
brlo L61
X18:
.dbline 291
; rec_Buf[0] = CANIDT1;
lds R2,243
sts _rec_Buf,R2
.dbline 292
; rec_Buf[1] = CANIDT2;
lds R2,242
sts _rec_Buf+1,R2
.dbline 293
; rec_Buf[2] = CANIDT4;
lds R2,240
sts _rec_Buf+2,R2
.dbline 294
; if (rec_Buf[2] & 0x02)
sbrs R2,1
rjmp L67
X19:
.dbline 295
; rec_Buf[2] = 1; // remote frame
ldi R24,1
sts _rec_Buf+2,R24
xjmp L68
L67:
.dbline 297
; else
; rec_Buf[2] = 0; // data frame
clr R2
sts _rec_Buf+2,R2
L68:
.dbline 298
; len = CANCDMOB & 0x0F;
lds R22,239
andi R22,15
.dbline 299
; for (i = 0 ; i < len ; i++)
clr R20
xjmp L75
L72:
.dbline 300
; rec_Buf[3+i] = CANMSG;
ldi R24,<_rec_Buf+3
ldi R25,>_rec_Buf+3
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lds R2,250
std z+0,R2
L73:
.dbline 299
inc R20
L75:
.dbline 299
cp R20,R22
brlo L72
X20:
.dbline 301
; USART1_Begin_Send();
xcall _USART1_Begin_Send
.dbline 302
; CANCDMOB = 0x88;
ldi R24,136
sts 239,R24
.dbline 303
; }
L59:
.dbline 304
; CHA = CANGIT & 0x7F;
lds R24,218
andi R24,127
sts _CHA,R24
.dbline 307
; // DISPLAY_LED();
; // if (display_mark)
; {
.dbline 308
; display_mark = FALSE;
clr R2
sts _display_mark,R2
.dbline 309
; DISPLAY_Init(CHA);
lds R16,_CHA
clr R17
xcall _DISPLAY_Init
.dbline 310
; }
.dbline 311
; WDR();
wdr
.dbline 312
; }
L57:
.dbline 283
xjmp L56
X21:
.dbline -2
L55:
.dbline 0 ; func end
ret
.dbsym r len 22 c
.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 + -