 LIST      p=16F88            ; nastavení typu procesoru 
     #INCLUDE   <P16F88.INC>      ; definice proměnných pro tento procesor 
   errorlevel -302 

; === NASTAVENÍ KONFIGURAČNÍHO SLOVA === 
 __CONFIG	_CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
		__CONFIG	_CONFIG2, _IESO_OFF & _FCMEN_OFF     


RAM     	EQU     	H'20'

	CBLOCK  RAM+0	; zacatek vseob.registru 20h 
	TMP0
	TMP1
	TMP2
	ENDC
				

; === PROGRAM === 

RESET   ORG      0x0000      ; začátek programu na adrese 0000h 

; Inicializace portů 

   BANKSEL ANSEL 
   CLRF   ANSEL 
;   CLRF   ANSELH 

   BANKSEL   PORTB 
   CLRF   PORTB 
   MOVLW   b'00000001'	;pro pouziti PORTB sviti jedna LED 
   MOVWF   PORTB 
   BANKSEL   TRISB 
   MOVLW   b'11000000'	;na portu jedna vstupni pouzito7 
   MOVWF   TRISB 

   BANKSEL   TRISA 
   MOVLW   b'00001100' 
   MOVWF   TRISA 
   BANKSEL   PORTA 

#define tl_leva PORTA,2 
#define tl_prava PORTA,3 

   goto start 
;.............................................................................................

pauza 
;cekaci smycka 
;Delay 197633 cycles
        MOVLW 0x00  ;0 DEC
        MOVWF TMP1
        MOVLW 0x00  ;0 DEC
        MOVWF TMP0
		DECFSZ TMP0,F
        GOTO $-1
        DECFSZ TMP1,F
        GOTO $-5
 return 

;.............................................................................................
;.............................................................................................
ZAKMITY
	MOVLW   .150	;POCET SKENOVANI PORTU PROTI ZAKMITUM
	MOVWF	TMP1

	MOVF	PORTA,W	;PRVOTNI NACTENI PORTU A PRO SCAN TLACITEK
	IORLW	B'11110011'	;MASKOVANI PINU, KTERE NEJSOU VYUZITY JAKO TLACITKA
	MOVWF	TMP0
;.............................................................................................
ZAKMITY1
	MOVF	PORTA,W	;PRVOTNI NACTENI PORTU A PRO SCAN TLACITEK
	IORLW	B'11110011'	;MASKOVANI PINU, KTERE NEJSOU VYUZITY JAKO TLACITKA
	XORWF	TMP0,W	;PROVED OPERACI A VYSLEDEK ULOZ DO W
	BTFSS	STATUS,Z;TEST SHODNOSTI NASKENOVANI PORTU
	GOTO	ZAKMITY	;NASKENOVANI NEBYLO SHODNE 
        DECFSZ	TMP1,F	;ODECTI JEDNA OD POCITADLA TESTOVANI ODSKOKU
	GOTO	ZAKMITY1
	RETURN		;NAVRAT
;.............................................................................................
;.............................................................................................

    
led_leva
   call ZAKMITY
   btfsc tl_leva 
   return 

	btfss	PORTB,5	;test stavu vystupmiho pinu 
   rlf PORTB,f 
   call pauza 
   return 
;.............................................................................................
    
led_prava
   call ZAKMITY
   btfsc tl_prava 
   return 

	btfss	PORTB,0	;test stavu vystupniho pinu
   rrf PORTB,f 
   call pauza 
   return 
;.............................................................................................
    
start
	bcf	STATUS,C	;nulovani carry bitu/jinak sviti dve LED 
   btfss tl_leva 
   call led_leva 
   btfss tl_prava 
   call led_prava  
   goto start 
;.............................................................................................

    END