📄 motor_28.asm
字号:
MOVF FSR,0 ; EEADDR
GOTO EEPROG ; write complete byte
;--------------------------------
VBIT ANDWF INDF,0 ;
BTFSC STATUS,ZERO ;
GOTO BITCLR ;
NOP ;
BITSET BTFSC BT3,3 ;
GOTO ACKNOW ; =1
GOTO HOPP ;
BITCLR BTFSS BT3,3 ;
GOTO ACKNOW ; =0
GOTO HOPP ;
;--------------------------------
BITPOS ADDWF PC ;
RETLW 00000001b ; 0
RETLW 00000010b ; 1
RETLW 00000100b ; 2
RETLW 00001000b ; 3
RETLW 00010000b ; 4
RETLW 00100000b ; 5
RETLW 01000000b ; 6
RETLW 10000000b ; 7
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;.....................................................................
DECCON BTFSC INDF,4 ; 000>0<CCCD
GOTO CONCON ; 0001 consist control
RRF INDF,0 ; 0000CCC>D< moved to carry
ANDLW 00000111b ;
ADDWF PC ;
GOTO RESET ; 000 reset / hard reset
GOTO HOPP ;FTEST ; 001 factory test instruction
GOTO HOPP ; 010
GOTO HOPP ;ADVACK ; 011 advance acknowl. CV29,3
GOTO HOPP ; 100
GOTO HOPP ;ADVADR ; 101 advance adressing CV29,5
GOTO HOPP ; 110
GOTO HOPP ;ACKREQ ; 111 acknowledge request
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;.....................................................................
LIGHT BTFSS INDF,4 ; 1
GOTO NOLIGHT ; 2-3
BTFSC DIR ; direction invert? 3
GOTO BLIGHT ; 4-5
NOP ; 5
FLIGHT BTFSC LIINV ; light invert? (PWRSRC) 6
GOTO BLI ; 7-8
FLI BSF GPIOOUT,LIGHT1 ; 8
BCF GPIOOUT,LIGHT2 ; 9
RETLW 0 ; 10-11
BLIGHT BTFSC LIINV ; light invert? (PWRSRC) 6
GOTO FLI ; 7-8
BLI BCF GPIOOUT,LIGHT1 ; 8
BSF GPIOOUT,LIGHT2 ; 9
RETLW 0 ; 10-11
NOLIGHT BCF GPIOOUT,LIGHT1 ; 4
BCF GPIOOUT,LIGHT2 ; 5
NOP ; 6
NOP ; 7
NOP ; 8
NOP ; 9
RETLW 0 ; 10-11
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;....................................................................
FINDCV BCF NOCV ;
BCF ROMCV ;
XORLW (1-1) ; CV1
BTFSC STATUS,ZERO ;
RETLW CV1 ; Primary Adress
XORLW (1-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)^(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 MOVF FSR,0 ;
ANDLW 00001111b ;
XORLW BT3 ;
BTFSS STATUS,ZERO ;
GOTO PROGREG ; 3 byte command
PROGOTM MOVF BT2,0 ;
CALL FINDCV ;
BTFSC NOCV ;
GOTO HOPP ;
BTFSC ROMCV ;
BTFSS BT1,3 ; write/verify bit
GOTO ROMNEXT ;
MOVWF MAPCV ;
MOVLW MAPCV ;
ROMNEXT BTFSS BT1,2 ;
GOTO BITMAN ; bit manipulation
BTFSS BT1,3 ; write/verify bit
GOTO EEVERI ;
;--------------------------------
EEPROG ANDLW 00001111b ;
MOVWF EEADDR ;
READ CALL READ_RANDOM ;
BTFSS PC_OFFSET,EE_OK ;(BTFSC STATUS,ZERO) ERROR?
GOTO READ
CLRF CONFIG
MOVF INDF,0 ;
XORWF EEDATA,0 ;
BTFSC STATUS,ZERO ;
BCF STATUS,SEITE ; auf ROM seite 0
BTFSC STATUS,ZERO ;
GOTO LOADREG ;
MOVF INDF,0 ;
MOVWF EEDATA ;
BTFSC PROGBIT ;
GOTO EEIN ;
BSF PROGBIT ; 2x 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 ;
GOTO INIT ;
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;....................................................................
OLDACK MOVF BT1,0 ;------ for old DCC-Programmer ------
MOVWF INDF ; save loco adress
CLRW ; CV1
CLRF MAPCV ; for old acknowledge
GOTO OACK ;
EEVERI BTFSC ROMCV ;
GOTO RDROMCV ;
ANDLW 00001111b ;
OACK MOVWF EEADDR ;
READ2 CALL READ_RANDOM ;
BTFSS PC_OFFSET,EE_OK ;(BTFSC STATUS,ZERO) ERROR?
GOTO READ2
CLRF CONFIG
MOVF 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 MOVLW MOTOR1|(1<<LIGHT1)|(1<<LIGHT2) ; set FL/FR and motor on
MOVWF GPIO ;
LOOP MOVLW 5 ; 7x765uS (5355)
MOVWF BT5 ;
OLOOP CLRF BT6 ; help register
ILOOP INCFSZ BT6,1 ; 765uS ON 1
GOTO ILOOP ; 2-3
DECFSZ BT5,1 ;
GOTO OLOOP ;
CLRF GPIO ;
BCF ACKBIT ;
BCF FSR,5 ;
BCF STATUS,SEITE ; to ROM page 0
GOTO LOADREG ;
RDROMCV XORWF INDF,0 ;
GOTO VERIBK ;
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;....................................................................
PROGREG MOVF BT1,0 ; CV5=CV29
XORLW 01111101b ; reg6
ANDLW 11110111b
BTFSC STATUS,ZERO ;
GOTO REG6 ;
XORLW (01111101b)^(01111100b) ; reg5
BTFSC STATUS,ZERO ;
GOTO REG5 ;
MOVF BT1,0 ;
ANDLW 00000111b ; lower 3bit
ADDWF MAPCV,0 ;
CALL FINDCV ;
BTFSC NOCV ;
GOTO HOPP ;
PREG BTFSS BT1,3 ;
GOTO EEVERI ;
GOTO EEPROG ;
REG6 DECF BT2,1 ;
BCF STATUS,CARRY ;
RLF BT2,1 ;
RLF BT2,1 ;
REG5 MOVF BT1,0 ;
ANDLW 00000111b ; lower 3bit
GOTO PREG ;
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;....................................................................
FTION1 CALL PWMTAB1 ; 3.-3
BTFSS INDF,4 ; 101>1<FFFF 4
GOTO FTION2 ; 1010xxxx 5
SWAPF INDF,0 ; 6
ANDLW 11110000b ; 7
BCF FSR,5 ; 8
IORWF F1F8SET,1 ; xxxx00X0 9
XORLW 0x0F ; 10
GOTO FT2 ; 11-12
;--------------------------------
FTION CALL PWMTAB1 ; 3.-3
CALL LIGHT ; 4
BTFSC INDF,4 ; 100>L<FFFF 28 speed step 5
BSF FS28 ; automatic detection 6
FT1 MOVF INDF,0 ; 7
ANDLW 00001111b ; 1111xxXx 8
BCF FSR,5 ; 9
IORWF F1F8SET,1 ; xxxx00X0 10
XORLW 0xF0 ; 11
NOP ; 12
FT2 ANDWF F1F8SET,0 ; 13
MOVWF F1F8SET ; 14
MOVWF BT6 ; save for switch to 2nd page 15
BSF FSR,5 ; 16
;--------------------------------
NOP ; 17
;.PWM2................................................................
BCF FSR,5 ; 18
MOVF PWM2,0 ; 19
MOVWF GPIO ; 20
BSF FSR,5 ; 21
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MOVF BT6,0 ; 22
ANDWF CV49,0 ; F1F8->GP3 23
BTFSC STATUS,ZERO ; 24
GOTO FOFF ; 25-26
NOP ; 26
FON BTFSC FLACKON ; 27
BSF FLACKER ; 28
BSF GPIOOUT,LED ; 1.
GOTO FT50 ; 2.-3.
FOFF BTFSC LITAUTO ; 27
GOTO FT50 ; 28
BTFSC FLACKON ; 1.
BCF FLACKER ; 2.
BCF GPIOOUT,LED ; 3.
;--------------------------------
FT50 CALL PWMTAB1 ; 3.-3
MOVF BT6,0 ; 4
ANDWF CV50,0 ; 5
BTFSC STATUS,ZERO ; 6
GOTO NXFT50A ; 7-8
BSF REDLT ; 8
BTFSC RDLTON ; 9
GOTO FT51 ; 10-11
BTFSC RANGIER ; low activ 11
GOTO NXFT50 ; 12-13
BSF GPIOOUT,LIGHT2 ; 13
NXFT50 BSF GPIOOUT,LIGHT1 ; 14
NOP ; 15
GOTO FT51 ; 16-17
NXFT50A GOTO $+1 ; 9-10
GOTO $+1 ; 11-12
GOTO $+1 ; 13-14
BTFSC RANGIER ; low activ 15
BCF GPIOOUT,LIGHT1 ; 16
BCF REDLT ; 17
;--------------------------------
;.PWM2................................................................
FT51 BCF FSR,5 ; 18
MOVF PWM2,0 ; 19
MOVWF GPIO ; 20
BSF FSR,5 ; 21
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MOVF BT6,0 ; 22
ANDWF CV51,0 ; 23
BTFSC STATUS,ZERO ; 24
GOTO NXFT51 ; 25-26
BTFSC SPEED2 ; low activ 26
BSF GPIOOUT,LIGHT2 ; 27
BTFSS SPEED2 ; low activ 28
BSF FLAGS2 ; 1.
GOTO HOPP3 ; 2.-3.
NXFT51 BTFSC SPEED2 ; low activ 27
BCF GPIOOUT,LIGHT2 ; 28
BCF FLAGS2 ; 1.
GOTO HOPP3 ; 2.-3.
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;.....................................................................
FORWARD CALL PWMTAB1 ; 3.-3
BCF DIR ; 4
GOTO SPEED ; 5-6
REVERSE CALL PWMTAB1 ; 3.-3
BSF DIR ; 4
NOP ; 5
NOP ; 6
SPEED MOVF GPIOOUT,0 ;---------- Direction --------- 7
ANDLW (255-(MOTOR1|MOTOR2)) ;11111100b ; Motor out = 0 8
BTFSC DIR ; 9
IORLW MOTOR1 ; forward 10
BTFSS DIR ; 11
IORLW MOTOR2 ; reverse 12
BTFSC CV29,0 ; CV29,0 (DIR) invert? 13
XORLW (MOTOR1|MOTOR2) ; invert Motor out 14
BTFSC CV19,7 ; CV19,7 (DIR) invert? 15
XORLW (MOTOR1|MOTOR2) ; invert Motor out 16
MOVWF GPIOOUT ;------------------------------ 17
;--------------------------------------------------------------------
;.PWM2................................................................
BCF FSR,5 ; 18
MOVF PWM2,0 ; 19
MOVWF GPIO ; 20
BSF FSR,5 ; 21
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
BCF FS126 ; 22
RLF INDF,0 ; 01DSSSSS 23
ANDLW 00011110b ; xx04321x 24
MOVWF SOLL ; 1D04321x 25
BTFSC INDF,4 ; 01D>S<SSSS 26
BSF SOLL,0 ; mov pos.4 to pos.0 27
;........................ Arnold Digital ............................
BTFSS FS28 ; 14/28 Speed? 28
BCF SOLL,0 ; <- 14 Speed 1.
NOP ; 2.
;.....................................................................
CALL PWMTAB1 ; 3.-3
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
BTFSS FS28 ; 14/28 Speed? 4
CALL LIGHT ; 5-6 (1-11)
;^^^^^^^^^^^^^^^^^^^^^^^^ Arnold Digital ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;.PWM2................................................................
BCF FSR,5 ; 18
MOVF PWM2,0 ; 19
MOVWF GPIO ; 20
BSF FSR,5 ; 21
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GOTO HOPP ; 22-23
;--------------------------------
;.....................................................................
CONCON MOVF BT3,0 ; 55
MOVWF CV19 ; 56
MOVF INDF,0 ; 57
XORLW 00010010b ; 58
BTFSC STATUS,ZERO ; 59
BCF CV19,7 ; 60
XORLW (00010010b)^(00010011b); 61
BTFSC STATUS,ZERO ; 62
BSF CV19,7 ; 63
MOVLW CV19 ; 64
MOVWF INDF ; 65
MOVF CV19,0 ; 66
GOTO EEPROG ; 67-68
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;.....................................................................
ADVAN
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RESET
FTION2 ; 57
TELNEW ; 52
HOPP NOP ; 24
GOTO $+1 ; 25-26
GOTO $+1 ; 27-28
GOTO $+1 ; 1.-2.
;.....................................................................
HOPP3 CALL PWMTAB1 ; 3.-3
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GOTO $+1 ; 4-5
GOTO $+1 ; 6-7
NOP ; 8
BCF PROGBIT ; 9
BCF ACKBIT ; 10
PROGEX BCF STATUS,SEITE ; 11
BCF FSR,5 ; 12
GOTO START ; 13-14
;********************************************************************
ORG 03FFh
MOVLW 0x70 ; f黵 OSCCAL
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -