Proton Basicde Dtmfout Komutu ve Özelliği

Başlatan tekniker_murat, 07 Kasım 2008, 07:41:52

tekniker_murat

Arkadaşlar Selamun aleyküm ve hayırlı sabahlar proton basic ile telefon arama modulü yapmak istiyorum devrem üç aşağı beş yukarı hazır sadece bir röle takıp birde direnç ekleyip işimi görmeye çalışacağım fakat !!
Proton basicde bulunan komutlardan DTMFOUT komutu ile telefon numaralarını çevirebileceğimi düşünüyorum.Tek sorun devremde eski sistemleri örnek alarak bakarsak ki halen daha birçok alarm cihazının üstünde görmekteyim röleli arama yapan telefon arama modulleri var onları elime alıp hiç inceleme şansım olmadığından dolayı sizlere sormak istiyorum  
1- http://rapidshare.com/files/161401446/tel_arama.bmp.html adresine kaydettiğim devre şemasını kendim çizdim ama orada tel hattı yazan yere benim telefonumun hattını bağlasam ve dtmfout komutu kullanarak komutta geçen numarayı arattırsam karşı tarafa çağrı yollayabilirmiyim bu arada o devre doğrumudur eksiği yada yanlışı varmıdır en önemlisi şu anda bu kısmı doğrumu yanlış mı eksik mi ? arkadaşlar bunu tam olarak öğrenmek istiyorum...
2- Dtmfout komutunu proton basic de inceledim aynı pic basicdeki gibi değişen bişey yok sadece proton daha gelişmiş şekilde kullanıma izin veriyor şöyle ki...
DTMFOut PORTA.0,250,100,[addr_1,addr_2,addr_3,addr_4,addr_5,addr_6,addr_7,addr_8,addr_9,addr_10,addr_11]
Görüldüğü gibi addr_x şeklindeki değişkenlerinin içerisindeki datakarı direk okutabiliyoruz
oysa pic basicde bu şekilde izin vermiyor olduğunu hatırlıyorum sadece numaraların girilebildiği şeklinde aklıma geliyor ama yanılıyorda olabilirim
Burada sormak istediğim konu ise şu DTMFOUT komutunu şekil olarak ele aldığımız zaman şu şekilde bir komut karşımıza çıkıyor.
DTMFOUT Pin , { OnTime } , { OffTime, } [ Tone {, Tone…} ]
Evet arkadaşlar burada OnTime ve OffTimer neyi teşkil ediyor ve ben bu komutu devremde kullanırken bu ontime offtime sürelerini kaç olarak ayarlamam lazım ki bir arama gerçekleştirebileyim.
3- Bu DTMFOUT komutunu 4Mhz de kullanamazmıyız illa 20 Mhz olması gerekir mi ( ben 4mhz kristal taktım şimdi işin yoksa sök tak yap birde delikli plakete yaptım devreyi o yüzden )
4- Bu devreyi bitirdikten sonraki aşamada ise iki ek daha yapmayı düşünüyorum bunlardan ilki şu hafizaye tel numaralarını kaydettik ve picin ilgili pinine sinyal gelince pic hafızadaki tel numarasını aramaya başlayacak bu zaten görevi amaaaa
a) ekranda karşı taraf çalıyor mu çalmıyor mu meşkul mü cevap vermiyor mu yada örneğin 5 defa çaldıktan sonra cevap verilmesse telefonun kapatılmasını sağlayacak ve bu çalma yada meşkul durumlarını da ekranda gösterecek sanırım bunu yapmak için de tel hattındaki o anda oluşan frekansları okutmak ve işleme almak gerekiyor bunun için meşhur COUNTER komutunu kullanabilirmiyiz yada devresi nasıl olmalı ki tel hattından o anda frekansları okuyabilelim ( birde tel hattındaki bu meşkul tonunun yada diğer herhangi bir tonun dalga şekilleri kare dalgamıdır ) yada bu counter komutu ile bu işi yapamaz isek bunun yolu yordamı hangi komuttur ?
b) işte son sorum  :oops:  örneğin elimizde bir isd1212 entegresi yada buna benzer ses kayıt entegreleri var biz bunlara kaydını aldığımız sesi tel hattına en az parazitle karşı taraf teli açtığında nasıl bir devre yada hangi elemanların nasıl bağlanması hali ile iletebiliriz
[email]murat.yagci.1984@gmail.com[/email]

