;Harmadik programom
;Készítette: én
;2009.12.27.
;------------------------------------------------------------
	list	P=18F4520
#include	"P18F4520.INC"


;	__CONFIG _HS_OSC&_CP_OFF&_WDT_OFF	;Kvarc oszcillátor, kódvédelem ki, wdt ki
;__config _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC
; MCLR láb sima I/O, kódvédelem ki, watchdog ki, belső RC oszcillátor


;              config CPUDIV = NOCLKDIV
;              config USBDIV = OFF
;              config FOSC   = HS
;              config PLLEN  = ON
              config FCMEN  = OFF
              config IESO   = OFF
;              config PWRTEN = OFF
              config BOREN  = OFF
;              config BORV   = 30
;              config WDTEN  = OFF
              config WDTPS  = 32768
              config MCLRE  = ON      ;ez mos legyen inább ON!
;              config HFOFST = OFF
              config STVREN = ON
              config LVP    = OFF
              config XINST  = OFF
;              config BBSIZ  = OFF
              config CP0    = OFF
              config CP1    = OFF
              config CPB    = OFF
              config WRT0   = OFF
              config WRT1   = OFF
              config WRTB   = OFF
              config WRTC   = OFF
              config EBTR0  = OFF
              config EBTR1  = OFF
              config EBTRB  = OFF 
		config	OSC = INTIO67
		config	WDT = OFF


;#define	SZEGMENS_A	LATC,0
;#define	SZEGMENS_B	LATC,1
;#define	SZEGMENS_C	LATC,2
;#define	SZEGMENS_D	LATC,3
;#define	SZEGMENS_E	LATC,4
;#define	SZEGMENS_F	LATC,5
;#define	SZEGMENS_G	LATC,6
;#define	SZEGMENS_DP	LATC,7
;
;#define EGY		(SZEGMENS_B | SZEGMENS_C)
;#define KETTO	(SZEGMENS_A | SZEGMENS_B | SZEGMENS_G | SZEGMENS_E | SZEGMENS_D)
;#define HAROM	(SZEGMENS_A | SZEGMENS_B | SZEGMENS_G | SZEGMENS_C | SZEGMENS_D)
;#define NEGY	(SZEGMENS_F | SZEGMENS_B | SZEGMENS_G | SZEGMENS_C)
;#define OT		(SZEGMENS_A | SZEGMENS_F | SZEGMENS_G | SZEGMENS_C | SZEGMENS_D)
;#define HAT		(SZEGMENS_A | SZEGMENS_F | SZEGMENS_G | SZEGMENS_E | SZEGMENS_C | SZEGMENS_D)
;#define HET		(SZEGMENS_A | SZEGMENS_B | SZEGMENS_C)
;#define NYOLC	(SZEGMENS_A | SZEGMENS_B | SZEGMENS_C | SZEGMENS_D | SZEGMENS_E | SZEGMENS_F | SZEGMENS_G)
;#define KILENC	(SZEGMENS_A | SZEGMENS_B | SZEGMENS_C | SZEGMENS_D | SZEGMENS_F | SZEGMENS_G)
;#define NULLA	(SZEGMENS_A | SZEGMENS_B | SZEGMENS_C | SZEGMENS_D | SZEGMENS_E | SZEGMENS_F)



;********************************Kijelzéskép beállítása**********************************
;				   GFEDCBA
#define EGY		b'00000110'
#define KETTO	b'01011011'
#define HAROM	b'01001111'
#define NEGY	b'01100110'
#define OT		b'01101101'
#define HAT		b'01111101'
#define HET		b'00000111'
#define NYOLC	b'01111111'
#define KILENC	b'01101111'
#define NULLA	b'00111111'
;***************************************************************************************

#define	SZEGMENSEK	LATC
#define	DIGITEK		LATA 	;(első kijelző első digite: LATD,0

#define	KIJELZO1_DIGIT1		LATD,0
#define	KIJELZO1_DIGIT2		LATA,1
#define	KIJELZO1_DIGIT3		LATA,2
#define	KIJELZO1_DIGIT4		LATA,3
#define	KIJELZO2_DIGIT1		LATA,4
#define	KIJELZO2_DIGIT2		LATA,5
#define	KIJELZO2_DIGIT3		LATA,6
#define	KIJELZO2_DIGIT4		LATA,7




