menu home
 
  Derniers projets :

•   Serveur mail Postfix/Dovecot sur Raspberry Pi sous Raspbian

•   Circuit vidéo anti-Macrovision / Macrovision remover

•   Indicateur de niveau d'humidité de la terre pour plante

•   Récupération consommation EDF via Raspberry Pi

•   Station Météo avec Raspberry Pi

•   ...

[ Voir la suite ... ]    

 
  Derniers projets :

•   Manipuler les GPIO d'un RaspberryPi sous Raspbian en Java

•   Programme pour le convertisseur impulsions téléphoniques en signal DTMF pour téléphone à cadran

•   ...

[ Voir la suite ... ]    

 
  •   Cathode Corner
 
•   Kosbo
 
•   Semageek
 
 
a propos
 
contact
 
  categorie
  Programme pour le convertisseur impulsions téléphoniques en signal DTMF pour téléphone à cadran
  > Programmes ASM pour micro-contrôleur PIC
img avancement
Commencé le 28/03/2010  
Mis à jour le 05/06/2010  


C'est le programme pour PIC16F84A qui permet de compter des impulsions détectés, d'afficher sur un afficheur à LED le nombre trouvé et de choisir quelles fréquences DTMF à générer pour la conversion.

Pour voir le circuit du convertisseur, cliquez ici.





_CP_ON EQU H'000F'
_CP_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_PWRTE_OFF EQU H'3FFF'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_LP_OSC EQU H'3FFC'
_XT_OSC EQU H'3FFD'
_HS_OSC EQU H'3FFE'
_RC_OSC EQU H'3FFF'

   __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

W EQU H'0000'
F EQU H'0001'

STATUS EQU H'0003'

PORTA EQU H'0005'
PORTB EQU H'0006'

TRISA EQU H'0085'
TRISB EQU H'0086'

RP0 EQU H'0005'


__MAXRAM H'CF'
__BADRAM H'07', H'50'-H'7F', H'87'


TIMER1 EQU H'0C'   
TIMER2 EQU H'0D'

NOMBRE EQU H'0E'
NB      EQU   H'0F'
CODES      EQU   H'10'
CODES2      EQU   H'11'



      ORG   0
      GOTO   RESET

   

PAUSE      MOVLW D'100'
MOVWF TIMER1

PAUSE2      MOVLW   D'50'
MOVWF   TIMER2
       DECFSZ TIMER2,F

GOTO $-1



      DECFSZ   TIMER1,F
      GOTO   PAUSE2   
      RETLW 0


RESET      

      BSF   STATUS,RP0
      MOVLW   B'00000011'
      MOVWF   TRISA
      MOVLW   B'00000000'
      MOVWF   TRISB
      BCF   STATUS,RP0

      MOVLW   B'00011100'
      MOVWF   PORTA
      MOVLW   B'00001000'
      MOVWF   PORTB

      CLRF   NOMBRE
      CLRF   NB



DEBUT

      CLRF   NOMBRE
      CLRF   NB
      MOVLW   B'00011100'
      MOVWF   PORTA
      MOVLW   B'00001000'
      MOVWF   PORTB



      ; Détection si on est en ligne
      BTFSC   PORTA, 1
      GOTO COMPTER      

      CALL PAUSE

      GOTO DEBUT





COMPTER
      CALL PAUSE
      CLRF NOMBRE

      ; Quitte si on raccroche
      BTFSS   PORTA, 1
      GOTO DEBUT

      ; Détecte la première impulsion
      BTFSC   PORTA, 0
      GOTO DEBUT_NUM

      GOTO COMPTER


DEBUT_NUM
      CLRF   NOMBRE



AJOUT_IMP   
      INCF   NOMBRE



ATTENTE_FIN_IMP
      BTFSS   PORTA, 0
      GOTO ATTENTE_IMP_SUIV

      BTFSS   PORTA, 1
      GOTO DEBUT

      CALL PAUSE

      GOTO ATTENTE_FIN_IMP



