PIC Basic Bilen Arkadaşlar, PORTA.0 Sorunu

mehmetkose

Usta Üye
Katılım
21 Kas 2006
Mesajlar
597
Puanları
196
Arkadaşlar aşağıdaki kodu çalıştırıyorum ama PORTA.0 dan çıkış alamıyorum neresi yanlış yardımcı olursanız sevinirim....acil yardım bekliyorum....!
'**************************************************************@ DEVICE pic16F628a 'işlemci 16F628a
@ DEVICE pic16F628a, WDT_OFF 'Watch Dog timer KAPALI
@ DEVICE pic16F628a, PWRT_OFF 'Power on timer açık
@ DEVICE pic16F628a, PROTECT_ON'Kod Protek AÇIK
@ DEVICE pic16F628a, MCLR_OFF 'MCLR pini kullanılıyor.
@ DEVICE pic16F628a, BOD_OFF
@ DEVICE pic16F628a, LVP_OFF
@ DEVICE pic16F628a, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak
'----------------------
OPTION_REG.7=1 'portB deki dahili PULL-UP lar iptal edildi.
CMCON=7


TRISA=%00111100 'PORTA 0,1 Çıkış; 2,3,4,5 Giriş olarak ayarlandı..!
TRISB=%10001111 'PORTB 0,1,2,3,7 Giriş; 4,5 Çıkış olarak ayarlandı..!


'----------------------
PAUSE 100
'**************************************** *


BASLA:
IF PORTB.3=0 Then
goto KANAL_2
else
GOTO KANAL_1
endIF
goto basla
end
'*****************************************


KANAL_1:




If PORTA.2=1 Then


PORTA.1=1
ELSE
PORTA.1=0
EndIf


'----------------------
If PORTA.2=1 AND PORTA.3=1 Then
PORTA.0=1
ELSE
PORTA.0=0
EndIf

'----------------------
If PORTA.2=1 AND PORTA.3=1 AND PORTA.5=1 Then
PORTB.5=1
ELSE
PORTB.5=0
EndIf
goto basla


'******************************************************************
'******************************************************************
'******************************************************************

KANAL_2:


If PORTB.0=1 Then


PORTA.1=1
ELSE
PORTA.1=0
EndIf

'----------------------
If PORTB.0=1 AND PORTB.1=1 Then


PORTA.0=1
ELSe
PORTA.0=0
EndIf


'----------------------
If PORTB.0=1 AND PORTB.1=1 AND PORTB.2=1 Then


PORTB.5=1
Else
PORTB.5=0
EndIf
GOTO BASLA
'***************************************************************************
'***************************************************************************
End
 
Paylasirsin paylasirsin sonra senin ihtiyacın olur kimse selam bile vermez...
 
Merhaba
PIC Basic bilmiyorum ama şöyle bir yorum yapayım.PORTA.0 'dan "1" alabilmeniz için yazılım gereği PORTA.2 ve PORTA.3 her ikisinin de aynı anda "1" olmaları gerekiyor.Acaba tasarladığınız devrede gerçekten de bu şartlar var mı? AND olduğu için her iki pinin de 1 olması şart.
"If PORTA.2=1 AND PORTA.3=1 Then
PORTA.0=1
ELSE
PORTA.0=0
EndIf"
 
evet şartları sağlıyorum ama olmuyor nedenini anlamadım bir türlü çalışmadı....döngüler filan normal sanrım değil mi?
 
PIC e yükleyip denedim şimdi ama olmadı yine 1 çalışıyor 2 çalışmıyor ama 3 çalışıyor yani PORTA.1 den 4,5 volt çıkıyor PORTB.5 dende 4,5 volt çıkıyor ama PORTA.0 dan çıkması gerekirken çıkmıyor....
 
PIC e yükleyip denedim şimdi ama olmadı yine 1 çalışıyor 2 çalışmıyor ama 3 çalışıyor yani PORTA.1 den 4,5 volt çıkıyor PORTB.5 dende 4,5 volt çıkıyor ama PORTA.0 dan çıkması gerekirken çıkmıyor....

basicte aynı if içinde 2 tane and çalışmıyor. şu şekilde deneyin isterseniz birde;

@ DEVICE pic16F628a
@ DEVICE pic16F628a, WDT_OFF
@ DEVICE pic16F628a, PWRT_OFF
@ DEVICE pic16F628a, PROTECT_ON
@ DEVICE pic16F628a, MCLR_OFF
@ DEVICE pic16F628a, BOD_OFF
@ DEVICE pic16F628a, LVP_OFF
@ DEVICE pic16F628a, INTRC_OSC_NOCLKOUT
'----------------------
OPTION_REG.7=1
ADCON=7
CMCON=7

TRISA=%00111100
TRISB=%10001111
Porta.0=0
Porta.1=0
Porta.6=0
Porta.7=0
Portb.4=0
Portb.5=0
Portb.6=0

PAUSE 100

basla:
IF PORTB.3==0 Then
goto KANAL_2
else
goto KANAL_1
endif
goto basla
end



KANAL_1:

If PORTA.2==1 Then
PORTA.1=1
ELSE
PORTA.1=0
EndIf


If PORTA.2==1 AND PORTA.3==1 Then
PORTA.0=1
ELSE
PORTA.0=0
EndIf

If PORTA.2==1 AND PORTA.3==1 Then
İf porta.5==1 then
PORTB.5=1
endif
ELSE
PORTB.5=0
EndIf
goto basla



KANAL_2:

If PORTB.0==1 Then

PORTA.1=1
ELSE
PORTA.1=0
EndIf

If PORTB.0==1 AND PORTB.1==1 Then


PORTA.0=1
ELSe
PORTA.0=0
EndIf


If PORTB.0=1 AND PORTB.1=1 Then
if portb.2==1 then

PORTB.5=1
endif
Else
PORTB.5=0
EndIf
GOTO BASLA

End
 
kardeş kodların tamamını incelemedim ama şu hatayı gördüm altprogramlara goto komutu ile değil gosub komutu ile gideriz
örnek

loop:

if porta.0=1 then gosub kanal_1
if porta.1=1 then gosub kanal_2

goto loop
'ana göngüden sonra alt programlar gelir

kanal_1:
falan filan

return 'bu komut geldiğin yere geri dön demek

kanal_2:
falan filan
return

end
 

Forum istatistikleri

Konular
128,134
Mesajlar
915,319
Kullanıcılar
449,852
Son üye
ddknght

Yeni konular

Geri
Üst