cblock
	W_TEMP
	STATUS_TEMP
	SZAM1_felso
	SZAM1_also
	SZAM2_felso
	SZAM2_also
	KIJELZO_1_felso_bajt
	KIJELZO_1_also_bajt
	KIJELZO_2_felso_bajt
	KIJELZO_2_also_bajt
	ezresek
	szazasok
	tizesek
	egyesek
	aktualis_digit
	kijelzo1_ezresek
	kijelzo1_szazasok
	kijelzo1_tizesek
	kijelzo1_egyesek
	kijelzo2_ezresek
	kijelzo2_szazasok
	kijelzo2_tizesek
	kijelzo2_egyesek
	KIJELZO_1_tp_helye
	KIJELZO_2_tp_helye
	delay0
	delay1
	delay2
	delay3
	Nullakioltas
	reg1
endc
	
	org 0
	goto START1		;melyik program fusson?
	org 4		;megszakítási cím


;**************** MEGSZAKÍTÁS ***********************
	MOVWF	W_TEMP			;W REGISZTER ELTÁROLÁSA
	SWAPF	STATUS,W		
	MOVWF 	STATUS_TEMP		;STATUS REGISZTER ELTÁROLÁSA


	BTFSS	INTCON,T0IF		;TMR0 MEGSZAKÍTÁS ELLENŐRZÉSE
		goto	megszakitas_kilepes
	bcf		INTCON, GIE		;globális megszakítás tiltás (hogy megszakítás alatt ne érkezzen még egy megszakítás)

	clrf	DIGITEK
	clrf	SZEGMENSEK

	incf	aktualis_digit
	movlw	d'9'
	subwf	aktualis_digit, W
	btfss	STATUS, C		;ha nem az utolsó digit van bekapcsolva, akkor
		goto	TABLA2		;ugorjunk az adott digitet vezérlő rutinhoz
	movlw	d'1'
	movwf	aktualis_digit	;de ha a nyolcas (utolsó) digit volt legutóbb, akkor most az első jöjjön!
	

TABLA2
	movf	aktualis_digit, W
	rlncf	WREG, W		;W szorzása kettővel
;	decf	WREG		;egyet kivonunk a W-ből
	addwf	PCL,F		;W HOZZÁADÁSA A PROGRAMSZÁMLÁLÓ ALSÓ BYTE-JÁHOZ
	goto	k1d1
	goto	k1d2
	goto	k1d3
	goto	k1d4k
	goto	k2d1
	goto	k2d2
	goto	k2d3
	goto	k2d4k	



k1d1:	tstfsz	kijelzo1_ezresek	;a szám nulla?
			goto	k1d1k			;ha nem nulla, akkor jelezd ki!
			btfss	KIJELZO_1_tp_helye,3	;x.xxx-es a kijelzés?
			goto	megszakitas_kilepes		;ha nem, akkor ne jelezz ki hanem lépj ki a megszakításból!
k1d1k:	bsf		KIJELZO1_DIGIT1		;bekapcsoljuk az első kijelző legnagyobb helyiértékű digitjét
		btfsc	KIJELZO_1_tp_helye,3	;x.xxx-es a kijelzés?
		bsf		SZEGMENSEK,7			;ha igen, akkor kapcsold be a tizedespontot!
		movf	kijelzo1_ezresek, W
		call	TABLA1				;az ezresek regiszter tartalmát átkonvertáljuk kijelzésképpé
		iorwf	SZEGMENSEK, F		;majd kijelezzük a számot
		goto	megszakitas_kilepes



k1d2:	tstfsz	kijelzo1_szazasok		;a szám nulla?
		goto	k1d2k			;ha nem nulla, akkor jelezd ki!
			btfsc	KIJELZO_1_tp_helye,3	;x.xxx-es a kijelzés?
			goto	k1d2k					;ha igen, akkor jelezz ki!
			btfsc	KIJELZO_1_tp_helye,2	;xx.xx-es a kijelzés?
			goto	k1d2k					;ha igen, akkor jelezz ki!
			tstfsz	kijelzo1_ezresek		;az ezresek nulla?
			goto	k1d2k					;ha nem, akkor jelezz ki!
			goto	megszakitas_kilepes		;ha igen, akkor ne jelezz ki
