Progetto per
PIC16c57 : contatore controllato da due ingressi : Clear e Jump; dispone di due bit d'uscita. Se il segnale Clear va ad 1, l'uscita deve azzerarsi e ripartire, se va ad 1 Jump, l'uscita deve portarsi a due stati successivi a quello attuale.
Il segnale Clear è predominante su Jump.
list p=16c57
#include__CONFIG _XT_OSC & _CP_OFF & _WDT_OFF ; portA(0) = Clock; portA(1) = Clear; portA(2)= Jump ; portB(0) = Out1 portB(1) = Out2
CK_PREC EQU 0x08
TRIS PORTB
MOVLW b'111' TRIS PORTA ; 3 ingressi
LOOP BTFSC CK_PREC,0 GOTO UPDATE GOTO MAIN UPDATE MOVF PORTA,CK_PREC GOTO LOOP MAIN BTFSC PORTA,1 ; CLEAR = ? GOTO CLEAR ; 1
BTFSC PORTA,2 ; JUMP = ?
GOTO JUMP INCF CONT,F GOTO CHECK CLEAR
clrf GOTO CONT RELEASE
JUMP MOVLW 2 CONT ADDWF, F GOTO
CHECK CHECK
MOVLW 4
SUBWF CONT, W
btfsc STATUS, Z; cont = 4?
btfsc STATUS, Z; cont = 4?
SET_ONE
GOTO MOVLW 5SUBWF CONT, W
btfsc STATUS, Z GOTO
SET_TWO PRESS
MOVF CONT, PORTB GOTO LOOP
SET_ONE
MOVLW 1
MOVF W,
GOTO CONT RELEASE
SET_TWO
MOVLW 2
MOVF W, CONT
GOTO END RELEASE
MPLAB
Other assemblers PIC