hatamı yapıyorum

Başlatan Evren KILIÇ, 27 Mart 2009, 22:55:36

Evren KILIÇ

mrb  ardaşlar pıc konusunda daha yolun başındayım ilk projem denilebirir yapmak istediğim cep tel ile cihaz kontrolü devrede 8870 kod çözücü ile 16f84 a ya veriyi girip işlemek
şimdi 8870 in Q1 ucu RB0
                   Q2 ucu RB1
                   Q3 ucu RB2
                   Q4 ucu RB3
                   SID ucu RB4
de baglı olsun pıc in RA1 pini çıkış olarak atayalım ve telefonda 1 tuşuna basıldıgında 8870 in outputları
Q1:1
Q2:0
Q3:0
Q4:0   olsun
ve bu inputlar pıc e geldiginde
RB5 hıgh olsun şimdi bunu için şöyle bir prog. yazsak olurmu

BASLA
TRISA=%11111
TRISB=%00000000
PORTA=0
PORTA=0
BASLA
IF PORTB.0=1
  PORTB.1=0
  PORTB.2=0
  PORTB.3=0 THEN
  PORTA.1=1
GOTO BASLA
END
 

bu konuda bana yardımcı olurmusunuz en azından bir örnek verebilirseniz devamını getirebilirim diye düşünüyorum
bu kali ile derlemeye çalıştıgımda daha birinci komutta hata alıyorum
[email]evren1623@hotmail.com[/email]

fofo

[STD   VAR PORTB.0
Q1 VAR PORTB.1
Q2 VAR PORTB.2
Q3 VAR PORTB.3
Q4 VAR PORTB.4
DTMF   VAR BYTE

LOOP:
   if STD=1 then
    while STD=1 'dtmf tonu kayboluncaya kadar bekle
     pause 31
       wend      
    dtmf=0
     DTMF =Q1+(2*Q2)+(4*Q3)+(8*Q4)
   
  ..................
...........................
..............................
.............................
end

]
Şeklinde CM8870 i okuyabilirsin. Noktalı kısımlarada DTMF koduyla yapmak isteiğin işlemlerle ilgili komutları kullanırsın

Evren KILIÇ

[STD VAR PORTB.0
Q1 VAR PORTB.1
Q2 VAR PORTB.2
Q3 VAR PORTB.3
Q4 VAR PORTB.4
DTMF VAR BYTE

LOOP:
if STD=1 then
while STD=1 'dtmf tonu kayboluncaya kadar bekle
pause 31
wend
dtmf=0
DTMF =Q1+(2*Q2)+(4*Q3)+(8*Q4)
IF PORTB.0=1
PORTB.1=0
PORTB.2=0
PORTB.3=0 THEN
PORTA.1=1
GOTO BASLA
END

şeklindemi devam edecegim
[email]evren1623@hotmail.com[/email]

fofo

DTMF =Q1+(2*Q2)+(4*Q3)+(8*Q4)

Bu hesaplamayla zaten PORTB yi okuyarak DTMF değişkenine atmış oluyoruz. Mesela karşıdan 4 rakamına karşılık gelen DTMF tonunu bu şeklide hesaplamış oluyoruz. Sonrasında sana hangi tonla ne iş yapacağını yazmak kalıyor.

ROLE var PORTA.1

IF DTMF=2 then
ROLE=1
ENDIF

gibi kontrol programı yazabilirsin

bymrz

bence ilk olarak başlığı yazarken hata yapıyorsun  ;)

Evren KILIÇ

şimdi arkadaaşlar anladıgımı yazayım DTMF =Q1+(2*Q2)+(4*Q3)+(8*Q4) buıradan anladıgım 8870 1 tuşuna basıldıgında q1-q2-q3-q4- çıkışları 1-0-0-0 şeklinde oluyor bunu hesaplarken 1+(2*0)+(4*0)+(8*0)=1 2 tuşuna basıldıgında ise 8870 çıkışları 0-1-0-0 şeklinde oluyor buda 0+2+0+0=2 şeklindemi oluyor dogrumudur eger dogru ise komutları yazarken
ROLE1 VAR PORTA.1
ROLE2 VAR PORTA.2
ROLE3 VAR PORTA.3

IF DTMF=2 then
ROLE1=1
IF DTMF=3 then
ROLE1=0
IF DTMF=4 then
ROLE2=1
IF DTMF=5 then
ROLE2=0
IF DTMF=6 then
ROLE3=1
IF DTMF=7 then
ROLE3=0

ENDIF

şeklindemi olması gerekiyor
[email]evren1623@hotmail.com[/email]

Evren KILIÇ

Alıntı yapılan: "alone_lover"bence ilk olarak başlığı yazarken hata yapıyorsun  ;)
peki nasıl başlamam gerekiyor bu konuda yardımcı olurmusun
birde bu 8870 ton bilgisi geldiği sürece std ucundan  sürekli 1 (5 v ) veriyor bunu nasıl kulanmalıyım yada kullanmasam olurmu
[email]evren1623@hotmail.com[/email]

Evren KILIÇ

peki bunu dogrumudur


TRISA=%00000
TRISB=11100000
PORTA=0
PORTB=0
SYMBOL ROLE1=PORTB.5
SYMBOL ROLE2=PORTB.6
SYMBOL ROLE3=PORTB.7
[STD VAR PORTB.4
Q1 VAR PORTB.0
Q2 VAR PORTB.1
Q3 VAR PORTB.2
Q4 VAR PORTB.3
DTMF VAR BYTE

LOOP:
if STD=1 then
while STD=1 'dtmf tonu kayboluncaya kadar bekle
pause 31
wend
dtmf=0
DTMF =Q1+(2*Q2)+(4*Q3)+(8*Q4)
IF DMTF=1 THEN
ROLE1=1
IF DMTF=4 THEN
ROLE1=0
IF DMTF=2 THEN
ROLE2=1
IF DMTF=5 THEN
ROLE2=0
IF DMTF=3 THEN
ROLE3=1
IF DMTF=6 THEN
ROLE3=0
ENDIF
GOTO LOOP:
END ]
[email]evren1623@hotmail.com[/email]