Merhaba arkadaşlar, daha önce button kullanarak pic ile bazı led yakma söndürme çalışmaları yapmıştım ama benzer bir işlemi bir üç kademeli sonsuz komütatör ile yapamadım.
Yapmak istediğim şey şu aslında 3 adet ledi , üç kademesi olan ama sürekli dönen başı sonu olmayan bir komütatör ile yakmak,
Komütatörün sırasıyla uçlarını Porta1,porta2 porta3 e bağlıyorum, komütatör porta1 de iken portb1 e bağlı ledin yanmasını istiyorum, komütatörü porta2 ye aldığımdada portb2 nin yanmasını istiyorum , b1 deki led yazdığım programa göre sönmüyecek gibi yazmışım çok önemli değil şimdilik.
Yazdığım program sanki komütatör ykmuş gibi davranıyor, ilk baştaki komütatörü denetleyen döngüden hiç çıkmıyor, test amaçlı o döngü içine porb4 ledini yakıp söndüren komut yazdım led sürekli yandı söndü hiç test1,2,3 e dallanmadı.
Yardımcı olacak arkadaşlara şimdiden teşşekkür ederim.
bağlantı şemasını çizmye çalıştım
[IMG]http://i61.tinypic.com/2jca87l.jpg[/img]
program
LIST P=16F628A
INCLUDE "P16F628A.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
delay2 EQU 0X35
DELAY1 EQU 0X38
BCF STATUS,RP1
BSF STATUS,RP0
MOVLW B'001110' ; a1,a2,a3 GİRİŞLER
MOVWF TRISA
MOVLW B'00000000' ; B PORTU ÇIKIŞ
MOVWF TRISB
BCF STATUS,RP0
AA
BTFSS PORTA,1
GOTO TEST1
BTFSS PORTA,2
GOTO TEST2
BTFSS PORTA,3
GOTO TEST3
CALL DELAY
GOTO AA
TEST1
BSF PORTB,1
CALL DELAY
BCF PORTB,1
GOTO AA
TEST2
BSF PORTB,2
CALL DELAY
BCF PORTB,2
GOTO AA
TEST3
BSF PORTB,3
CALL DELAY
BCF PORTB,3
GOTO AA
DELAY ; GECİKME
movlw D'200'
movwf delay2
LOOP
MOVLW D'255'
MOVWF DELAY1
LOOPP
DECFSZ DELAY1,1
GOTO LOOPP
decfsz delay2,1
goto LOOP
RETURN
END
16f628a nın datasheet ine bakarsan,
input output port kısmında
porta için comparatörün bu portu ortak kullandığını söyler,
ve bu port açılışta comparatöre aittir,
yani portu giriş çıkış yapabilmek için comparatörü kapatman gerekir,
yine datasheet te örnek program verilmiş,
CLRF PORTA ;Initialize PORTA by
;setting
;output data latches
MOVLW 0x07 ;Turn comparators off and
MOVWF CMCON ;enable pins for I/O
;functions
BCF STATUS, RP1
BSF STATUS, RP0 ;Select Bank1
MOVLW 0x1F ;Value used to initialize
;data direction
MOVWF TRISA ;Set RA<4:0> as inputs
;TRISA<5> always
;read as '1'.
;TRISA<7:6>
;depend on oscillator
;mode
Bu genel bir problem,
bu ve 16f628a nın porta,4 pinini high yapamama
her zaman sorulur.
Acemilik,cahillik ve tecrübesizliğin gözü kör olsun diyorum başkada bişey demiyorum :)
Çok teşekkürler Ramu sorun çözülmüştür sayende.