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