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