OG

1- Şema uygun değil. Röle vasıtası ile DTMF sinyali tel hattına enjekte edemezsin. Röle, telefon hattının açılması için gerekli, yani hat açmak için ayrı bir port kullanmak, dtmf vermek için ayrı port kullanmak gerekir. Hat açılınca çevir sesi alınabilir ve dtmf gönderilebilir. DTMF sinyali telefon hattına vermek için hat trafoları kullanmak uygundur, trafosuz direk uygulayan arkadaşlar da var, forumda örnekleri var.

2- DTMFOUT Pin , { OnTime } , { OffTime, } [ Tone {, Tone…} ]  Tone, bildiğimiz tuşların karşılığını ifade eder. OnTime= Tonun üretilme süresi, OffTime= tonlar arası boşluk süresi. Bu süreler telefon santrallerinin algılaması ile ilgilidir. Ontime kısa tutulursa tuşa basıldığı algılanmıyabilir, uzun tutulursa boşuna zaman harcanmış olur. Offtime da 2 tuş arası boşluk süresidir. Fazla kısa tutulursa 2 ayrı ton beraber gibi algılanabilir ve tonlardan birisi görülmeden atlanmış olur. Uzun tutulursa yine boşa harcanan süre demektir.

3- 4MHz kullanabilirsin fakat DTMF kalitesi düşer. Telefon santralinin dtmfi problemsiz algılaması için xtal frekansının yüksek olmasında fayda vardır.

Ayrıca bu filtreyi pic çıkışında kullanmak gerekir.


4-
a) işte bu problem, zamanında baya konuşuldu, foruma bakınız.
b) Frekans ve genlik uygunsa her türlü ses sinyalini telefon hattına enjekte edebilirsiniz. En uygun yöntem hat trafosu. Bu da forumda var.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

teknikelektronikci

merhaba sanirim hat trafosu yerine optocuplör de kullanabilirsiniz daha güzel olur hem ucuz hem boyut ( not : semana bakmadim)
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

tekniker_murat

Ya arkadaşlar birkaç örnk devre koymanızı rica etsem çok fazla ileri gitmiş olurmuyum acaba şu tel hattını kontrol etmeyle alakalı olarak
Mesela hattı nasıl açacaz numarayı nasıl çevirecez sonra çevirdik mi kayıtlı sesi hatta nasıl yollucaz telefonun meşkulmu gibi durumlarını nasıl anlıcaz yani daha açıklayıcı olursa çok sevinirim araştırma yapıyorum ama hepsi nerdeyse yarım kalmış ve tek örnek bile yok denecek kadar az ve olanlar da hep yarım bıraklımış en azından birkaç örnek görsem baya yol açıcı bilgiler olacak ama artık bahtımıza bakalım nolcak
[email]murat.yagci.1984@gmail.com[/email]

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

teknikelektronikci

zamaninda netten indirdim belki isne yarar

DEFINE OSC 20

BUZZER		VAR	PORTA.0
ALARM_LED	VAR	PORTA.1
ALARM_OUT	VAR	PORTA.2
TEL_ON		VAR	PORTA.3
TEL_AUDIO	VAR	PORTA.4
PIRINPUT	VAR	PORTA.5

ROW2		VAR	PORTB.0
ROW4		VAR	PORTB.1
ROW3		VAR	PORTB.2
COL1		VAR	PORTB.3
COL2		VAR	PORTB.4
COL3		VAR	PORTB.5
ROW1		VAR	PORTB.6

TUS_DONUS	VAR	BYTE
HAFIZA_NO	VAR BYTE
DEGER		VAR BYTE
SANIYE_SAY	VAR BYTE
I			VAR BYTE

;	CMCON=7

	ADCON1=7	; 819 ÿÝÿÇÿÝN
	OPTION_REG=0
		
	OUTPUT	BUZZER
	OUTPUT	ALARM_LED
	OUTPUT	ALARM_OUT
	OUTPUT	TEL_ON
	OUTPUT	TEL_AUDIO
	INPUT	PIRINPUT

	OUTPUT	ROW1
	OUTPUT	ROW2
	OUTPUT	ROW3
	OUTPUT	ROW4
	INPUT 	COL1
	INPUT 	COL2
	INPUT 	COL3

	PORTA=0
	PORTB=0
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	HAFIZA_NO=0

