16f877 sİnuse gore ÇİkİŞ yardım (acil)

bu satır(döngü) adc bitene kadar bekletir
 
hımmm. peki ben giriş yokken çikiş 0 giriş varken çikiş 1 olmasını nasıl yaparım:S
 
arkaşalar yardımıyla en sonunda iki proteusta eksiksiz çalişan iki program buldum


1.si
DEFINE ADC_BITS 8 'ADC 8 BIT
DEFINE ADC_CLOCK 3 'CLOCK KAYNAĞI
DEFINE ADC_SAMPLEUS 50 'ÖRNEKLEME ZAMANI 50uS

TRISA=000001 'A PORTUNUN A0 UCU GİRİŞ
TRISB=0 'B PORTU ÇIKIŞ
PORTA=0 'A PORTUNUN İLK DEĞERİ 0
PORTB=0 'B PORTUNUN İLK DEĞERİ 0

ADCON1=00000

ADC_DEGER VAR byte

BASLA:
ADCIN 0,ADC_DEGER '0 nolu kanaldan Analog değeri oku ve ADC_DEĞER değişkenine aktar.

BAK:IF ADCON0.2=1 THEN BAK
IF ADC_DEGER<=250 then
PORTB.0=0
GOTO BASLA
else
PORTB.0=1
ENDIF
end


2.si

DEFINE ADC_BITS 8 'A/D çevirim sonucu kaç bit olacak
DEFINE ADC_CLOCK 3 'Clock kaynağı (3=rc)
DEFINE ADC_SAMPLEUS 50
'-------------------------------------------------------------------------------
adcon1=001110
'-------------------------------------------------------------------------------
ham1 var word
ham2 var word
'-------------------------------------------------------------------------------
trisb=0:portb=0
led var portb.0
'-------------------------------------------------------------------------------

basla:
ADCIN 0,ham1
pause 25
adcin 0,ham2
pause 15
if ham1<ham2 then
led=0
goto basla
else
led=1
endif
end




iki programda da giriş işaretin tepe değeri cıvarından sonra çikişi devamlı 1 verio (istediğimde buydu sağolsunlar)


fakat asıl devremde ( programı PIC e programlayıp borda taktıktan sonra giriş i vermeden bile çikişi 1 verio pıc yardımcı oalbilecek olan varsa sevinirim teşekkurler...
 
kardeş ilk programında genel itibariyle doğru sadece hata şuydu

_____________Önceki program___________________
{ BAK:IF ADCON0.2=1 THEN BAK
*ADC_ESKI=ADC_DEGER

*IF ADC_DEGER>=ADC_ESKI THeN BAK
PORTB.0=1}
_____________doğru hali________________________

=>{BAK:IF ADCON0.2=1 THEN BAK

*IF ADC_DEGER < ADC_ESKI THeN BAK
PORTB.0=1
*ADC_ESKI=ADC_DEGER }
__________________________
yapman gereken tek şey "*" ile gösterdiğim satırlarda ufak bir kaç değişiklik yapmak :D

kolay gelsin
 
protech ' Alıntı:
kardeş ilk programında genel itibariyle doğru sadece hata şuydu

_____________Önceki program___________________
{ BAK:IF ADCON0.2=1 THEN BAK
*ADC_ESKI=ADC_DEGER

*IF ADC_DEGER>=ADC_ESKI THeN BAK
PORTB.0=1}
_____________doğru hali________________________

=>{BAK:IF ADCON0.2=1 THEN BAK

*IF ADC_DEGER < ADC_ESKI THeN BAK
PORTB.0=1
*ADC_ESKI=ADC_DEGER }
__________________________
yapman gereken tek şey "*" ile gösterdiğim satırlarda ufak bir kaç değişiklik yapmak :D

kolay gelsin

yardımın için sağol fakat oyle yapınca hata verio , ben anlayamamiş olabilirim .PBP dosyasını atabilirsen sevinirim
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,854
Kullanıcılar
449,598
Son üye
kadir12366

Yeni konular

Geri
Üst