;10h = sayi1
;11h = sayi2 ;p2.2 den p2.6'ya kadar sayi oku 2 birim otele  ;p3.0 -> sayi1 oku butonu 
;p3.7 -> sayi2 oku butonu  ;p3.1 -> toplama islemi butonu
;p3.2 -> cikarma islemi butonu  ;p3.3 -> faktoriyel al islemi  ;p2.0 -> negatif ledi 
;p2.1 -> tasma ledi
	#include<ADUC841.H>
	btn_toplam equ p3.1
	btn_cikarma  equ p3.2
	btn_faktoriyel equ p3.3
	btn_sayigir1 equ p3.0
	btn_sayigir2 equ p3.7
	led_tasma equ p2.6
	led_negatif equ p2.5
	org 0000h
basla:
	mov 10h,#00h ; sayi1=0
	mov 11h,#00h ; sayi2=0
	mov p0,#00h ; ledler sonuk
	mov dptr,#tablo
devam:
	acall btn_sayigirisi_kontrolu
	acall btn_toplama_kontrolu
	acall btn_cikarma_kontrolu
	acall btn_faktoriyel_kontrol
	sjmp devam
btn_cikarma_kontrolu:
	jb btn_cikarma,c2
	clr c
	clr led_negatif
	mov a,10h ; sayi1
	subb a,11h ; cikartma isl.
	mov p0,a
	jnc c2
	setb led_negatif ; negatif ledi yandi
c2: ret
btn_toplama_kontrolu:
	jb btn_toplam,b2
	clr	c
	mov a,10h
	add a,11h
	mov p0,a
	clr led_tasma ; tasma ledi temizlendi
	jnc b2 ; c biti test et. tasma icin
	setb led_tasma ; tasma ledi yakildi
b2: ret
btn_sayigirisi_kontrolu:
	; sayi1 butonu kontrolu
	jb btn_sayigir1,x2 ; basilmamissa sayi2 buton kontrolu
	x1: jnb btn_sayigir1,x1 ; btn biraklinca sayi 1 belirle
	mov a,p2
	anl a,#00011111b
	movc a,@a+dptr
	mov 10h,a ; sayi1
	; sayi2 butonu kontrolu
x2: jb btn_sayigir2,x4
x3: jnb btn_sayigir2,x3
	mov a,p2
	anl a,#00011111b

	movc a,@a+dptr
	mov 11h,a ;sayi 2
x4: ret
btn_faktoriyel_kontrol:
	;SAY1>1 için faktöriyel hesabi
	jb btn_faktoriyel,e2
	clr ov
	mov a,10h
	dec 10h
e3: mov b,10h
	mul ab
	jb psw.2,e2 ; ov biti ov,e2	
	djnz 10h,e3
e2:	mov	c,ov
	mov	led_tasma,c
	ret
tablo: db 	0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
	end