MAIN_LOOP:
; ALARM KAPALI DURUMDA
	LOW ALARM_LED
	
	CALL TUSLARI_TARA
	IF TUS_DONUS=12 THEN KAYIT_MENUSU
	IF TUS_DONUS<10 THEN SIFRE_GIR_ALARM_AC	; ÿÞÿÝFRE GÿÝRÿÝLÿÝP ALARM ÿÇALIÿÞTIRILACAK
	
	GOTO MAIN_LOOP

; ---------------------------------------------------
; ÿÞÿÝFRE GÿÝRÿÝLÿÝP ALARM ÿÇALIÿÞTIRILACAK
SIFRE_GIR_ALARM_AC:
	READ 0,HAFIZA_NO	; ÿÞÿÝFRENÿÝN 1. KARAKTERÿÝ
	IF TUS_DONUS<>HAFIZA_NO THEN ALARM_ACMADAN_CIK
ALARM_AC_1:
	CALL TUSLARI_TARA
	IF TUS_DONUS>9 THEN ALARM_AC_1
	READ 1,HAFIZA_NO	; ÿÞÿÝFRENÿÝN 2. KARAKTERÿÝ
	IF TUS_DONUS<>HAFIZA_NO THEN ALARM_ACMADAN_CIK
ALARM_AC_2:
	CALL TUSLARI_TARA
	IF TUS_DONUS>9 THEN ALARM_AC_2
	READ 2,HAFIZA_NO	; ÿÞÿÝFRENÿÝN 3. KARAKTERÿÝ
	IF TUS_DONUS<>HAFIZA_NO THEN ALARM_ACMADAN_CIK
ALARM_AC_3:
	CALL TUSLARI_TARA
	IF TUS_DONUS>9 THEN ALARM_AC_3
	READ 3,HAFIZA_NO	; ÿÞÿÝFRENÿÝN 4. KARAKTERÿÝ
	IF TUS_DONUS<>HAFIZA_NO THEN ALARM_ACMADAN_CIK
; ALARM DEVREYE ALINIYOR
	GOTO ALARM_DEVREYE_AL:

ALARM_ACMADAN_CIK:
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	GOTO MAIN_LOOP
; -----------------------------------
; ALARM 30 SANÿÝYE BEKLENECEK VE DEVREYE ALINACAK
ALARM_DEVREYE_AL:
	FOR HAFIZA_NO=0 TO 50
		TOGGLE ALARM_LED
		CALL ZIRLA
		PAUSE 300
		CALL TUSLARI_TARA
		IF TUS_DONUS<10 THEN     ; BÿÝR TUSA BASILMIS. ALARM ÿÝPTAL
			LOW ALARM_LED
			HIGH BUZZER
			GOTO MAIN_LOOP
		ENDIF
	NEXT
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA	; SON UYARI YAPILDI. ALARM ARTIK DEVREDE
					
	HIGH ALARM_LED
HAREKET_BEKLE:	; ALARM AÿÇIK VE HAREKET GELENE KADAR BURADA BEKLE
	IF PIRINPUT=0 THEN HAREKET_BEKLE
	PAUSE 200
	IF PIRINPUT=1 THEN HAREKET_VAR
	GOTO HAREKET_BEKLE
; ---------------------------------------------------
HAREKET_VAR:
; HAREKET VAR ÿÝSE 30 SANÿÝYE BEKLENECEK
; ÿÞÿÝFRE GÿÝRÿÝLMEZSE ALARM ÿÇALACAK VE
; TELEFONLAR ARANACAK

	SANIYE_SAY=0
	HAFIZA_NO=0
	
BEKLE_30_SN:
	SANIYE_SAY=SANIYE_SAY+1
	IF SANIYE_SAY>62 THEN GOTO SURE_DOLDU_TEL_ARA
	CALL TUSLARI_TARA
	IF TUS_DONUS<10 THEN	; BÿÝR TUÿÞA BASILMIÿÞ
		READ HAFIZA_NO,DEGER
		IF TUS_DONUS=DEGER THEN	; TUS KARAKTERI DOÿÐRUDUR
			HAFIZA_NO=HAFIZA_NO+1 
		ELSE
			HAFIZA_NO=0
		ENDIF
	ENDIF
	IF HAFIZA_NO>3 THEN MAIN_LOOP ; ÿÞÿÝFRE DOÿÐRUDUR. ANA MENUYE GÿÝT
	PAUSE 200
	CALL ZIRLA
	TOGGLE ALARM_LED
	GOTO BEKLE_30_SN	
