📄 f310kz4.29.asm
字号:
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@ CAN控制器程序 @
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SPI_RST:
MOV SPI0CN,#00h
MOV SPI0CKR,#0A0H
ORL SPI0CFG,#01110000b
ORL SPI0CN,#01H
RET
CAN_RST0: ;CAN初始化子程序 ;CAN寄承器初始化
NOP
NOP
CLR P3.2
LCALL TDELAY1MS
LCALL TDELAY1MS
LCALL TDELAY1MS
SETB P3.2
LCALL TDELAY1MS
CLR P1.6
CLR SPIF
MOV SPI0DAT,#0C0H ; 使can内部寄存器复位为出厂设置并进入配置模式 ;进入配置模式
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
nop
setb P1.6
MOV B,#80H
ACALL SET_REQOP
ACALL READY_STAT
CJNE A,#80H,CAN_RST0
CLR P1.6
MOV SPI0DAT,#02H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#28
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#02H ;CNF3
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#90H ;CNF2
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#07H ;CNF1
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
LCALL TDELAY1MS
CLR P1.6
MOV SPI0DAT,#02H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0A0H;RXF0SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00;RXF0SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF0EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF0EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF1SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00;RXF1SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF1EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF1EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF2SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;RXF2SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF2EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF2EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
LCALL TDELAY1MS
CLR P1.6
MOV SPI0DAT,#02H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#10H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF3SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;RXF3SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF3EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF3EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF4SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;RXF4SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF4EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF4EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF5SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;RXF5SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF5EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXF5EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
LCALL TDELAY1MS
CLR P1.6
MOV SPI0DAT,#02H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#20H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXM0SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;RXM0SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXM0EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXM0EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;RXM1SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;RXM1SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXM1EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;RXM1EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
LCALL TDELAY1MS
CLR P1.6
MOV SPI0DAT,#02H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#2BH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#10000111B
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
LCALL TDELAY1MS
CAN_RST1:
MOV B,#0
ACALL SET_REQOP
ACALL READY_STAT
CJNE A,#0,CAN_RST1
RET
READY_STAT:
CLR P1.6
MOV SPI0DAT,#03H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV A,SPI0DAT
SETB P1.6
RET
SET_REQOP:
CLR P1.6
MOV SPI0DAT,#05H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,B
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
RET
CAN_TEST0:
MOV B,#40H
ACALL SET_REQOP
ACALL READY_STAT
CJNE A,#40H,CAN_TEST0
LCALL TDELAY1MS
CLR P1.6
MOV SPI0DAT,#02H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#30H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#03H;TXB0CTRL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0A1H;TXB0SIDH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;TXB0SIDL
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;TXB00EID0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#0FFH;TXB0EID8
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#08;TXB0DLC
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H;D0
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#01H;D1
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#02H;D2
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#03H;D3
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#04H;D4
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#05H;D5
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#06H;D6
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#07H;D7
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
LCALL TDELAY1MS
CLR P1.6
MOV SPI0DAT,#81H;D7
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
MOV NUM,#10
CAN_TEST_LOOP1:
MOV R1,#08H
MOV B,#0
LCALL TDELAY1MS
MOV R0,#87H
CAN_TEST_LOOP0:
CLR P1.6
MOV A,@R0
CJNE A,B,CAN_TEST_LOOP2
INC R0
INC B
DJNZ R1,CAN_TEST_LOOP0
MOV CAN_TEST,#1
SETB P1.6
CAN_TEST_LOOP3:
ACALL CAN_RST0
RET
CAN_TEST_LOOP2:
SETB P1.6
LCALL TDELAY1MS
DJNZ NUM,CAN_TEST_LOOP1
MOV CAN_TEST,#0
RET
CLR_INT:
CLR P1.6
MOV SPI0DAT,#02H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#2CH
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,#00H
JNB TXBMT,$
JNB SPIF,$
CLR SPIF
SETB P1.6
RET
CAN_ISR:
PUSH ACC
PUSH PSW
CLR EA
MOV AL,R0
MOV AH,R1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -