p16f628a led program sorunu

Başlatan mabool, 16 Aralık 2010, 00:38:20

mabool

Simdi arkadaslar yazmak istedigim program su,
ra0, ra4, ra5, ra7 uclarina pull-up(5v a cekilmis) yapilarak baglanmis butonlar olacaktir. p16f628a dahili osilator ile calisacaktir. rb0, rb4, rb5, rb7 uclarinda da led ler bagli olacaktir.
1. porta ya bagli olan butonlara balisinca, portb de karsilik gelen uctaki led yanacaktir. ipucu demis burada(comf komutu bir saklayici icerisindeki bitlerin tersini alir.)yalniz kitabin bu bolumune kadar bu komutun kullanilisini gormedim henuz ve bu komut olmadan baska nasil bir yol izlenebilir?

boyle birsey uydurdum bi goz atin bakalim ama rezil olduk galiba :)

LIST         P=16F628A
INCLUDE         "P16F628A.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF

CLRF         PORTB
BANKSEL         TRISB
MOVLW         B'01001110'
MOVWF         TRISB
MOVLW         B'10110001'
MOVWF         TRISA
BANKSEL         PORTB
MOVLW         H'07'
MOVWF         CMCON
TEST_PORTA
BTFSS         PORTA,0
BSF            PORTB,0
BTFSS         PORTA,4
BSF            PORTB,4
BTFSS         PORTA,5
BSF            PORTB,5
BTFSS         PORTA,7
BSF            PORTB,7
GOTO         TEST_PORTA
END

busekilde yapinca o belirtilen ledler bahsedilen butonlara basinca yaniyorlar ve oyle kaliyorlar butondan elimizi cekince sonmuyorlar yani :D
nereler eksik nereler fazla bilemiyorum yardimlarinizi esirgemeyin simdiden cok tesekkurler...

Tagli

#1
TEST_PORTA bölümünü olduğu gibi sil. Daha önce yaptığın gibi A'yı B'ye at ama arada COMF kullanarak 1'leri 0, 0'ları 1 yap. Şöyle:
DONGU
comf     PORTA,W     ;PortA'yı tersleyip W'ye al
movwf     PORTB     ;W'yi PortB'ye yaz
goto     DONGU


Senin yazdığın durumda yanan LED'leri söndürecek BCF komutları yok, bu sebeple bir kez yana bir daha sönmüyor. Ama daha önce de dediğim gibi, şu durumda tek tek kontrol etmeye gerek yok.
Gökçe Tağlıoğlu

mabool

cok tesekkurler buna benzer birsey ler denemistim ama simdi senin gosterdigin sekilde tam oldu cuk oturdu eyw :)