; ---------------------------------------------
SURE_DOLDU_TEL_ARA:
; 1. TELEFON ARANIYOR
	HIGH ALARM_OUT	; ALARM ÿÇIKIÿÞI VER
	
	LOW BUZZER	; BUZZER SÿÜREKLÃ¿Ý Ã¿ÇAL
	HIGH TEL_ON		; TELEFON HATTI AÿÇILDI.
	PAUSE 500	
	HAFIZA_NO=4
	SANIYE_SAY=0	; ÿÞÿÝFRE ÿÝÿÇÿÝN KULLANILACAK

TEL_1_CEVIR:	
	READ HAFIZA_NO,DEGER
	IF DEGER>9 THEN TEL_1_BITTI
	DTMFOUT TEL_AUDIO, [DEGER]
	HIGH ALARM_LED
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO>14 THEN TEL_1_BITTI
	GOTO TEL_1_CEVIR
TEL_1_BITTI:
	FOR I=0 TO 30  ; 30 SANIYE BOYUNCA
		CALL TUSLARI_TARA
		IF TUS_DONUS<10 THEN	; BÿÝR TUSA BASMIS
			READ SANIYE_SAY,DEGER
			IF DEGER=TUS_DONUS THEN 
				SANIYE_SAY=SANIYE_SAY+1
			ELSE
				SANIYE_SAY=0
			ENDIF
			IF SANIYE_SAY=4 THEN GOTO SIFRE_DOGRU_ALARM_KAPAT
		ENDIF
		HIGH ALARM_LED
		PAUSE 1000	; TEL NO ÿÇEVRÿÝLDÿÝ. 1 SN BEKLE
		SOUND TEL_AUDIO,[100,10,50,10,100,10] ; BU SESi TELE VER
	NEXT
	LOW TEL_ON	; TEL. KAPAT
	PAUSE 1000

	HIGH TEL_ON		; TELEFON HATTI AÿÇILDI.
	PAUSE 500	
	HAFIZA_NO=15	; 15-25 arasÿý

TEL_2_CEVIR:
	READ HAFIZA_NO,DEGER
	IF DEGER>9 THEN TEL_2_BITTI
	DTMFOUT TEL_AUDIO, [DEGER]
	HIGH ALARM_LED	
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO>25 THEN TEL_2_BITTI
	GOTO TEL_2_CEVIR
TEL_2_BITTI:
	FOR I=0 TO 30  ; 30 SANIYE BOYUNCA
		CALL TUSLARI_TARA
		IF TUS_DONUS<10 THEN	; BÿÝR TUSA BASMIS
			READ SANIYE_SAY,DEGER
			IF DEGER=TUS_DONUS THEN 
				SANIYE_SAY=SANIYE_SAY+1
			ELSE
				SANIYE_SAY=0
			ENDIF
			IF SANIYE_SAY=4 THEN GOTO SIFRE_DOGRU_ALARM_KAPAT
		ENDIF
		HIGH ALARM_LED
		PAUSE 1000	; TEL NO ÿÇEVRÿÝLDÿÝ. 1 SN BEKLE
		SOUND TEL_AUDIO,[100,10,50,10,100,10] ; BU SESi TELE VER
	NEXT
	LOW TEL_ON	; TEL. KAPAT
	PAUSE 1000

	HIGH TEL_ON		; TELEFON HATTI AÿÇILDI.
	PAUSE 500	
	HAFIZA_NO=26	; 26-36 arasÿý

TEL_3_CEVIR:
	READ HAFIZA_NO,DEGER
	IF DEGER>9 THEN TEL_3_BITTI
	DTMFOUT TEL_AUDIO, [DEGER]
	HIGH ALARM_LED
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO>36 THEN TEL_3_BITTI
	GOTO TEL_3_CEVIR
