📄 can.c
字号:
GOTO TIAOCHU
ZD1TCTF
MOVF RXB0EIDL,W
SUBLW 0X24 ;
BTFSS STATUS,Z ;命令字为24则停止发停车警报(后运)
GOTO DIANDONG1
BCF ZD1QC,1
;BSF TFZD1BJ,1
BCF PORTB,7
BSF PORTB,4
CLRF XHCS2
GOTO TIAOCHU
DIANDONG1 ;2007.6.7改动(起始) 《目的:加点动》
MOVF RXB0EIDL,W
SUBLW 0X25 ;
BTFSS STATUS,Z ;命令字为25则为点动启车(前运)
GOTO DIANDONG2
CLRWDT
BCF JSBZW,0
BSF INTCON,GIE ;总中断使能
;DD1 ;点动(前运)
;CLRWDT
;BTFSC PORTB,0
;GOTO DD1
;CALL D10US
;BTFSC PORTB,0
GOTO DD1
;CALL FSZD0TCJB ;发送前运停车警报
;GOTO TIAOCHU
DIANDONG2
MOVF RXB0EIDL,W
SUBLW 0X26 ;
BTFSS STATUS,Z ;命令字为26则为点动停车(前运)
GOTO DIANDONG3
NOP ;由于一定会先接收到22(停前运)而停车了,所以此处暂不处理
GOTO TIAOCHU ;用NOP过渡,为今后添加功能保留此命令字。
DIANDONG3
MOVF RXB0EIDL,W
SUBLW 0X27 ;
BTFSS STATUS,Z ;命令字为27则为点动启车(后运)
GOTO DIANDONG4
CLRWDT
BCF JSBZW,0
BSF INTCON,GIE ;总中断使能
;DD2 ;点动(后运)
;CLRWDT
;BTFSC PORTB,1
;GOTO DD2
;CALL D10US
;BTFSC PORTB,1
GOTO DD2
;CALL FSZD1TCJB ;发送后运停车警报
;GOTO TIAOCHU
DIANDONG4
MOVF RXB0EIDL,W
SUBLW 0X28 ;
BTFSS STATUS,Z ;命令字为28则为点动停车(后运)
GOTO TIAOCHU
NOP ;由于一定会先接收到24(停后运)而停车了,所以此处暂不处理
GOTO TIAOCHU ;用NOP过渡,为今后添加功能保留此命令字。
;2007.6.7改动(结束)
TIAO111
CLRWDT
BCF ZD0QC,0
CLRF XHCS1
BCF PORTB,5
BSF PORTB,6
CALL D200MS
BCF PORTB,6
CALL D200MS
BSF PORTB,6
CALL D200MS
BCF PORTB,6
CALL D200MS
BSF PORTB,6
GOTO TIAOCHU
TIAO222
CLRWDT
BCF ZD1QC,0
CLRF XHCS2
BCF PORTB,7
BSF PORTB,4
CALL D200MS
BCF PORTB,4
CALL D200MS
BSF PORTB,4
CALL D200MS
BCF PORTB,4
CALL D200MS
BSF PORTB,4
GOTO TIAOCHU
TIAOCHU
CLRWDT
BCF JSBZW,0
BSF INTCON,GIE ;总中断使能
RETURN
;**************************发送中断0启车警报子程序**************************************
FSZD0QCJB
BCF INTCON,GIE ;关总中断使能
;BTFSC TFZD0BJ,0 ;如果主机返回停发信号则停发
;GOTO TZFS1
CALL D50MS
INCF QQY
MOVF QQY,0
SUBLW 0X10
BTFSS STATUS,Z
GOTO TZFS1
CLRF QQY
MOVLW 21H
MOVWF TXB0EIDL
CALL FSKZXX
;BCF TFZD0BJ,0
TZFS1
;BCF TFZD0BJ,1 ;清停车标志位
;BCF ZD0QC,0
;BCF ZD0QC,1 ;避免同时发送启/停车信号而冲突
BSF INTCON,GIE ;总中断使能
RETURN
;**************************发送中断0停车警报子程序**************************************
FSZD0TCJB
BCF INTCON,GIE ;关总中断使能
;BTFSC TFZD0BJ,1 ;如果主机返回停发信号则停发
;GOTO TZFS2
CALL D10MS
INCF TQY
MOVF TQY,0
SUBLW 0X10
BTFSS STATUS,Z
GOTO TZFS2
CLRF TQY
MOVLW 22H
MOVWF TXB0EIDL
CALL FSKZXX
;BCF TFZD0BJ,1
TZFS2
;BCF TFZD0BJ,0 ;清启车标志位
;BCF ZD0QC,1
;BCF ZD0QC,0 ;避免同时发送启/停车信号而冲突
BSF INTCON,GIE ;总中断使能
RETURN
;**************************发送中断1启车警报子程序**************************************
FSZD1QCJB
BCF INTCON,GIE ;关总中断使能
;BTFSC TFZD1BJ,0 ;如果主机返回停发信号则停发
;GOTO TZFS3
CALL D50MS
INCF QHY
MOVF QHY,0
SUBLW 0X10
BTFSS STATUS,Z
GOTO TZFS3
CLRF QHY
MOVLW 23H
MOVWF TXB0EIDL
CALL FSKZXX
;BCF TFZD1BJ,0
TZFS3
;BCF TFZD1BJ,1 ;清停车标志位
;BCF ZD1QC,0
;BCF ZD1QC,1 ;避免同时发送启/停车信号而冲突
BSF INTCON,GIE ;总中断使能
RETURN
;**************************发送中断1停车警报子程序**************************************
FSZD1TCJB
BCF INTCON,GIE ;关总中断使能
;BTFSC TFZD1BJ,1 ;如果主机返回停发信号则停发
;GOTO TZFS4
CALL D10MS
INCF THY
MOVF THY,0
SUBLW 0X10
BTFSS STATUS,Z
GOTO TZFS4
CLRF THY
MOVLW 24H
MOVWF TXB0EIDL
CALL FSKZXX
;BCF ZD1QC,1
;BCF TFZD1BJ,1
TZFS4
;BCF TFZD1BJ,0 ;清启车标志位
;BCF ZD1QC,0 ;避免同时发送启/停车信号而冲突
BSF INTCON,GIE ;总中断使能
RETURN
;****************************发送控制信息子程序*****************************************
FSKZXX
MOVLW 00H ;
MOVWF CZS1
RLNCF CZS1
RLNCF CZS1
RLNCF CZS1
MOVLW 0F8H
ANDWF CZS1,1
MOVLW 0X11 ;
MOVWF CZS2
RRNCF CZS2
RRNCF CZS2
RRNCF CZS2
RRNCF CZS2
RRNCF CZS2
MOVLW 07H
ANDWF CZS2,1
MOVF CZS2,W
ADDWF CZS1,1
MOVFF CZS1,TXB0SIDH
MOVLW 0X11 ;
MOVWF CZS2
MOVLW 03H
ANDWF CZS2,1
MOVLW 0X11 ;
MOVWF CZS1
RLNCF CZS1
RLNCF CZS1
RLNCF CZS1
MOVLW 0E0H
ANDWF CZS1,1
MOVF CZS1,W
ADDWF CZS2,1
BSF CZS2,3
MOVFF CZS2,TXB0SIDL
MOVLW 09H ;
MOVWF TXB0EIDH
movlw 0X99 ;
movwf TXB0D0 ;
movlw 0X88 ;
movwf TXB0D1 ;
movlw 0X77 ;
movwf TXB0D2 ;
movlw 0X66 ;
movwf TXB0D3 ;
movlw 0X55 ;
movwf TXB0D4 ;
movlw 0X44 ;
movwf TXB0D5 ;
movlw 0X33 ;
movwf TXB0D6 ;
movlw 0X22 ;
movwf TXB0D7 ;
BSF TXB0CON,TXREQ ;请求发送,TXREQ=1
WAITEKZ
CLRWDT
BTFSS PIR3,TXB0IF ;等待发送完成
GOTO WAITEKZ
BCF PIR3,TXB0IF ;
RETURN
;********************* 10us延时 ******************************
D10US:
movlw 01h ;(1)循环变量初始值2
movwf K ;(1)经过W送n
loopy1:
decfsz K,1 ;(1\2)
goto loopy1 ;(2)
return ;(2)
;********************* 10ms延时 ******************************
D10MS:
movlw 65h ;
movwf M ;
nop ;(1)
nop ;(1)
nop ;(1)
nop ;(1)
nop ;(1)
nop ;(1)
nop ;(1)
nop ;(1)
loopy2:
nop ;(1)
nop ;(1)
nop ;(1)
movlw 34h ;
movwf K ;
loopy3:
decfsz K,1 ;
goto loopy3 ;
decfsz M,1 ;
goto loopy2 ;
return
;********************* 50ms延时 ******************************
D50MS:
movlw 5eh ;
movwf M ;
loopy4:
movlw 0c8h ;
movwf K ;
loopy5:
decfsz K,1 ;
goto loopy5 ;
decfsz M,1 ;
goto loopy4 ;
return
;********************* 200ms延时 ******************************
D200MS:
movlw 04h ;
movwf Q ;
loopy8
movlw 5eh ;
movwf M ;
loopy6:
movlw 0c8h ;
movwf K ;
loopy7:
decfsz K,1 ;
goto loopy7 ;
decfsz M,1 ;
goto loopy6 ;
decfsz Q,1 ;
goto loopy8 ;
return
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -