;*** Zacetek programa ***
	LIST	P=16F88
	ORG	0

;*** Inicializacija: nastavim PORTB izhodi 0-3 ***
	BSF	3,5	;RP0=1 nastavim banko 1 za dostop do TRIS(86)
	MOVLW	0F0	;TRISB=F0
	MOVWF	6
	BCF	3,5	;RP0=0 nastavim banko 0 za dostop do PORTB(6)
	MOVLW	0
	MOVWF	6	;PORTB=0

;*** Inicializacija RC oscilator 8MHz ***
	BSF	3,5	;RP0=1 nastavim banko 1 za dostop do OSCCON(8F)
	MOVLW	72	;OSCCON=01110010
	MOVWF	0F
	BCF	3,5	;RP0=0 vrnem banko 0
	
;*** Inicializacija UART za 9k6 ***
	MOVLW	90	;RCSTA(18)=10010000=90
	MOVWF	18
	BSF	3,5	;RP0=1 nastavim banko 1 za dostop do TXSTA(98) IN SPBRG(99)
	MOVLW	24	;TXSTA(98)=00100100=24
	MOVWF	18
	MOVLW	32	;SPBRG(99)=0d50=32
	MOVWF	19
	BCF	3,5	;RP0=0 vrnem banko 0

ZANKA	INCF	30,1	;stevec kot podatek
	CALL	KASNI
	CALL	SPITX
	CALL	UART
	GOTO	ZANKA

KASNI	DECFSZ	31,1	;31 stevec zakasnitve
	GOTO	KASNI
	DECFSZ	33,1	;33 dodatni stevec zakasnitve
	GOTO	KASNI
	RETURN

SPITX	MOVLW	8	;32 stevec zanke
	MOVWF	32
ZSPI	RLF	30,1	;vrtim 30 skozi C 8x
	BCF	6,1	;postavim podatek na RB1
	BTFSC	3,0	;preveri C
	BSF	6,1
	BSF	6,2	;taktni impulz na RB2
	BCF	6,2
	DECFSZ	32,1	;stevec zanke
	GOTO	ZSPI
	BSF	6,0	;strobe impulz na RB0
	BCF	6,0
	RLF	30,1	;se 9-tic, da vrnem isti 30
	RETURN

UART	MOVF	30,0	;podatek na UART brez preverjanja
	MOVWF	19	;TXREG(19)
	RETURN

;*** Nastavi konfiguracijo PICa 16F88 ***
	ORG	2007	;naslov konfiguracijske besede
	DW	2950	;CP=OFF, CCPMX=RB3, DEBUG=OFF, WRT=0000-0FFF,
;CPD=OFF, LVP=OFF, BOREN=ON, MCLRE=OFF, PWRTEN=ON, WDTE=OFF, OSC=INTRC
; notranji Brown-Out RESET in notranja ura 31kHz

	END
;*** Konec programa ***
