BTFSS BLOFF ; cv51
BCF LIGHT2 ;
RETLW 0
BLIGHT BTFSC LIINV ; light invert? (PWRSRC)
GOTO FLI ;
BLI BTFSS FLOFF ; cv50
BCF LIGHT1 ;
BTFSS BLOFF ; cv51
BSF LIGHT2 ;
RETLW 0
NOLIGHT BTFSS FLOFF ; cv50
BCF LIGHT1 ;
BTFSS BLOFF ; cv51
BCF LIGHT2 ;
RETLW 0
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;....................................................................
FINDCV BCF NOCV ;
BCF ROMCV ;
XORLW (1-1) ; CV1
BTFSC STATUS,ZERO ;
RETLW CV1 ; Primary Adress
XORLW (1-1)^(2-1) ; CV2
BTFSC STATUS,ZERO ;
RETLW CV2 ; Vstart
XORLW (2-1)^(3-1) ; CV3
BTFSC STATUS,ZERO ;
RETLW CV3 ; Acceleration Rate
XORLW (3-1)^(4-1) ; CV4
BTFSC STATUS,ZERO ;
RETLW CV4 ; Deceleration Rate
XORLW (4-1)^(5-1) ; CV5
BTFSC STATUS,ZERO ;
RETLW CV5 ; Vhigh
XORLW (5-1)^(6-1) ; CV6
BTFSC STATUS,ZERO ;
RETLW CV6 ; Vmid
XORLW (6-1)^(17-1) ; CV17
BTFSC STATUS,ZERO ;
RETLW CV17 ; Extended Adress Low Byte
XORLW (17-1)^(18-1) ; CV18
BTFSC STATUS,ZERO ;
RETLW CV18 ; Extended Adress High Byte
XORLW (18-1)^(19-1) ; CV19
BTFSC STATUS,ZERO ;
RETLW CV19 ; Consist Adress
XORLW (19-1)^(29-1) ; CV29
BTFSC STATUS,ZERO ;
RETLW CV29 ; 0=DIR 1=14/28 2=PWSRC 3=ADVACK 4=SPEEDTAB 5=LADRE 6= 7=ACCDEC
XORLW (29-1)^(49-1) ; CV49
BTFSC STATUS,ZERO ;
RETLW CV49 ; Output F1-F8 to GP2
XORLW (49-1)^(50-1) ; CV50
BTFSC STATUS,ZERO ;
RETLW CV50 ; front light switch with F1-F8
XORLW (50-1)^(51-1) ; CV51
BTFSC STATUS,ZERO ;
RETLW CV51 ; back light switch with F1-F8
XORLW (51-1)^(55-1) ; CV55
BTFSC STATUS,ZERO ;
RETLW CV55 ; second Vhigh
XORLW (55-1)^(64-1) ; CV64
BTFSC STATUS,ZERO ;
RETLW CV64 ; configuration byte
BSF ROMCV ;
XORLW (64-1)^(7-1) ; CV7
BTFSC STATUS,ZERO ;
RETLW CV7 ; Version No
XORLW (7-1)^(8-1) ; CV8
BTFSC STATUS,ZERO ;
RETLW CV8 ; Manufacturer
BCF ROMCV ;
BSF NOCV ;
RETLW 0xFF ; no CV’s to program
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;....................................................................
PROG MOV F FSR,0 ;
ANDLW 00001111b ;
XORLW BT3 ;
BTFSS STATUS,ZERO ;
GOTO PROGREG ; 3 byte command
PROGOTM MOV F BT2,0 ;
CALL FINDCV ;
BTFSC NOCV ;
GOTO HOPP ;
BTFSC ROMCV ;
BTFSS BT1,3 ; write/verify bit
GOTO ROMNEXT ;
MOV WF MAPCV ;
MOV LW MAPCV ;
ROMNEXT BTFSS BT1,2 ;
GOTO BITMAN ; bit manipulation
BTFSS BT1,3 ; write/verify bit
GOTO EEVERI ;
;--------------------------------
EEPROG ANDLW 00001111b ;
MOV WF EEADDR ;
READ CALL READ_RANDOM ; *******************************
BTFSS PC_OFFSET,EE_OK ;(BTFSC STATUS,ZERO) ERROR?
GOTO READ
CLRF CONFIG
MOV F INDF,0 ;
XORWF EEDATA,0 ;
BTFSC STATUS,ZERO ;
BCF STATUS,SEITE ; auf ROM seite 0
BTFSC STATUS,ZERO ;
GOTO LOADREG ;
MOV F INDF,0 ;
MOV WF EEDATA ;
BTFSC PROGBIT ;
GOTO PROG3 ;
BSF PROGBIT ; 2x prog
GOTO PROGEX ;
PROG3 BTFSC PROGBT1 ;
GOTO EEIN ;
BSF PROGBT1 ; 3x prog
GOTO PROGEX ;
EEIN CALL WRITE_BYTE ; ********************************
BTFSS PC_OFFSET,EE_OK ;(BTFSC STATUS,ZERO) ERROR?
GOTO EEIN ;
CLRF CONFIG
BCF STATUS,SEITE ; auf ROM seite 0
BCF PROGBIT ;
BCF PROGBT1 ;
GOTO INIT ;
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;....................................................................
OLDACK MOV F BT1,0 ;------ for old DCC-Programmer ------
MOV WF INDF ; save loco adress
CLRW ; CV1
CLRF MAPCV ; for old acknowledge
GOTO OACK ;
EEVERI BTFSC ROMCV ;
GOTO RDROMCV ;
ANDLW 00001111b ;
OACK MOV WF EEADDR ;
CALL READ_RANDOM ; ********************************
CLRF CONFIG
MOV F INDF,0 ;
XORWF EEDATA,0 ;
VERIBK BTFSS STATUS,ZERO ;
BCF STATUS,SEITE ; to ROM page 0
BTFSS STATUS,ZERO ;
GOTO START ;
ACKNOW BTFSC ACKBIT ;
GOTO ACKNOW1 ;
BSF ACKBIT ; 2x verify
GOTO PROGEX ;
ACKNOW1 MOV LW 00110001b ; set FL/FR and motor on
MOV WF GPIO ;
LOOP MOV LW 9 ; 7x765uS (5355) 4,5,6,7 ok; 8 9 10 IB
MOV WF BT5 ;
OLOOP CLRF BT6 ; help register
CLRWDT ;
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
本文关键字:单片机 程序 玩具 PIC单片机,单片机-工控设备 - PIC单片机