TEL_3_BITTI:
	FOR I=0 TO 30  ; 30 SANIYE BOYUNCA
		CALL TUSLARI_TARA
		IF TUS_DONUS<10 THEN	; BÿÝR TUSA BASMIS
			READ SANIYE_SAY,DEGER
			IF DEGER=TUS_DONUS THEN 
				SANIYE_SAY=SANIYE_SAY+1
			ELSE
				SANIYE_SAY=0
			ENDIF
			IF SANIYE_SAY=4 THEN GOTO SIFRE_DOGRU_ALARM_KAPAT
		ENDIF
		HIGH ALARM_LED
		PAUSE 1000	; TEL NO ÿÇEVRÿÝLDÿÝ. 1 SN BEKLE
		SOUND TEL_AUDIO,[100,10,50,10,100,10] ; BU SESi TELE VER
	NEXT
	LOW TEL_ON	; TEL. KAPAT
	PAUSE 1000

	HIGH TEL_ON		; TELEFON HATTI AÿÇILDI.
	PAUSE 500	
	HAFIZA_NO=37	; 37-47 arasÿý

TEL_4_CEVIR:
	READ HAFIZA_NO,DEGER
	IF DEGER>9 THEN TEL_4_BITTI
	DTMFOUT TEL_AUDIO, [DEGER]
	HIGH ALARM_LED
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO>47 THEN TEL_4_BITTI
	GOTO TEL_4_CEVIR
TEL_4_BITTI:
	FOR I=0 TO 30  ; 30 SANIYE BOYUNCA
		CALL TUSLARI_TARA
		IF TUS_DONUS<10 THEN	; BÿÝR TUSA BASMIS
			READ SANIYE_SAY,DEGER
			IF DEGER=TUS_DONUS THEN 
				SANIYE_SAY=SANIYE_SAY+1
			ELSE
				SANIYE_SAY=0
			ENDIF
			IF SANIYE_SAY=4 THEN GOTO SIFRE_DOGRU_ALARM_KAPAT
		ENDIF
		HIGH ALARM_LED
		PAUSE 1000	; TEL NO ÿÇEVRÿÝLDÿÝ. 1 SN BEKLE
		SOUND TEL_AUDIO,[100,10,50,10,100,10] ; BU SESi TELE VER
	NEXT
	LOW TEL_ON	; TEL. KAPAT
	PAUSE 1000

; 4 TELEFON DA ARANDI
; ÿÞÿÝFRE GÿÝRÿÝLENE KADAR TEKRAR TEKRAR ARA.

	GOTO SURE_DOLDU_TEL_ARA	

SIFRE_DOGRU_ALARM_KAPAT:
	LOW ALARM_OUT	; ALARM ÿÇIKIÿÞI KPALI
	LOW TEL_ON
	LOW TEL_AUDIO
	LOW ALARM_LED
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	GOTO MAIN_LOOP
; ---------------------------------------------------
KAYIT_MENUSU:
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA

; ÿÝLK OLARAK 4 HANELÃ¿Ý Ã¿ÞÿÝFRE GÿÝRÿÝLECEK
; ÿÞÿÝFRE EEPROMUN ÿÝLK 4 ADRESÿÝNE YAZILACAK
	HAFIZA_NO=0
KAYIT_TUS_BEKLE:
	CALL TUSLARI_TARA
	IF TUS_DONUS>9 THEN GOTO KAYIT_TUS_BEKLE
	WRITE HAFIZA_NO,TUS_DONUS	; 1. KARAKTER KAYDEDÿÝLDÿÝ
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO<4 THEN KAYIT_TUS_BEKLE
	
; ÿÞÿÝFRE KAYIT ÿÝÿÞLEMÃ¿Ý BÿÝTTÿÝ
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	
; TELEFON NUMARASI - 1 KAYDEDÿÝLECEK
; TELEFON NO UZUNLUÿÐU MAX. 11 KARAKTER OLACAK
; EEPROM 4-14 ARASI
KAYIT_TEL_BEKLE_1:
	CALL TUSLARI_TARA
	IF TUS_DONUS=12 THEN KAYIT_TEL_BEKLE_1_BITTI
	IF TUS_DONUS>9 THEN GOTO KAYIT_TEL_BEKLE_1
	WRITE HAFIZA_NO,TUS_DONUS
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO<15 THEN KAYIT_TEL_BEKLE_1
KAYIT_TEL_BEKLE_1_BITTI:	; KAYIT 11 KARAKTERDEN KISA KESÿÝLDÃ¿Ý Ã¿ÝSE
	IF HAFIZA_NO<15 THEN 	; 11 KARAKTERE KADAR ESKÃ¿Ý KAYDI SÿÝL
		WRITE HAFIZA_NO,255
		HAFIZA_NO=HAFIZA_NO+1
		GOTO KAYIT_TEL_BEKLE_1_BITTI
	ENDIF
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	PAUSE 1000
	CALL ZIRLA

