Arkadaşlar aşagıdaki *** ile işaretli satırda butona basıldıgı zaman ilgili etikete dallanması gerekiyor normalde ama proteusta denediğim zaman hiç bir işlem yapmıyor yani normal çalışmasına devam ediyor acaba sorun nedir
#include "m8def.inc"
.CSEG
.ORG 0x00
;Osilatoru ayarlıyoruz
ldi r16,0b00001111 ;r16 ya 0x0F yi yükle
out osccal,r16 ;osilator frekansı
;stack pointeri ayarlıyoruz
ldi r16,high(RAMEND)
out sph,r16
ldi r16,low(RAMEND)
out spl,r16
;PORTC çıkış için ayarlanıyor
ldi r16,0xFF
out ddrc,r16
ldi r16,0x01
out portc,r16
;PORTD giriş için ayarlanıyor
ldi r16,0x00
out ddrd,r16
ldi r16,0xFF
out portd,r16
clt ;T Flagı reset
ldi r16,0x01
DNN:
sbic portd,2 ;2. bit sıfır ise bir sonraki satırı atla ******
rjmp PRG0 ;Yok 2.bit bir ise PRG0 etiketine git
rcall TBIT ;TBIT rutine atla
PRG0:
brts SAGA ;T Bayragı bir (1) ise SAGA etiketine git
rjmp SOLA ;T Bayragı sıfır(0) SOLA etiketine git
SOLA:
rol r16 ;r16 içindeki sayıyı bir sola kaydır
out portc,r16 ;r16 yı portc'de göster
rjmp DNN ;DNN etikete git
SAGA:
ror r16 ;r16 içindeki sayıyı bir saga kaydır
out portc,r16 ;r16 yı portc'de göster
rjmp DNN ;DNN etikete git
TBIT:
brts RESETLE ;T Bayragı bir (1) ise RESETLE etikete git
set ;Bir (1) değil ise set (1) yap
rjmp CIKIS ;CIKIS etikete git
RESETLE:
clt ;T Bayragını clear(0) la
CIKIS:
sbis portd,2 ;2. bit bir ise bir sonraki satırı atla
rjmp CIKIS ;CIKIS etikete git
ret ;Kim çağırdıysa onun yanına git...
portd,2 olarak tanımlanana ardes port d ye ait 3. bit olmaktadır
eger hata bundan kaynaklanıyorsa çözmen kolaylaşır.