;PROGRAM-10) RA0 ucuna bağlı butona basınca PORTB saklayıcısındaki 
;sayıyı “1” arttıran, RA7 ucundaki butona basınca da “1” azaltan program. 
;Program ilk çalışmaya başladığında PORTB’deki hiçbir LED yanmayacaktır. 
;Butonlara bastıkça değişen sayılar PORTB’ye bağlı olan LED’lerde binary 
;sayısal düzeninde yanacaktır. Bu programda gecikme alt programı buton 
;arkını elemek ve butona basılma süresini kontrol etmek amacıyla kullanılmıştır. 

;Şekil 8 – 8 : PROG10.ASM programının akış diyagramı.

;===PROG10.ASM====06/05/2005==============================
LIST		P=16F628A
	INCLUDE	"P16F628A.INC"
	__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;----------------------------------------------------------
SAYAC1	EQU	H'20'		;SAYAC1 saklayıcısının adresi
SAYAC2	EQU	H'21'		;SAYAC2 saklayıcısının adresi
	ORG		h'00'		;Program kodlarının başlangıcı
	CLRF		PORTB		;PortB'yi sıfırla
	BANKSEL 	TRISB		;BANK1'e geç
	CLRF		TRISB		;PortB'nin tüm uçları çıkış
	MOVLW	H'FF'		;W ? h'FF'
	MOVWF	TRISA		;PortA'nın tüm uçları giriş
	BANKSEL 	PORTB		;BANK0'a geç
	MOVLW	h'07'		;W saklayıcıya h’07’ yükle 
	MOVWF	CMCON		;CMCON?W,PORTA girişleri dijital
RA0_TEST
	BTFSC	PORTA,0		;RA0 butonuna basıldı mı?
	GOTO		RA7_TEST		;Hayır, RA7 butonunu test et.
ARTIR
	MOVLW	h'FF'		;W? d'255'
	SUBWF	PORTB,W		;W=PORTB-W
	BTFSS	STATUS,Z		;W=PORTB=255 mi?
	INCF		PORTB,F		;Hayır, PORTB=PORTB+1
	CALL 	GECIKME		;Buton arkını ele
	GOTO 	RA0_TEST		;RA0 butonunu test et.
RA7_TEST
	BTFSC	PORTA,7		;RA7 butonuna basıldı mı?
	GOTO		RA0_TEST		;Hayır, RA0 butonunu test et.
AZALT
	MOVF		PORTB,W		;W?PORTB 
	BTFSS	STATUS,Z		;PORTB=0 mı?
	DECF		PORTB,F		;Hayır, PORTB=PORTB-1
	CALL 	GECIKME		;Buton arkını ele
	GOTO 	RA0_TEST		;RA0 butonunu test et.
GECIKME					;Gecikme alt programı başlangıcı
	MOVLW	h'FF'		;Dış döngü (M sayısı)
	MOVWF	SAYAC1
DONGU1
	MOVLW	h'FF'		;İç döngü (N sayısı)
	MOVWF	SAYAC2
DONGU2
	DECFSZ	SAYAC2, F
	GOTO		DONGU2
	DECFSZ	SAYAC1, F
	GOTO		DONGU1
	RETURN
	END
;-----------------------------------------------------------
