K

16F628A Yardım

Başlatan kolega35, 10 Mayıs 2012, 15:44:17

kolega35

Arkadaşlar,16F628A ile basit bir devre oluşturdum.Devrede B portuna 6 adet buton bağlanıyor.PIC'ın dahili osilatörünü kullanıyorum,butonlar PULL UP bağlanıyor ve dahili PULL UP dirençlerini kullanmak istiyorum.Yazılımı PBP ile yapıyorum.
Devrenin çalışma prensibi şu:
B0'a basılınca A0 Lojil 1 olacak 200 ms bekleyecek ve lojik 0 olacak
B1'a basılınca A1 Lojil 1 olacak 200 ms bekleyecek ve lojik 0 olacak
B2'a basılınca A2 Lojil 1 olacak 200 ms bekleyecek ve lojik 0 olacak
B3'a basılınca A3 Lojil 1 olacak 200 ms bekleyecek ve lojik 0 olacak
B4'a basılınca A4 Lojil 1 olacak 200 ms bekleyecek ve lojik 0 olacak
B5'a basılınca A6 Lojil 1 olacak 200 ms bekleyecek ve lojik 0 olacak
B7'a basılınca A7 Lojil 1 olacak 200 ms bekleyecek ve lojik 0 olacak
Normalde RA6 ve RA7 16F628A'da osilatör uçları ancak çıkış olarak 6 adet pine ihtiyacım olduğundan ve dahili osilatör kullandığımdan bu iki ucu da çıkış olarak kullanmak istiyorum.PBP de oluşturduğum yazılımı aşağıya ekliyorum.RA0-RA1-RA2-RA3-RA4 pinlerinden çıkışları sorunsuz olarak alıyorum.Ancak RB5 pinine basınca RA6'dan ,RB7'ye basınca RA7'den çıkış alamıyorum.Sorun aşağıda belirttiğim yazılımda mı yoksa 16F628A'nın RA6 ve RA7 pinlerinde doğru bir ayarlama yapamamamdan mı?Teşekkürler.

@ DEVICE PIC16F628A
@ DEVICE PIC16F628A , WDT_OFF
@ DEVICE PIC16F628A , pwrt_on
@ DEVICE PIC16F628A ,protect_on
@ DEVICE PIC16F628A , cpd_on
@ DEVICE PIC16F628A , MCLR_off
@ DEVICE PIC16F628A , INTRC_OSC_NOCLKOUT '(Dahili osilatör kullanılıyor)

TRISB=$FF
TRISA=0
PORTA=0
CMCON=7
OPTION_REG=0 'PORTB Pulluplar etkin.
SYMBOL BUTON0=PORTB.0
SYMBOL BUTON1=PORTB.1
SYMBOL BUTON2=PORTB.2
SYMBOL BUTON3=PORTB.3
SYMBOL BUTON4=PORTB.4
SYMBOL BUTON5=PORTB.5
SYMBOL BUTON6=PORTB.6
SYMBOL BUTON7=PORTB.7

DONGU:
IF BUTON0=0 THEN gosub bt0
IF BUTON1=0 THEN gosub bt1
IF BUTON2=0 THEN gosub bt2
IF BUTON3=0 THEN gosub bt3
IF BUTON4=0 THEN gosub bt4
IF BUTON5=0 THEN gosub bt5
IF BUTON7=0 THEN gosub bt7
GOTO DONGU

bt0:
PORTA=%00000001
pause 200
portA=%00000000
return

bt1:
PORTA=%00000010
pause 200
portA=%00000000
return

bt2:
PORTA=%00000100
pause 200
portA=%00000000
return

bt3:
PORTA=%00001000
pause 200
portA=%00000000
return

bt4:
PORTA=%00010000
pause 200
portA=%00000000
return

bt5:
PORTA=%01000000
pause 200
portA=%00000000
return

bt7:
PORTA=%10000000
pause 200
portA=%00000000
return

END

ete

Programda bir hata goremedim. Calismasi gerekir. Bana gore tek eksiklik port pinleri low oluncaya en az100 ms lik bir gecikme verilmeli.

Ete

kolega35

#2
Teşekkür ederim,deneyeceğim ve sonucu paylaşacağım.Bu durum Isıs programından kaynaklanıyor ve beni simulasyonda yanıltıyor olabilir mi?Olmazsa bir de devreyi gerçekten kurarak deneyeceğim.

nurim

#3
Alıntı yapılan: kolega35 - 10 Mayıs 2012, 15:44:17
.... Normalde RA6 ve RA7 16F628A'da osilatör uçları ancak çıkış olarak 6 adet pine ihtiyacım olduğundan ve dahili osilatör kullandığımdan bu iki ucu da çıkış olarak kullanmak istiyorum.PBP de oluşturduğum yazılımı aşağıya ekliyorum.RA0-RA1-RA2-RA3-RA4 pinlerinden çıkışları sorunsuz olarak alıyorum.Ancak RB5 pinine basınca RA6'dan ,RB7'ye basınca RA7'den çıkış alamıyorum.Sorun aşağıda belirttiğim yazılımda mı yoksa 16F628A'nın RA6 ve RA7 pinlerinde doğru bir ayarlama yapamamamdan mı?Teşekkürler.


Alıntı yapılan: kolega35 - 10 Mayıs 2012, 18:45:03
Teşekkür ederim,deneyeceğim ve sonucu paylaşacağım.Bu durum Isıs programından kaynaklanıyor ve beni simulasyonda yanıltıyor olabilir mi?Olmazsa bir de devreyi gerçekten kurarak deneyeceğim.

Isis programında devre çalışıyor.......Komple dosyayı yükledim.

RB5 pinine basınca RA6'dan



RB7'ye basınca RA7'den çıkış




Kolay Gelsin
nurim

kolega35

#4
Herkese yardımlarından dolayı teşekkür ederim,sorun çözülmüştür.Nurim arkadaşıma rica etsem açık kaynak kodlarını da ekleyebilir mi?Burada kendi yazdığım ile sizinkini karşılaştırmak istiyorum.Eksiklik veya hatanın sebebini bulmalıyım ki bir daha benzer hatalar yapmayayım.Açık kaynak kodlarınızın ASM veya PBP olması farketmez.Teşekkürler.

nurim

Alıntı yapılan: kolega35 - 10 Mayıs 2012, 21:39:15
Herkese yardımlarından dolayı teşekkür ederim,sorun çözülmüştür.Nurim arkadaşıma rica etsem açık kaynak kodlarını da ekleyebilir mi?Burada kendi yazdığım ile sizinkini karşılaştırmak istiyorum.Eksiklik veya hatanın sebebini bulmalıyım ki bir daha benzer hatalar yapmayayım.Açık kaynak kodlarınızın ASM veya PBP olması farketmez.Teşekkürler.

Senin programında her hangi bir değişiklik yapmadım. Ama açık kodu dahil komple dosyayı tekrar veriyorum.
Kolay Gelsin
nurim

Powered by EzPortal