; TELEFON NUMARASI - 2 KAYDEDÿÝLECEK
; TELEFON NO UZUNLUÿÐU MAX. 11 KARAKTER OLACAK
; EEPROM 15-25 ARASI
KAYIT_TEL_BEKLE_2:	
	CALL TUSLARI_TARA
	IF TUS_DONUS=12 THEN KAYIT_TEL_BEKLE_2_BITTI
	IF TUS_DONUS>9 THEN GOTO KAYIT_TEL_BEKLE_2
	WRITE HAFIZA_NO,TUS_DONUS
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO<26 THEN KAYIT_TEL_BEKLE_2
KAYIT_TEL_BEKLE_2_BITTI:	; KAYIT 11 KARAKTERDEN KISA KESÿÝLDÃ¿Ý Ã¿ÝSE
	IF HAFIZA_NO<26 THEN 	; 11 KARAKTERE KADAR ESKÃ¿Ý KAYDI SÿÝL
		WRITE HAFIZA_NO,255
		HAFIZA_NO=HAFIZA_NO+1
		GOTO KAYIT_TEL_BEKLE_2_BITTI
	ENDIF
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	PAUSE 1000
	CALL ZIRLA
	PAUSE 300
	CALL ZIRLA

; TELEFON NUMARASI - 3 KAYDEDÿÝLECEK
; TELEFON NO UZUNLUÿÐU MAX. 11 KARAKTER OLACAK
; EEPROM 26-36 ARASI
KAYIT_TEL_BEKLE_3:	
	CALL TUSLARI_TARA
	IF TUS_DONUS=12 THEN KAYIT_TEL_BEKLE_3_BITTI
	IF TUS_DONUS>9 THEN GOTO KAYIT_TEL_BEKLE_3
	WRITE HAFIZA_NO,TUS_DONUS
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO<37 THEN KAYIT_TEL_BEKLE_3
KAYIT_TEL_BEKLE_3_BITTI:	; KAYIT 11 KARAKTERDEN KISA KESÿÝLDÃ¿Ý Ã¿ÝSE
	IF HAFIZA_NO<37 THEN 	; 11 KARAKTERE KADAR ESKÃ¿Ý KAYDI SÿÝL
		WRITE HAFIZA_NO,255
		HAFIZA_NO=HAFIZA_NO+1
		GOTO KAYIT_TEL_BEKLE_3_BITTI
	ENDIF
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	PAUSE 1000
	CALL ZIRLA
	PAUSE 300
	CALL ZIRLA
	PAUSE 300
	CALL ZIRLA
	
; TELEFON NUMARASI - 4 KAYDEDÿÝLECEK
; TELEFON NO UZUNLUÿÐU MAX. 11 KARAKTER OLACAK
; EEPROM 37-47 ARASI
KAYIT_TEL_BEKLE_4:	
	CALL TUSLARI_TARA
	IF TUS_DONUS=12 THEN KAYIT_TEL_BEKLE_4_BITTI
	IF TUS_DONUS>9 THEN GOTO KAYIT_TEL_BEKLE_4
	WRITE HAFIZA_NO,TUS_DONUS
	HAFIZA_NO=HAFIZA_NO+1
	IF HAFIZA_NO<48 THEN KAYIT_TEL_BEKLE_4
KAYIT_TEL_BEKLE_4_BITTI:	; KAYIT 11 KARAKTERDEN KISA KESÿÝLDÃ¿Ý Ã¿ÝSE
	IF HAFIZA_NO<48 THEN 	; 11 KARAKTERE KADAR ESKÃ¿Ý KAYDI SÿÝL
		WRITE HAFIZA_NO,255
		HAFIZA_NO=HAFIZA_NO+1
		GOTO KAYIT_TEL_BEKLE_4_BITTI
	ENDIF
	CALL ZIRLA
	CALL ZIRLA
	CALL ZIRLA
	PAUSE 1000
	CALL ZIRLA
	PAUSE 300
	CALL ZIRLA
	PAUSE 300
	CALL ZIRLA
	PAUSE 300
	CALL ZIRLA

; KAYIT ÿÝÿÞLEMLERÃ¿Ý TAMAMLANDI
	GOTO MAIN_LOOP
