Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

16F628 yardım

Başlatan 122055221, 04 Ağustos 2006, 00:04:53

122055221

Arkadaşlar 16F628 'in bütün portlarını giriş yada çıkış olarak kullanmak istiyom. Bunu yapmam için konfigürasyon ayarlarında ne gibi değişiklikler yapmam gerekiyo. Mesala portA.6 ve portA.7 yi high veya low komutlarını kullanarak programladığımda olmuyo. :?:

Veli B.

Kod örneğini buraya koyar mısın?
TRIS registerlarını  kontrol ettin mi?
Bazı pinlerin özel durumları vardır.Analog girişleri digitale çevirdin mi?
OSC ayarını dahili osc olarak yaptın mı vs.Kod üzerinde daha yardımcı olunur.

122055221

@ Device MCLR_OFF
@ DEVICE INTRC_OSC_NOCLKOUT
CMCON = 07


Programın başında bu ayarları kullanıyom ve bazı pinlerde high ve low benzeri komutlar işe yaramıyo

OG

Alıntı yapılan: "üstat katana"TRIS registerlarını  kontrol ettin mi?
demiş, ama bunları yani TRIS atamalarını yazmamışsın, kullanmadınmı yoksa buraya mı aktarmadın?

TRISA=%00000000  'A portu hepsi çıkış
TRISB=%11111111  'B portu hepsi giriş gibi.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

122055221

evet tris registerlarını da değiştiriyorum olmuyo

OG

2 çözüm yöntemi var sanıyorum.

1- HIGH PORTA.X  değilde  PORTA.X=1 benzer şekilde PORTA.X=0

2-Önce ilgili portlara bir isim ata. Sonra program içinde High veya low yap
PORTA.X var giris
.
.
high giris
low giris

gibi

.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Veli B.

Kodu hala göremedim.Bu şekilde yardımcı olmak zor.Yardım etmek isteyenlerin işini kolaylaştırın ki, sizin de işiniz kolaylaşsın.Kimse, hele bizim işimizde vakit bu denli değerli iken, oturup "Acaba bunu böyle yapmış olabilir mi?" diye düşünmeyebilir.

Verdiğin config ayarlarına göre dahili osc çalıştığı için A6 ve A7 nin i/o olarak çalışmasına engel görünmüyor.
Komut diziminde hata olabilir( ki bu durumda derleme de yapamaman lazım gelir).
Algoritman da hata olabilir(ilgili pinlere hükmedecek rutin hiç çalışmıyor olabilir)
Devrende hata olabilir.
Register ayarlamalarında hata olabilir.

Kodu buraya koymalısın yani, hatta var ise şemanı da.

Alıntı YapArkadaşlar 16F628 'in bütün portlarını giriş yada çıkış olarak kullanmak istiyom. Bunu yapmam için konfigürasyon ayarlarında ne gibi değişiklikler yapmam gerekiyor.. Mesala portA.6 ve portA.7 yi high veya low komutlarını kullanarak programladığımda olmuyor.

Birde, senden ricam, güzel dilimizi, hakkıyla kullanmak için dikkat!

seco06

İlkönce porta yı ı/o yapman gerekli
örnek:
cmcon=7 'bu mutlaka başta olacak
tüm portlar giriş:
trisa=11111111
trisb=11111111
tüm portlar çıkış
trisa=00000000
trisb=00000000

122055221

seco06 dediklerinide yaptım olmuyor. Örnek kodu aşağıda veriyorum. Burada high komutunda pin kısa süreliğine +5V seviyesine çıkıyor ve hemen sıfır a çekiliyor. Normalde high komutundan sonra low komutu gelene kadar +5V seviyesinde kalması gerekmiyor mu? Ayrıca high komutu yerine kullanabileceğim bütün komutları denedim.

@ Device MCLR_OFF 
@ DEVICE INTRC_OSC_NOCLKOUT 
CMCON = 07
include "modedefs.bas"

i var byte
e var byte
trisA=%00101000

start:
if portA.3=1 then
high portA.7
goto tus
else
goto start
endif

tus:
for e=1 to 50
serout2 PortA.0,16780,["Z",85]
pause 1
next e
e=0

for i=1 to 22
if portA.5=1 then reset
pause 500
next i
low portA.7
high portA.6
end

reset:
for e=1 to 50
serout2 portA.0,16780,["Z",89]
pause 1
next e
e=0
pause 6000
high portA.2
end

122055221

Arkadaşlar sorunu buldum ama çözümünü bulamadım.
Sorun şu ki; serout2 ile başlayan satırları silince yani seri haberleşme yapılmadığında normal çalışıyo ama benim aynı zamanda serout2 komutunu kullanmam gerekiyo. Yokmu bi çözüm...