k1d2k:	bsf		KIJELZO1_DIGIT2		;bekapcsoljuk az első kijelző balról a második digitjét
		btfsc	KIJELZO_1_tp_helye,2	;xx.xx-es a kijelzés?
		bsf		SZEGMENSEK,7			;ha igen, akkor kapcsold be a tizedespontot!
		movf	kijelzo1_szazasok, W	
		call	TABLA1				;az ezresek regiszter tartalmát átkonvertáljuk kijelzésképpé
		iorwf	SZEGMENSEK, F		;majd kijelezzük a számot
		goto	megszakitas_kilepes


k1d3:	tstfsz	kijelzo1_tizesek	;a szám nulla?
		goto	k1d3k				;ha nem nulla, akkor jelezd ki!
			btfsc	KIJELZO_1_tp_helye,3	;x.xxx-es a kijelzés?
			goto	k1d3k					;ha igen, akkor jelezz ki!
			btfsc	KIJELZO_1_tp_helye,2	;xx.xx-es a kijelzés?
			goto	k1d3k					;ha igen, akkor jelezz ki!
			btfsc	KIJELZO_1_tp_helye,1	;xxx.x-es a kijelzés?
			goto	k1d3k					;ha igen, akkor jelezz ki!
			tstfsz	kijelzo1_ezresek		;az ezresek nulla?
			goto	k1d3k					;ha nem, akkor jelezz ki!
			tstfsz	kijelzo1_szazasok		;a százasok nulla?
			goto	k1d3k					;ha nem, akkor jelezz ki!
			goto	megszakitas_kilepes		;ha igen, akkor ne jelezz ki
k1d3k:	bsf		KIJELZO1_DIGIT3		;bekapcsoljuk az első kijelző balról a harmadik digitjét
		btfsc	KIJELZO_1_tp_helye,1	;xxx.x-es a kijelzés?
		bsf		SZEGMENSEK,7			;ha igen, akkor kapcsold be a tizedespontot!	
		movf	kijelzo1_tizesek, W	
		call	TABLA1				;az ezresek regiszter tartalmát átkonvertáljuk kijelzésképpé
		iorwf	SZEGMENSEK, F		;majd kijelezzük a számot
		goto	megszakitas_kilepes


k1d4k:	bsf		KIJELZO1_DIGIT4		;bekapcsoljuk az első kijelző balról a negyedik digitjét
		movf	kijelzo1_egyesek, W	
		call	TABLA1				;az ezresek regiszter tartalmát átkonvertáljuk kijelzésképpé
		movwf	SZEGMENSEK			;majd kijelezzük a számot
		goto	megszakitas_kilepes



k2d1:	tstfsz	kijelzo2_ezresek	;a szám nulla?
			goto	k2d1k			;ha nem nulla, akkor jelezd ki!
			btfss	KIJELZO_2_tp_helye,3	;x.xxx-es a kijelzés?
			goto	megszakitas_kilepes		;ha nem, akkor ne jelezz ki hanem lépj tovább a következő digitre!
k2d1k:	bsf		KIJELZO2_DIGIT1		;bekapcsoljuk a második kijelző legnagyobb helyiértékű digitjét
		btfsc	KIJELZO_2_tp_helye,3	;x.xxx-es a kijelzés?
		bsf		SZEGMENSEK,7			;ha igen, akkor kapcsold be a tizedespontot!
		movf	kijelzo2_ezresek, W
		call	TABLA1				;az ezresek regiszter tartalmát átkonvertáljuk kijelzésképpé
		iorwf	SZEGMENSEK, F		;majd kijelezzük a számot
		goto	megszakitas_kilepes


k2d2:	tstfsz	kijelzo2_szazasok	;a szám nulla?
		goto	k2d2k				;ha nem nulla, akkor jelezd ki!
			btfsc	KIJELZO_2_tp_helye,3	;x.xxx-es a kijelzés?
			goto	k2d2k					;ha igen, akkor jelezz ki!
			btfsc	KIJELZO_2_tp_helye,2	;xx.xx-es a kijelzés?
			goto	k2d2k					;ha igen, akkor jelezz ki!
			tstfsz	kijelzo2_ezresek		;az ezresek nulla?
			goto	k2d2k					;ha nem, akkor jelezz ki!
			goto	megszakitas_kilepes		;ha igen, akkor ne jelezz ki
k2d2k:	bsf		KIJELZO2_DIGIT2		;bekapcsoljuk a második kijelző balról a második digitjét
		btfsc	KIJELZO_2_tp_helye,2	;xx.xx-es a kijelzés?
		bsf		SZEGMENSEK,7			;ha igen, akkor kapcsold be a tizedespontot!
		movf	kijelzo2_szazasok, W	
		call	TABLA1				;az ezresek regiszter tartalmát átkonvertáljuk kijelzésképpé
		iorwf	SZEGMENSEK, F		;majd kijelezzük a számot
		goto	megszakitas_kilepes


