LIST P=16F84
#include P16F84.inc
__CONFIG _CP_OFF & _XT_OSC & _WDT_OFF
BSF STATUS ,RP0 ;schakel naar andere geheugenbank
CLRF TRISB ;alle bits van PORTB uitgang
BCF STATUS ,RP0 ;schakel geheugenbank weer terug
CLRF PORTB ;alle bits PORTB op 0
SETC ;zet carry=1 (hier wordt een bit klaargezet dat straks in PORTB geschoven wordt)
LEFT RLF PORTB ,F ;schuif alle bits van PORTB naar links
CALL WAIT ;wacht
BTFSS PORTB ,7 ;kijk of het laatste bit van PORTB 1 is.
GOTO LEFT ;zolang laatste bit van PORTB nog niet 1 is, blijf linksom schuiven
RIGHT RRF PORTB ,F ;schuif alle bits van PORTB naar rechts
CALL WAIT ;wacht
BTFSS PORTB ,0 ;kijk of het eerste bit van PORTB 1 is.
GOTO RIGHT ;zolang het eerste bit van PORTB nog niet 1 is, blijf rechtsom schuiven
GOTO LEFT ;als het eerste bit van PORTB wel 1 is ga dan weer linksom schuiven
WAIT MOVLW 0x00 ;in deze routine wordt gewacht...
MOVWF 0x0C
MOVLW 0x00
MOVWF 0x0D
WT DECFSZ 0x0D ,F
GOTO WT
DECFSZ 0x0C ,F
GOTO WT
RETURN ;klaar met wachten?... keer terug naar het programma
END
|