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

📄 f310kz4.29.asm

📁 由C8051F310单片机的 CAN控制器程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@         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 + -