k2d3:	tstfsz	kijelzo2_tizesek	;a szám nulla?
		goto	k2d3k				;ha nem nulla, akkor jelezd ki!
			btfsc	KIJELZO_2_tp_helye,3	;x.xxx-es a kijelzés?
			goto	k2d3k					;ha igen, akkor jelezz ki!
			btfsc	KIJELZO_2_tp_helye,2	;xx.xx-es a kijelzés?
			goto	k2d3k					;ha igen, akkor jelezz ki!
			btfsc	KIJELZO_2_tp_helye,1	;xxx.x-es a kijelzés?
			goto	k2d3k					;ha igen, akkor jelezz ki!
			tstfsz	kijelzo2_ezresek		;az ezresek nulla?
			goto	k2d3k					;ha nem, akkor jelezz ki!
			tstfsz	kijelzo2_szazasok		;a százasok nulla?
			goto	k2d3k					;ha nem, akkor jelezz ki!
			goto	megszakitas_kilepes		;ha igen, akkor ne jelezz ki
k2d3k:	bsf		KIJELZO2_DIGIT3		;bekapcsoljuk a második kijelző balról a harmadik digitjét
		btfsc	KIJELZO_2_tp_helye,1	;xxx.x-es a kijelzés?
		bsf		SZEGMENSEK,7			;ha igen, akkor kapcsold be a tizedespontot!	
		movf	kijelzo2_tizesek, W	
		call	TABLA1				;az ezresek regiszter tartalmát átkonvertáljuk kijelzésképpé
		iorwf	SZEGMENSEK, F		;majd kijelezzük a számot
		goto	megszakitas_kilepes


k2d4k:	bsf		KIJELZO2_DIGIT4		;bekapcsoljuk a második kijelző balról a negyedik digitjét
		movf	kijelzo2_egyesek, W	
		call	TABLA1				;az ezresek regiszter tartalmát átkonvertáljuk kijelzésképpé
		movwf	SZEGMENSEK			;majd kijelezzük a számot
		goto	megszakitas_kilepes





megszakitas_kilepes
	movlw	d'0'
	movwf	TMR0H
	movlw	d'100'
	movwf	TMR0L		;timer0 időzítő beállítása -> (256-100)/16*(1/4Mhz)

	SWAPF	STATUS_TEMP,W	
	MOVWF 	STATUS			;AZ ELMENTETT STATUS REGISZTER VISSZAÁLLÍTÁSA
	SWAPF	W_TEMP,F
	SWAPF	W_TEMP,W		;AZ ELMENTETT W REGISZTER VISSZAÁLLÍTÁSA
	bcf		INTCON, T0IF	;TMR0 megszakítást jelzőbitjét töröljük
	BSF		INTCON, GIE		;ÁLTALÁNOS MEGSZAKÍTÁS ENGEDÉLYEZÉSE
RETFIE
;************** MEGSZAKÍTÁS VÉGE *******************
	


;-------------------------------------------------------------------------------
;----------------------START1---------------------------------------------------
;-------------------------------------------------------------------------------
START1

	call	PIC_INICIALIZALAS


;AD_konverzio
;	bsf		ADCON0, GO_DONE		;A/D konverzió indítása
;	btfsc	ADCON0, GO_DONE		;befejeződött az A/D konverzió?
;	goto	$-2					;ha nem, akkor kérdezd meg újra!
;	movff	ADRESH, KIJELZO_1_felso_bajt
;	movff	ADRESL, KIJELZO_1_also_bajt
;
;	clrf	DIGITEK
;	clrf	SZEGMENSEK
;	movlw	b'00001000'
;	movwf	KIJELZO_1_tp_helye
;	clrf	reg1
;
;Kijelzes
;	movff	KIJELZO_1_felso_bajt, SZAM1_felso
;	movff	KIJELZO_1_also_bajt, SZAM1_also
;	call	KONV_13bit_4digit
;	call	KIJELZO1_kijelzes
;
;	incf	reg1
;	movlw	d'200'		;hányszor legyen egyms után kijelezve a szám?
;	subwf	reg1, W
;	btfss	STATUS, C	;reg1 elérte már a számot?
;	goto	Kijelzes		;ha nem, akkor jelezz még ki!
;goto	START1				;ha igen, akkor végy egy új mintát!
	



CIKLUS

movlw	d'200'
movwf	reg1

movlw	b'00001110'
movwf	KIJELZO_1_felso_bajt
movlw	b'11011000'
movwf	KIJELZO_1_also_bajt
movlw	b'00000010'
movwf	KIJELZO_2_felso_bajt
movlw	b'10111111'
movwf	KIJELZO_2_also_bajt



movlw	b'00000000'
movwf	KIJELZO_1_tp_helye
movlw	b'00000010'
movwf	KIJELZO_2_tp_helye


	movff	KIJELZO_1_felso_bajt, SZAM1_felso
	movff	KIJELZO_1_also_bajt, SZAM1_also
	call	KONV_13bit_4digit
	movff	ezresek, kijelzo1_ezresek
	movff	szazasok, kijelzo1_szazasok
	movff	tizesek, kijelzo1_tizesek
	movff	egyesek, kijelzo1_egyesek

	movff	KIJELZO_2_felso_bajt, SZAM1_felso
	movff	KIJELZO_2_also_bajt, SZAM1_also
	call	KONV_13bit_4digit
	movff	ezresek, kijelzo2_ezresek
	movff	szazasok, kijelzo2_szazasok
	movff	tizesek, kijelzo2_tizesek
	movff	egyesek, kijelzo2_egyesek

;decfsz	reg1
;goto	kijelzes_ciklus
;movlw	d'100'
;movwf	reg1
;
;goto	ciklus
	

goto	CIKLUS

	



		
TABLA1
	rlncf	WREG, W		;W szorzása kettővel
	addwf	PCL,F		;W HOZZÁADÁSA A PROGRAMSZÁMLÁLÓ ALSÓ BYTE-JÁHOZ
	retlw	NULLA
	retlw	EGY
	retlw	KETTO
	retlw	HAROM
	retlw	NEGY
	retlw	OT
	retlw	HAT
	retlw	HET
	retlw	NYOLC
	retlw	KILENC
RETURN

	



goto$




;-------------------------------------------------------------------------
;------------SZUBRUTINOK--------------------------------------------------
;-------------------------------------------------------------------------

PIC_INICIALIZALAS
;	banksel TRISC
	movlw	B'00000000'		;0-át írunk a W-be
	movwf	TRISA			;PORTA minden lába kimenet lesz
	movwf	TRISB			;PORTB minden lába kimenet lesz
	movwf	TRISC			;PORTC minden lába kimenet lesz
	movwf	TRISD			;PORTD minden lába kimenet lesz

	clrf	LATA
	clrf	LATB
	clrf	LATC
	clrf	LATD

;	movlw	h'0F'
;	movwf	ADCON1		;ne legyen egy analóg láb sem!

;***********************************
;	A/D konfigurációja:
	movlw	b'00000001'
	movwf	ADCON0			;AN0 lesz használva, engedélyezve
	movlw	b'00001110'	
	movwf	ADCON1			;AN0 analóg bemenet.
	movlw	b'10011101'
	movwf	ADCON2			;eredmény jobbra igazítása, 6TAD, Fosc/16

;**********************************
;	TMR0 konfigurációja:
	movlw	b'11010100'	; számláló engedélyezve, 8 bites mód, belső oszcillátorról, lefutó élre, 1:32-es előosztó
	movwf	T0CON

;**********************************
;	Megszakítások konfigurációja
	clrf	INTCON
	bsf		INTCON, GIE		;globális megszakítás engedélyezés
	bsf		INTCON, T0IE	;timer0 túlcsordulás-megszakítás engedélyezése


RETURN




KONV_13bit_4digit


;movlw	b'00000011'
;movwf	SZAM1_felso
;movlw	b'11101001'
;movwf	SZAM1_also

	clrf	ezresek
	clrf	szazasok
	clrf	tizesek
	clrf	egyesek

Osztas_ezerrel
	movlw	b'00000011'			;először a felső bájt
	subwf	SZAM1_felso, W
	movlw	b'11101000'			;aztán az alsó
	btfsc	STATUS, Z    	
	subwf	SZAM1_also, W
	btfss	STATUS, C			;Ha a szám kisebb ezernél,
	goto	Osztas_szazzal		;akkor osztás százzal!
	


	movlw	b'00000011'			;először felso bajt
	subwf	SZAM1_felso, w		;kivonás
	btfss	STATUS, C			;ha alulcsordulás van, akkor...
	goto	Osztas_szazzal		;...akkor osszunk tovább százzal
;	tstfsz	WREG				;de ha nulla, akkor...
	goto	oe					;ha nincs alulcsordulás és nem is nulla, akkor osszunk tovább ezerrel!
	goto	Osztas_szazzal
;		incf	ezresek			
;		movwf	SZAM1_felso			;eredmény tárolása
;		movlw	b'11101000'			;azután also bajt
;		subwf	SZAM1_also, w		;kivonás
;		movwf	SZAM1_also    		;eredmény tárolás
;		goto	Osztas_szazzal

;		movlw	b'11101000'			;azután also 
;		subwf	SZAM1_also, w		;kivonás
;		movwf	SZAM1_also    		;eredmény tárolás
;		btfss	STATUS, C    		;
;		decf	SZAM1_felso			;felso bajt dekrementálása
;		goto	Osztas_szazzal


oe	movwf	SZAM1_felso			;eredmény tárolása
	movlw	b'11101000'			;azután also 
	subwf	SZAM1_also, w		;kivonás
	movwf	SZAM1_also    		;eredmény tárolás
	btfss	STATUS, C    		;alulcsordult?
	decf	SZAM1_felso			;ha igen, akkor felso bajt dekrementálása
	incf	ezresek
	goto	Osztas_ezerrel

Osztas_szazzal
	movlw	b'01100100'			;írjunk decimálisan 100-at a W-be
	subwf	SZAM1_also, w		;kivonás
	btfsc	STATUS, C    		;ha alulcsordult, akkor ugrik
	goto	$+10				; (b-hez ugorjon)
	tstfsz	SZAM1_felso			;ha a felso bajt nulla, akkor ugrik!
	goto	$+6					; (a-hoz ugorjon) ha alulcsordult, de a felso bajt nem nulla
	goto	Osztas_tizzel
	decf	SZAM1_felso			; (a) felso bajt dekrementálása
	movwf	SZAM1_also    		; (b) eredmény tárolás
	incf	szazasok
	goto	Osztas_szazzal




Osztas_tizzel
	movlw	b'00001010'			;decimálisan 10-et írunk a W-be
	subwf	SZAM1_also, w		;kivonás
	btfss	STATUS, C			;ha alulcsordulás van, akkor...
	goto	$+10
	incf	tizesek
	movwf	SZAM1_also
	goto	Osztas_tizzel
	movff	SZAM1_also,egyesek
	movff	SZAM1_also,egyesek

RETURN						;konverzió befejezve!




;delay1000s:
;	movlw   d'100'
;	movwf	delay1
;	movlw	d'100'
;	movwf	delay2
;	movlw	d'100'
;	movwf	delay3
;	goto    d1
;delay100s:
;	movlw   d'100'
;	movwf	delay1
;	movlw	d'100'
;	movwf	delay2
;	movlw	d'10'
;	movwf	delay3
;	goto    d1 
;delay10s:
;	movlw	d'100'
;	movwf	delay2
;	movlw	d'100'
;	movwf	delay3
;	goto    d2 
;delay1s:
;	movlw	d'10'
;	movwf	delay2
;	movlw	d'100'
;	movwf	delay3
;	goto    d2 
;delay100ms:
;	movlw   d'100'
;	movwf	delay3
;	goto    d3 
;delay10ms:
;	movlw	d'10'
;	movwf	delay3
;	goto    d3
;delay1ms:
;	movlw	d'1'
;	movwf	delay3
;	goto    d3 	
;d1:	decfsz	delay1,f
;	goto	d1
;d2:	decfsz	delay2,f
;	goto	d2
;d3:	decfsz	delay3,f
;	goto	d3
;d0:	movlw	d'248'	;   d'248'
;	movwf	delay0
;	decfsz	delay0,f
;	goto	$-2
;RETURN




delay100us:
	movlw	d'25'
	decfsz	WREG
	goto	$-2
RETURN



delay100ms:
	movlw	d'100'		;100ms
	goto	d2
delay10ms:
	movlw	d'10'		;10ms
	goto	d2
delay1ms:
	movlw	d'1'		;1ms
d2:	movwf	delay1
d1:	movlw	d'248'	
	movwf	delay0	
d0:	decfsz	delay0,f
	goto	d0
	decfsz	delay1,f
	goto	d1

RETURN




goto$
END