|
ASM-PRG-6
ÖRNEK PROGRAM-6:
PORTA’ya bağlı buton ile PORTB’deki ledlerde binary sayıları oluşturmak
;Binary sayıcı
ÖRNEK PROGRAM-6
|
|
LIST
|
P=16F84A
|
|
|
INCLUDE
|
"P16F84A.INC"
|
|
SAYI_1
|
EQU
|
0X0C
|
;SAYI_1 için 0x0C adresi
ayrıldı.
|
SAYI_2
|
EQU
|
0X0D
|
;SAYI_2 için 0x0D adresi
ayrıldı.
|
|
BSF
|
STATUS,5
|
;bank1'e geç.
|
|
MOVLW
|
b'11111'
|
;TRISA düzenleme bilgisi
W'ye yazılır.
|
|
MOVWF
|
TRISA
|
;PORTA'nın tüm uçları
giriş olarak düzenlenir
|
|
MOVLW
|
b'00000000'
|
;TRISB düzenleme bilgisi
W'ye yazılır.
|
|
MOVWF
|
TRISB
|
;PORTB'nin tüm uçları
çıkış olarak düzenlenir.
|
|
BCF
|
STATUS,5
|
;bank1'e geç.
|
|
CLRF
|
PORTB
|
; PORTB=00h değeri
yüklendi
|
ARTIR
|
INCF
|
PORTB,F
|
|
|
CALL
|
GECIKME
|
; GECIKME alt programına gidilir.
|
|
GOTO
|
ARTIR
|
;Tekrar PORTB'deki
değerin bir artırılması için
;ARTIR etiketine gidilir.
|
GECIKME
|
|
|
|
|
MOVLW
|
D'190'
|
|
|
MOVWF
|
SAYI_1
|
;SAYI_1
‘e 190d değerini yükle.
|
AZALT_1
|
MOVLW
|
D'255'
|
|
|
MOVWF
|
SAYI_2
|
;SAYI_2 ‘ye 255d
değerini yükle.
|
AZALT_2
|
DECFSZ
|
SAYI_2,F
|
;SAYI_2’yi bir azalt.
|
|
GOTO
|
AZALT_2
|
;SAYI_2 ¹ 0 , AZALT_2’ ye git.
|
|
DECFSZ
|
SAYI_1,F
|
;SAYI_2 = 0 oldu,
SAYI_1’i bir azalt.
|
|
GOTO
|
AZALT_1
|
;SAYI_1 ¹ 0 , SAYI_1 ¹ 0 ise AZALT_1’ ye git.
|
|
RETURN
|
|
;SAYI_1 = 0 oldu , ana
programa geri dön.
|
|
END
|
|
;program sonlandırılır.
|
|
|
| | |