;Pavel Šimek
;světelný had
;je-li tlačítko v jedničce=> rotace doprava 
;je-li tlačítko v nule=> rotace doleva







;----------------------------------------------------------------------------------------------------------------------------------------------------------

LIST P=16F84
INCLUDE<P16F84.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _RC_OSC

;----------------------------------------------------------------------------------------------------------------------------------------------------------

PORTB    EQU      h'06'              ;nastavení PORTB
c1       EQU      h'20'              ;proměnné pro cykly
c2       EQU      h'21'
#DEFINE  SMER PORTA,0 		;startovní tlačítko
 

;-----------------------------------------------------------------------------------------------------------------------------------------------------------


BSF STATUS,RP0                          ;přepnutí do banky jedna - vté musím nastavit co bude vstup  a co výstup
MOVLW B'00000000'          		;do pracovního registru vložím hodnotu '00000011'
MOVWF TRISB				;obsah W registru přesunu do registru TRISB => všechny výstupní
MOVLW B'00000001'			;do pracovního registru vložím hodnotu  00000001
MOVWF TRISA				;obsah w registru přesunu do registru TRISA => nultý bit bude vstupní, zbylé výstupní
BCF STATUS,RP0        			;návrat zpět do banky 0

;-----------------------------------------------------------------------------------------------------------------------------------------------------------


MOVLW    B'00000001'		     ;posilam 00000001 do pracovniho(w) registru	       
         MOVWF    PORTB		     ;hodnotu W přesunu do PORTB
zacatek  
	 BTFSS SMER		     ;testuji testuji vstup na kerém mám připojené tlačítko(RPA0) , je-li v jedničce přeskočí jednu následující instrukci, (je-li vnule nepřeskočí)
	 RLF      PORTB,1            ;rotace registru doleva
         BTFSC SMER		     ;je-li v jedničce, nepřeskjočí následující intrtukci	
	 RRF      PORTB,1	     ;rotace registru doprava
	 CALL     cekej		     ;volání podprogramu cekej
         GOTO     zacatek	     ;nepodmíněný skok na začátek	



;-----------------------------------------------------------------------------------------------------------------------------------------------------------


cekej    MOVLW    255                ;podprogram čekání trvá asi 0.2s
         MOVWF    c2                 
wait2    MOVLW    255
         MOVWF    c1
wait1    DECFSZ   c1,1
         GOTO     wait1
         DECFSZ   c2,1
         GOTO     wait2
         RETURN                     ;návrtat z podprogramu čekání
	
 				
;-----------------------------------------------------------------------------------------------------------------------------------------------------------

END					;konec programu











