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

📄 can.c

📁 CAN数据发送程序
💻 C
📖 第 1 页 / 共 2 页
字号:
       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 + -