ok perfetto sistemato
ho sistemato, adesso il servo oscilla con una rapidità che può essere modificata facilmente, adesso ho messo di 10 punti a passo.
piuttosto che l'istruzione di incremento meglio l'istruzione ADDLW, posso utilizzare anche il fattore uno come se fosse un incremento, oppure un numero oltre tutto questa istruzione modifica se è il caso il bit Z, quindi
LOOP
btfss INTCON,T0IF ; Controlla che non siano scaduti i 20 mS
GOTO $-1 ; se TMR0 < 20 mS allora vai INDIETRO
CALL SERVO ; altrimenti vai in MOVE_ALL
BTFSC DL,0 ; controlla se direz=0
GOTO MAIN2
MOVF ANGOLO ; SENSO ORARIO
ADDLW 10
BTFSC STATUS,Z
BSF DL,0 ; se si cambia direzione
MOVWF ANGOLO
bcf INTCON,T0IF ; reset T0IF bit
GOTO LOOP ; e torna a mainloop
MAIN2
MOVF ANGOLO ; SENSO ANTIORARIO
SUBLW 10
BTFSS STATUS,Z
BCF DL,0 ; se si cambia direzione
MOVWF ANGOLO
bcf INTCON,T0IF ; reset T0IF bit
GOTO LOOP ; e torna a mainloop
|