Generatore Multifrequenza (DTMF) con AT89C2051 Diversi sistemi remoti automatizzati sono stati costruiti (da anni) per essere comandati attraverso una linea telefonica e con segnali a Multifrequenza (DTMF). Oggi gli specifici integrati per generare i toni DTMF sono praticamente scomparsi dal mercato. Di solito i segnali necessari per i vari comandi vengono generati direttamenti dal telefono o dal cellulare. Ho costruito questo dispositivo che ovviamente oltre ad avere la funzione DTMF, in più è un microC molto versatile. Il livello del segnale è basso, dato che viene sucessivamente amplificato dal telefono in cui è incorporato il dispositivo. Ecco il semplice schema per pilotare un piccolo diffusore. Tre pulsanti nel mio caso sono sufficienti per inviare alcuni comandi su una linea telefonica. I numeri corrispondono ai primi tre tasti della tastiera telefonica. Segue il listato (funzionante) del programma. ;IK1WJQ Programma in Assembler 51 ;AT89C2051 GENERATORE DI MULTIFREQUENZA ;USCITE P3.4, P3.5 DUE FREQUENZE PER DTMF ;USCITA P3.0 LED ;INGRESSO P3.7, P3.2, P3.3 PULSANTI 1-3 DTL0 EQU 16 ;DATI FREQ. BASSA DTH0 EQU 17 DTL1 EQU 18 ;DATI FREQ. ALTA DTH1 EQU 19 LED EQU P3.0 PL1 EQU P3.7 ;UNO PL2 EQU P3.2 ;DUE PL3 EQU P3.3 ;TRE ORG 0000H AJMP INI ORG 000BH ;INT T0 MOV TL0,DTL0 MOV TH0,DTH0 XRL P3,#00010000B ;FREQ. BASSA RETI ORG 001BH ;INT T1 MOV TL1,DTL1 MOV TH1,DTH1 XRL P3,#00100000B ;FREQ. ALTA RETI INI: MOV P3,#255 MOV P1,#255 MOV SP,#99 MOV PSW,#0 ;BANCO 0 MOV TMOD,#17 ;T0 E T1 16 BIT SETB ET0 ;INT T0 PRIORITA' SETB PT0 ;ATTIVA INT. T0 E T1 SETB ET1 ACALL UNO ;POSIZIONA DATI BASE CONT: CLR LED ;ACCENDE LED ACALL RITX MOV P3,#255 ;SPEGNE LED ACALL RITX MOV ACC,P3 CJNE A,#255,CON AJMP CONT CON: SETB TR0 SETB TR1 JNB ACC.7,CUNO JNB ACC.2,CDUE JNB ACC.3,CTRE ACALL RITX AJMP CONT CUNO: ACALL UNO CX: CLR LED SETB EA ;ATTIVA INT GEN. ACALL RIT1 ;RIT 0,66 SEC. CLR EA ;FERMA INT GEN. SETB LED ACALL RITX AJMP CONT CDUE: ACALL DUE AJMP CX CTRE: ACALL TRE AJMP CX RIT0: PUSH ACC ;RITARDO 1 M.SEC MOV ACC,#245 ;14,7456 MHZ QUARZO PAU: NOP NOP NOP DJNZ ACC,PAU POP ACC RET RITX: PUSH B ;RITARDO 66 MSEC MOV B,#66 PAUX: ACALL RIT0 DJNZ B,PAUX POP B RET RIT1: MOV R7,#10 ;RITARDO 0,66 SEC PAU2: ACALL RITX DJNZ R7,PAU2 RET ;TABELLA DI RIFERIMENTO DTMF 12 TASTI ;Hz697=877 Hz770=798 Hz852=721 Hz941=653 ;Hz1209=503 Hz1336=456 Hz1477=412 UNO: MOV DPTR,#64659 ;877 MOV DTL0,DPL MOV DTH0,DPH MOV DPTR,#65033 ;503 MOV DTL1,DPL MOV DTH1,DPH RET DUE: MOV DPTR,#65080 ;456 MOV DTL1,DPL MOV DTH1,DPH RET TRE: MOV DPTR,#65124 ;412 MOV DTL1,DPL MOV DTH1,DPH RET END Saluti, Emilio - ik1wjq Vai a pagina1