Hi. I'm trying to rotate a step-by-step motor 20 times to left and 20 times to right and on and on. I'm using a PIC 16F917. I tried to make a program, but it only rotates the motor to the left. I used 2 variables one to retain 20 and one to use like a contor. Please help me see what is wrong.
Rich (BB code):
#INCLUDE P16F917.INC
MPP EQU 20H
VFIX EQU 0x70
CBLOCK 0x20
VAR
ENDC
ORG 0000H
RESET: GOTO INIT
ORG 0004H
MAIN:
INCF VAR,W
GOTO RR
MOVLW VFIX
SUBWF VAR,W
BTFSS STATUS,Z
GOTO MAIN
MOVWF 0
MOVLW VAR
CALL_RL:
INCF VAR,W
GOTO RL
MOVLW VFIX
SUBWF VAR,W
BTFSS STATUS,Z
GOTO CALL_RL
MOVWF 0
MOVLW VAR
GOTO MAIN
RR: BCF PIR1,CCP1IF
RRF MPP,F
BCF MPP,7
BTFSC STATUS,C
BSF MPP,7
MOVF MPP,W
MOVWF PORTD
RETFIE
RL: BCF PIR1,CCP1IF
RLF MPP,F
BCF MPP,0
BTFSC STATUS,C
BSF MPP,0
MOVF MPP,W
MOVWF PORTD
RETFIE
INIT: MOVLW 20
MOVWF VFIX
MOVLW 0
MOVWF VAR
CLRF STATUS
MOVLW 88H
MOVWF MPP
PD_INI: CLRF PORTD
BSF STATUS,RP0
MOVLW 0FH
MOVWF TRISD
BCF STATUS,RP0
INTINI: MOVLW 0C0H
MOVWF INTCON
BSF STATUS,RP0
MOVLW 04H
BCF STATUS,RP0
CLRF PIR1
T1_INI: MOVLW 0AH
MOVWF T1CON
CLRF TMR1H
CLRF TMR1L
CCPINI: MOVLW 0BH
MOVWF CCP1CON
MOVLW 20H
MOVWF CCPR1H
CLRF CCPR1L
BSF T1CON,TMR1ON
RETURN
END
Attachments
-
1.3 KB Views: 29
Last edited by a moderator: