;Első programom
;Készítette: én
;2009.12.18


	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 


;#define két_szélső    b'00001001'
;#define két_középső   b'00000110'

	cblock
	SZAM1_felso
	SZAM1_also
	SZAM2_felso
	SZAM2_also
	SZAM3_felso
	SZAM3_also
	tizezresek
	ezresek
	szazasok
	tizesek
	egyesek
	ATVITEL
	endc
	
	org 0

;	banksel TRISC
	movlw	B'00000000'		;0-át írunk a W-be
	movlw	TRISA			;PORTA minden lába kimenet lesz
	movlw	TRISB			;PORTB minden lába kimenet lesz
	movwf	TRISC			;PORTC minden lába kimenet lesz
	movlw	B'01110000'
	movwf	TRISD			;PORTD alsó négy bitje és a legfelső kimenet, a többi bemenet


	
	goto START1		;melyik program fusson?


;----------------------START1---------------------------------------------------

START1

bsf LATC,3
goto$



clrf	tizezresek
clrf	ezresek
clrf	szazasok
clrf	tizesek
clrf	egyesek
clrf	ATVITEL
movlw	b'01001101'
movwf	SZAM1_felso
movlw	b'11010011'
movwf	SZAM1_also
; 23876



Osztas_tizezerrel
	movlw	b'00100111'			;eloször felso bájt
	subwf	SZAM1_felso, w		;kivonás
	btfss	STATUS, C			;ha alulcsordulás van, akkor...
	goto	Osztas_ezerrel		;...akkor osszunk tovább ezerrel
	tstfsz	WREG				;de ha nulla, akkor is százzal osszunk tovább!
	goto	$+6
	goto	Osztas_szazzal
	movwf	SZAM1_felso			;eredmény tárolása
	movlw	b'00010000'			;azután alsó 
	subwf	SZAM1_also, w		;kivonás
	movwf	SZAM1_also    		;eredmény tárolás
	btfss	STATUS, C    		;
	decf	SZAM1_felso			;felso bájt dekrementálása
	incf	tizezresek
	goto	Osztas_tizezerrel

Osztas_ezerrel
	movlw	b'00000011'			;eloször felso bájt
	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 is százzal osszunk tovább!
	goto	$+6
	goto	Osztas_szazzal
	movwf	SZAM1_felso			;eredmény tárolása
	movlw	b'11101000'			;azután alsó 
	subwf	SZAM1_also, w		;kivonás
	movwf	SZAM1_also    		;eredmény tárolás
	btfss	STATUS, C    		;
	decf	SZAM1_felso			;felso bájt 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 bájt nem nulla
	goto	Osztas_tizzel
	decf	SZAM1_felso			; (a) felso bájt 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!

	movff	tizezresek,LATA
	movff	ezresek,LATB
	movff	szazasok,LATC
	movff	tizesek,LATD


goto$
END
















	