ATTENTE_IMP_SUIV
      MOVLW   D'40'
      MOVWF   NB



BOUCLE_ATTENTE
      BTFSC   PORTA, 0
      GOTO AJOUT_IMP

      CALL PAUSE

      DECFSZ NB,F
      GOTO BOUCLE_ATTENTE



      ; Si plus d'impulsion, envoi du signal
SIGNAL

      BTFSC   NOMBRE, 3
      GOTO SIGNAL_0_9_8

      BTFSC   NOMBRE, 2
      GOTO SIGNAL_4_5_6_7

      BTFSC   NOMBRE, 1
      GOTO SIGNAL_2_3

      BTFSC   NOMBRE, 0
      GOTO SIGNAL_1

      GOTO DEBUT



SIGNAL_0_9_8
      BTFSC   NOMBRE, 1
      GOTO SIGNAL_0

      BTFSC   NOMBRE, 0
      GOTO SIGNAL_9

      GOTO SIGNAL_8



SIGNAL_4_5_6_7
      BTFSC   NOMBRE, 1
      GOTO SIGNAL_6_7

      BTFSC   NOMBRE, 0
      GOTO SIGNAL_5

      GOTO SIGNAL_4


SIGNAL_6_7
      BTFSC   NOMBRE, 0
      GOTO SIGNAL_7

      GOTO SIGNAL_6

SIGNAL_2_3
      BTFSC   NOMBRE, 0
      GOTO SIGNAL_3

      GOTO SIGNAL_2



SIGNAL_0
      MOVLW   B'10000010'
      MOVWF   PORTB
      MOVLW   B'00000000'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_1
      MOVLW   B'00011001'
      MOVWF   PORTB
      MOVLW   B'00000000'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_2
      MOVLW   B'00010010'
      MOVWF   PORTB
      MOVLW   B'00000100'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_3
      MOVLW   B'00011100'
      MOVWF   PORTB
      MOVLW   B'00000100'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_4
      MOVLW   B'00100001'
      MOVWF   PORTB
      MOVLW   B'00001000'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_5
      MOVLW   B'00101010'
      MOVWF   PORTB
      MOVLW   B'00001000'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_6
      MOVLW   B'00100100'
      MOVWF   PORTB
      MOVLW   B'00001100'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_7
      MOVLW   B'01001001'
      MOVWF   PORTB
      MOVLW   B'00001100'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_8
      MOVLW   B'01000010'
      MOVWF   PORTB
      MOVLW   B'00010000'
      MOVWF   PORTA

      GOTO ENVOI



SIGNAL_9
      MOVLW   B'01001100'
      MOVWF   PORTB
      MOVLW   B'00010000'
      MOVWF   PORTA

      GOTO ENVOI



ENVOI
      MOVLW   D'10'
      MOVWF   NB



ENVOI2
      CALL PAUSE

      DECFSZ NB,F

      GOTO ENVOI2

      MOVLW   B'00011100'
      MOVWF   PORTA
      MOVLW   B'00001000'
      MOVWF   PORTB

      
      GOTO COMPTER

      

      END






Téléchargements:

- au format ASM: ici
- au format HEX: ici


    1 commentaire
Commencé le 28/03/2010  
Mis à jour le 05/06/2010  

Nom:  
E-Mail:  
Site Web:  

 
Vérification:  
 
Recopiez les lettres/chiffres et donnez le résultat du calcul :
captcha



   Amelie   |   02/11/2016 - 13:55   

Bonjour,

Le lien vers le circuit ne fonctionne plus serait-il possible de l'avoir ? Est-il compatible avec toute sorte d'ancien téléphone ou uniquement le S63 ?

Merci beacoup

 


JLR's Blog   |   Programmation et design: JLR   |   Version 2.0   |   Généré en 0.038 seconde(s)