; KONTROLA FUNKCNOSTI VSECH VYSTUPNICH PINU S PIC16F877
; Verze programu:  1.0
; Obvod: PIC16F877, X_TAL=20MHz
;*******************************************************************************************************
        list p=16F877, R=DEC
	include <P16F877.INC>
	ERRORLEVEL      -302    	; VYNECH HLASENI C.302 V BUILD RESULTS - BANK WARNING
	ERRORLEVEL      -306    	; VYNECH HLASENI C.306 V BUILD RESULTS - Crossing page boundary

RAM		EQU	020h	; prvni adresa pameti RAM v BANCE 0 je 20h  a posledni je 7Fh  - 96 bajtù
                                ; prvni adresa pameti RAM v BANCE 1 je A0h  a posledni je EFh  - 80 bajtù
                                ; prvni adresa pameti RAM v BANCE 2 je 110h a posledni je 16Fh - 96 bajtù
                                ; prvni adresa pameti RAM v BANCE 3 je 190h a posledni je 1EFh - 96 bajtù
;**********************************************************************************************************************
TMP0		EQU	RAM+04	; pomocny registr
TMP1		EQU	RAM+05	; pomocny registr
TMP2		EQU	RAM+06	; pomocny registr
TMP3		EQU	RAM+07	; pomocny registr
TMP4		EQU	RAM+08	; pomocny registr
TMP5		EQU	RAM	; pomocny registr
;**********************************************************************************************************************
;	org	0x2007		; adresa konfiguracniho slova PIC16F877
	__CONFIG 0x3D3A
;******************** Nastavení dat v EEPROM  *************************************************************************
; 00h - 4Fh - bajty pro vlastni a CZ znaky v LCD (8bytu=1znak)
; 50h - 7Fh - bajty pro uložení hodnot nastavených v menu
; 80h - A7h - bajty pro ROM kody cidel

	org	0x2100		; tabulka v pameti EEPROM (256 bajtu)

	de	0x02, 0x04, 0x1E, 0x01, 0x0F, 0x11, 0x0F, 0x00	; znak0  00h 	á          ( 00h )
        de	0x0A, 0x04, 0x0E, 0x10, 0x10, 0x11, 0x0E, 0x00	; znak1  01h	è          (  .  )
	de	0x0A, 0x04, 0x0E, 0x11, 0x1F, 0x10, 0x0E, 0x00	; znak2  02h	ì          (  .  )
	de	0x02, 0x04, 0x0C, 0x04, 0x04, 0x04, 0x0E, 0x00	; znak3  03h 	í          (  .  )
	de	0x0A, 0x04, 0x16, 0x19, 0x10, 0x10, 0x10, 0x00	; znak4  04h	ø          (  .  )	
        de	0x02, 0x04, 0x11, 0x11, 0x0F, 0x01, 0x0E, 0x00	; znak5  05h	ý          (  .  )
	de	0x0A, 0x04, 0x1F, 0x02, 0x04, 0x08, 0x1F, 0x00	; znak6  06h	ž          (  .  )
	de	0x00, 0x00, 0x0E, 0x1F, 0x1F, 0x0E, 0x00, 0x00	; znak7  07h   SET         (  .  )
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; znak8  rezerva           (  .  )
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; znak9  rezerva           ( 4Fh )
;		----------------------------------------------
        de	0x08, 0x02, 0x5A, 0x41, 0x2A, 0x25, 0x41, 0x32	; bajty pro nastavení menu ( 50h )
	de	0x2F, 0x05, 0x02, 0x23, 0x50, 0x50, 0x32, 0x03	; bajty pro nastavení menu (  .  )
	de	0x7F, 0x00, 0x00, 0x03, 0x02, 0xCC, 0x01, 0x01	; bajty pro nastavení menu (  .  )
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; bajty pro nastavení menu (  .  )
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; bajty pro nastavení menu (  .  )
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; bajty pro nastavení menu ( 7Fh )
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; 8 bajtù ROM kod  TCK     (80h-87h)
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; 8 bajtù ROM kod  TCS     (88h-8Fh)
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; 8 bajtù ROM kod  TCP1    (90h-97h)
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; 8 bajtù ROM kod  TCP2    (98h-9Fh)
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; 8 bajtù ROM kod  TCBP    (A0h-A7h)
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff	; 8 bajtù ROM kod  TCSZ    (A8h-AFh)
;		----------------------------------------------
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
	de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
        de	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff

;********************************************************************************************************************** 
;********************     Reset procesoru     ********************
;*********************************************************************************
	org	0x0000
        CLRF    STATUS	
	CALL	INIT_SW		;NASTAVENI SW - REGISTRY PRACOVNI A OVLADACI, NAST. PRERUSENI
	CALL	INIT_HW		;INICIALIZACE PROCESORU - NASTAVENI I/O
