Airslowf
Üye
- Katılım
- 7 Eki 2021
- Mesajlar
- 14
- Puanları
- 1
- Yaş
- 24
Merhabalar fotoğraflarını attığım gibi elimde bir dtmf devresi var gönderdiğim microcode dosyasında ise bu devreye ait PBP kodları mevcut PIC e bu kodları attığımda devrem çalışmıyor 8870 entegrem " * " tuşuna basıldığında algılamıyor ve entegreyi değiştirdim yine aynı sorun PIC i değiştirdim yine aynı sorun ölçümler esnasında Q1,Q2,Q3,Q4 girişlerinin çalıştığını gördüm ardından PIC i de ölçerek test ettim ve çalıştığını gördüm fakat röleli çektirtemiyorum. (burada bu kadar anlatabildim henüz yeni bir elektronikçiyim anlatamadıysam kusura bakmayın yardımlarınızı bekliyorum).
Devrenin Kodları Bunlar
''@ DEVICE pic16F628A
'@ DEVICE pic16F628A, WDT_OFF
'@ DEVICE pic16F628A, PWRT_ON
'@DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
'@ DEVICE pic16F628A, PROTECT_ON
TRISB=%11111111
TRISA=%11110000
PORTA=0
PORTB=0
CMCON=7 '
OPTION_REG.7=0
STD var PORTB.0 '1 STD 8870)TONE enable
E1 var PORTB.4 'Q1 du 8870
E2 var PORTB.3 'Q2 du 8870
E3 var PORTB.2 'Q3 du 8870
E4 var PORTB.1 'Q4 du 8870
SIFRE_1 var PORTA.0 '
SIFRE_2 var PORTA.1
SIFRE_3 var PORTA.2
SIFRE_4 var PORTA.3
b1 VAR BYTE
b2 VAR BYTE
b3 VAR BYTE
TEMP VAR BYTE
b1=0
b2=0
b3=0
c1 var BYTE '1° code DTMF
c2 var BYTE '2° code DTMF
c3 var BYTE '3° code DTMF
c4 var BYTE '4° code DTMF
Q1 var BIT
Q2 var BIT
Q3 var BIT
Q4 var BIT
READ 10,temp
IF TEMP=10 THEN SIFRE_1=1
IF TEMP=10 THEN SIFRE_2=1
IF TEMP=10 THEN SIFRE_3=1
IF TEMP=10 THEN SIFRE_4=1
BASLA:
DTMF1:
BUTTON STD,1,255,0,b1,1,DECODER1
PAUSE 20
BUTTON STD,0,255,0,b2,1,RAZ
GOTO DTMF1
DECODER1:
Q1=E1
Q2=E2
Q3=E3
Q4=E4
c1 = Q1 + 2*Q2 + 4*Q3 + 8*Q4
GOTO DTMF2
DTMF2:
b3=0
WHILE b3<75
BUTTON STD,1,255,0,b1,1,DECODER2
PAUSE 20
b3=b3+1
WEND
GOTO DTMF1
DECODER2:
Q1=E1
Q2=E2
Q3=E3
Q4=E4
c2 = Q1 + 2*Q2 + 4*Q3 + 8*Q4
GOTO SIFRE
RAZ:
Q1=0
Q2=0
Q3=0
Q4=0
GOTO DTMF1
END
SIFRE:
PAUSE 10
IF c1=12 AND c2=1 THEN
SIFRE_1=1
WRITE 10,10
ause 10
ENDIF
IF c1=10 AND c2=1 THEN
SIFRE_1=0
WRITE 10,255
ause 10
ENDIF
IF c1=12 AND c2=2 THEN
SIFRE_2=1
WRITE 10,10
ause 10
ENDIF
IF c1=10 AND c2=2 THEN
SIFRE_2=0
WRITE 10,255
ause 10
ENDIF
IF c1=12 AND c2=3 THEN
SIFRE_4=1
WRITE 10,10
ause 10
ENDIF
IF c1=10 AND c2=3 THEN
SIFRE_4=0
WRITE 10,255
ause 10
ENDIF
IF c1=12 AND c2=4 THEN
SIFRE_3=1
WRITE 10,10
ause 10
ENDIF
IF c1=10 AND c2=4 THEN
SIFRE_3=0
WRITE 10,255
ause 10
ENDIF
IF c1=1 AND c2=1 THEN
SIFRE_1=1
SIFRE_2=1
SIFRE_3=1
SIFRE_4=1
WRITE 10,10
ause 10
ENDIF
IF c1=3 AND c2=3 THEN
SIFRE_1=0
SIFRE_2=0
SIFRE_3=0
SIFRE_4=0
WRITE 10,255
ause 10
ENDIF
c1=0
c2=0
c3=0
c4=0
GOTO DTMF1
Devrenin Kodları Bunlar
''@ DEVICE pic16F628A
'@ DEVICE pic16F628A, WDT_OFF
'@ DEVICE pic16F628A, PWRT_ON
'@DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
'@ DEVICE pic16F628A, PROTECT_ON
TRISB=%11111111
TRISA=%11110000
PORTA=0
PORTB=0
CMCON=7 '
OPTION_REG.7=0
STD var PORTB.0 '1 STD 8870)TONE enable
E1 var PORTB.4 'Q1 du 8870
E2 var PORTB.3 'Q2 du 8870
E3 var PORTB.2 'Q3 du 8870
E4 var PORTB.1 'Q4 du 8870
SIFRE_1 var PORTA.0 '
SIFRE_2 var PORTA.1
SIFRE_3 var PORTA.2
SIFRE_4 var PORTA.3
b1 VAR BYTE
b2 VAR BYTE
b3 VAR BYTE
TEMP VAR BYTE
b1=0
b2=0
b3=0
c1 var BYTE '1° code DTMF
c2 var BYTE '2° code DTMF
c3 var BYTE '3° code DTMF
c4 var BYTE '4° code DTMF
Q1 var BIT
Q2 var BIT
Q3 var BIT
Q4 var BIT
READ 10,temp
IF TEMP=10 THEN SIFRE_1=1
IF TEMP=10 THEN SIFRE_2=1
IF TEMP=10 THEN SIFRE_3=1
IF TEMP=10 THEN SIFRE_4=1
BASLA:
DTMF1:
BUTTON STD,1,255,0,b1,1,DECODER1
PAUSE 20
BUTTON STD,0,255,0,b2,1,RAZ
GOTO DTMF1
DECODER1:
Q1=E1
Q2=E2
Q3=E3
Q4=E4
c1 = Q1 + 2*Q2 + 4*Q3 + 8*Q4
GOTO DTMF2
DTMF2:
b3=0
WHILE b3<75
BUTTON STD,1,255,0,b1,1,DECODER2
PAUSE 20
b3=b3+1
WEND
GOTO DTMF1
DECODER2:
Q1=E1
Q2=E2
Q3=E3
Q4=E4
c2 = Q1 + 2*Q2 + 4*Q3 + 8*Q4
GOTO SIFRE
RAZ:
Q1=0
Q2=0
Q3=0
Q4=0
GOTO DTMF1
END
SIFRE:
PAUSE 10
IF c1=12 AND c2=1 THEN
SIFRE_1=1
WRITE 10,10
ENDIF
IF c1=10 AND c2=1 THEN
SIFRE_1=0
WRITE 10,255
ENDIF
IF c1=12 AND c2=2 THEN
SIFRE_2=1
WRITE 10,10
ENDIF
IF c1=10 AND c2=2 THEN
SIFRE_2=0
WRITE 10,255
ENDIF
IF c1=12 AND c2=3 THEN
SIFRE_4=1
WRITE 10,10
ENDIF
IF c1=10 AND c2=3 THEN
SIFRE_4=0
WRITE 10,255
ENDIF
IF c1=12 AND c2=4 THEN
SIFRE_3=1
WRITE 10,10
ENDIF
IF c1=10 AND c2=4 THEN
SIFRE_3=0
WRITE 10,255
ENDIF
IF c1=1 AND c2=1 THEN
SIFRE_1=1
SIFRE_2=1
SIFRE_3=1
SIFRE_4=1
WRITE 10,10
ENDIF
IF c1=3 AND c2=3 THEN
SIFRE_1=0
SIFRE_2=0
SIFRE_3=0
SIFRE_4=0
WRITE 10,255
ENDIF
c1=0
c2=0
c3=0
c4=0
GOTO DTMF1