; ---------------------------------------------------
TUSLARI_TARA:
	PAUSE 150
	TUS_DONUS=255
	LOW ROW1
	HIGH ROW2
	HIGH ROW3
	HIGH ROW4
	
	IF COL1=0 THEN TUS_DONUS=1
	IF COL2=0 THEN TUS_DONUS=2
	IF COL3=0 THEN TUS_DONUS=3

	HIGH ROW1
	LOW ROW2
	HIGH ROW3
	HIGH ROW4
	
	IF COL1=0 THEN TUS_DONUS=4
	IF COL2=0 THEN TUS_DONUS=5
	IF COL3=0 THEN TUS_DONUS=6

	HIGH ROW1
	HIGH ROW2
	LOW ROW3
	HIGH ROW4
	
	IF COL1=0 THEN TUS_DONUS=7
	IF COL2=0 THEN TUS_DONUS=8
	IF COL3=0 THEN TUS_DONUS=9

	HIGH ROW1
	HIGH ROW2
	HIGH ROW3
	LOW ROW4
	
	IF COL1=0 THEN TUS_DONUS=10
	IF COL2=0 THEN TUS_DONUS=0
	IF COL3=0 THEN TUS_DONUS=11

; YILDIZ iLE KAREYE AYNI ANDA BASILIRSA
	IF COL1=0 AND COL3=0 THEN TUS_DONUS=12  ; * ÿÝLE # AYNI ANDA BASILMIS
	IF TUS_DONUS<13 THEN GOTO TUSA_BASILMIS
	RETURN

TUSA_BASILMIS:
	LOW ROW1
	LOW ROW2
	LOW ROW3
	LOW ROW4
	CALL ZIRLA
TUS_BIRAK:
	HIGH ALARM_LED
	IF (COL1=0 OR COL2=0 OR COL3=0) THEN GOTO TUS_BIRAK
	LOW ALARM_LED
	RETURN

ZIRLA:
	LOW BUZZER
	PAUSE 30
	HIGH BUZZER
	PAUSE 100
	RETURN

END
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

tekniker_murat

Şimdi usta buraya resim koymayı beceremediğim için o resmi rapid e upload ettim ve adresini vereyim hemen
http://rapidshare.com/files/161638634/dtmf.JPG.html
şimdi bn o dosyalardan bir resim aldım bu da o resim zaten ama kafama takılan ise şimdi şurası...
1.Resimde kullanılan röle ( tel hattında bağlı olan ) o normalde açık olacak yani kontağı açık ilen tel hattı dışarıdan gelen aramalara açık olarak kalmış oluyor dimi... Ve röle çekince telefonun ahizesini kaldırmış gibi oluyoruz
2.Hat trafosu ve hat trafosunun bağlı olduğu entegre cm8870 bu entegre normalde bildiğim kadarı ile dtmf sinyalini yani tonlarını çözüp 4 bitlik binary bilgiye çeviriyor ve karşı taraf ne tuşlamışsa tel açıldıktan sonra bunları binary çıkışlarda görebiliyoruz dolayısı ile bu entegre tel hattından vihaz kontrol etme işlemlerinde kullanılması yaygın oluyor.Ama benim arama yapmak ve ses iletmekteki işime pek yaramayacağı kanısındayım doğrumudur.
3.Bn bu cm8870 i söküp onun yerine isd1212 ile yapılmış bir ses kayıt entegresinin ses çıkışlarını bağlasam ve sesi bu entegre bağlantısı ile çözmeye çalışsam uygun olur mu yada bu şekilde bir devre var mı direk sesi hat trafosuna verebileceğim ve karşı tarafa da dinletebileceğim bir devre.
4.Ve son olarak ta bu devre şemasında kullanılan optokuplor lu devre dışardan gelen aramayı picin algılamasını mı sağlıyo ve bu picin RA0 pinine telefona dışarıdan arama geldiğinde kare dalga mı uygulanmış oluyor ve her çalmada kaç hertz frekans geliyor sanırım bu frekans olayını pdf de yazmışlardı ama tekrar bakarım...
[email]murat.yagci.1984@gmail.com[/email]


tekniker_murat

Arkadaşlar ilgileriniz için çok teşekkür ederim projemi bitirince nasip olursa bu başlık altında yayınlayacağım...
[email]murat.yagci.1984@gmail.com[/email]