;********************************************************************************************************************** 
;********************************************************************************************************************** 
;*****************HLAVNI*CAST****************************************************************************************** 
HL_PROG
;********************************************************************************************************************** 
	BSF	PORTA,0
	CALL	CEK400m
	BCF	PORTA,0
	BSF	PORTA,1
	CALL	CEK400m
	BCF	PORTA,1
	BSF	PORTA,2
	CALL	CEK400m
	BCF	PORTA,2
	BSF	PORTA,3
	CALL	CEK400m
	BCF	PORTA,3
	BSF	PORTA,4
	CALL	CEK400m
	BCF	PORTA,4
	BSF	PORTA,5
	CALL	CEK400m
	BCF	PORTA,5

	BSF	PORTB,0
	CALL	CEK400m
	BCF	PORTB,0
	BSF	PORTB,1
	CALL	CEK400m
	BCF	PORTB,1
	BSF	PORTB,2
	CALL	CEK400m
	BCF	PORTB,2
	BSF	PORTB,3
	CALL	CEK400m
	BCF	PORTB,3
	BSF	PORTB,4
	CALL	CEK400m
	BCF	PORTB,4
	BSF	PORTB,5
	CALL	CEK400m
	BCF	PORTB,5
	BSF	PORTB,6
	CALL	CEK400m
	BCF	PORTB,6
	BSF	PORTB,7
	CALL	CEK400m
	BCF	PORTB,7

	BSF	PORTC,0
	CALL	CEK400m
	BCF	PORTC,0
	BSF	PORTC,1
	CALL	CEK400m
	BCF	PORTC,1
	BSF	PORTC,2
	CALL	CEK400m
	BCF	PORTC,2
	BSF	PORTC,3
	CALL	CEK400m
	BCF	PORTC,3
	BSF	PORTC,4
	CALL	CEK400m
	BCF	PORTC,4
	BSF	PORTC,5
	CALL	CEK400m
	BCF	PORTC,5
	BSF	PORTC,6
	CALL	CEK400m
	BCF	PORTC,6
	BSF	PORTC,7
	CALL	CEK400m
	BCF	PORTC,7

	BSF	PORTD,0
	CALL	CEK400m
	BCF	PORTD,0
	BSF	PORTD,1
	CALL	CEK400m
	BCF	PORTD,1
	BSF	PORTD,2
	CALL	CEK400m
	BCF	PORTD,2
	BSF	PORTD,3
	CALL	CEK400m
	BCF	PORTD,3
	BSF	PORTD,4
	CALL	CEK400m
	BCF	PORTD,4
	BSF	PORTD,5
	CALL	CEK400m
	BCF	PORTD,5
	BSF	PORTD,6
	CALL	CEK400m
	BCF	PORTD,6
	BSF	PORTD,7
	CALL	CEK400m
	BCF	PORTD,7

	BSF	PORTE,0
	CALL	CEK400m
	BCF	PORTE,0
	BSF	PORTE,1
	CALL	CEK400m
	BCF	PORTE,1
	BSF	PORTE,2
	CALL	CEK400m
	BCF	PORTE,2

	GOTO	HL_PROG

;********************************************************************************************************************** 
;********************KONEC*HLAVNI*CASTI******************************************************************************** 
;********************************************************************************************************************** 
;********************************************************************************************************************** 
INIT_SW
;.......................................................................
	BSF	STATUS,RP0	;BANKA1
;.......................................................................
	MOVLW	0X07		;00000111
	MOVWF	ADCON1          ;NASTAV REG. ADCON1 NA 07h
	MOVLW   0XD7            ;11010111  (0xFF)
        MOVWF   OPTION_REG      ;NASTAV OPTION_REG NA HODNOTU Z W
	MOVLW   0X00            ;00000000 VSECHNA PRERUSENI ZAKAZANA
        MOVWF   INTCON          ;NASTAV INTCON NA HODNOTU Z W
        BCF	STATUS,RP0	;BANKA0
	RETURN
;********************************************************************************************************************** 
INIT_HW	
	BSF	STATUS,RP0	;BANKA1
	MOVLW	0X00		;
	MOVWF	TRISA		
	MOVWF	TRISB		
	MOVWF	TRISC	
	MOVWF	TRISD		;
	MOVLW	0X00
	MOVWF	TRISE		;VSE VYSTUPY
;.......................................................................
	BCF	STATUS,RP0	;BANKA0
	CLRF	PORTA
	CLRF	PORTB
	CLRF	PORTC
	CLRF	PORTD
	CLRF	PORTE
	RETURN
;********************************************************************************************************************** 
;********************************************************************************************************************** 
CEK400m
	MOVLW	0x9F		; cas = 1s
	MOVWF	TMP0
	MOVLW	0x26
	MOVWF	TMP1
	MOVLW	0x0B
	MOVWF	TMP2
SMYCKA1
	DECFSZ	TMP0,F		
	GOTO	SMYCKA1
	DECFSZ	TMP1,F		
	GOTO	SMYCKA1
	DECFSZ	TMP2,F		
	GOTO	SMYCKA1
	RETURN
;********************************************************************************************************************** 
;********************************************************************************************************************** 
 	END
