Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
l'homme en noir
l'homme en noir
  • Ici vous trouverez des choses que je souhaite partager... Vous trouverez aussi des codes sources pour mircocontroleur PIC et DSpic. Je precise que tous les programmes qui sont sur ce blog ont été ecrit de a à z par moi seul. si vous avez des questions....
  • Accueil du blog
  • Créer un blog avec CanalBlog
Publicité
Archives
10 mai 2006

Pour les fans de microcontroleur.... PIC et DSPIC

Vous chercher a produire un bruit blanc a moindre frai? Il vous suffit d'un PIC 12FXX. Ce circuit est pourvu d'un oscillateur interne... Donc avec un pic alimenter en 5 v, une resistance variable (10 ohms), un condensateur chimique 100uF et un haut parleur vous pouvez faire un bruit blanc ressemblant a un bruit de vapeur qui s'echappe d'un conduit.

Voici de prog qui permet de realiser ceci: Je precise qu'il est sous MPLAB

LIST      p=12F675                ; Définition de processeur
#include <p12F675.inc>        ; fichier include pour la compilation

****************************************
;**            Registre                **
;**         configuration        **
;****************************************

VALOPTION EQU B'10000000'  ;page 19 du datasheet

;****************************************
;**             PORT I/O               **
;**     configuration        **
;****************************************

VALGPIO EQU B'00000000' ;port en sortie

;****************************************
;**             Definition             **
;**  des macros        **
;****************************************

;----------------------------------------
;Macro des banks (pour simplifier le programme)
;----------------------------------------
BANK0 macro   
  bcf STATUS,RP0
  bcf STATUS,RP1
endm

BANK1 macro   
  bsf STATUS,RP0
  bcf STATUS,RP1
endm

;****************************************
;**           Declaration des          **
;**               variables        **
;****************************************
CBLOCK 0x20       ; début de la zone variables en SRAM
temp :1
PCLtemp :1
donne :1
multi :1
multitemp :1
PCLATHtemp :1
saved :1
endc                  ;fin de zone

;****************************************
;**   Origine d'écriture en mémoire    **
;**               Demarrage            **
;****************************************
org 0x000   
   goto    init  ; Initialiser

;****************************************
;**             Initialisation         **
;****************************************
init
BANK0               ; sélectionner banque0  nettoyage des ports
clrf GPIO
clrf PCLATHtemp
clrf PCLtemp
                     ;on configure les registres décris précèdement
BANK1
movlw VALOPTION
movwf OPTION_REG    
movlw VALANSEL
movwf ANSEL
movlw VALGPIO
movwf TRISIO
BANK0
call reinit
goto start   ; programme principal

reinit
   movlw 0xB3  ;reinitialise les premieres valeurs d'adresse
   movwf PCLtemp
   clrf PCLATHtemp
return

start
call adress      ;lecture valeur en flash a envoyer
movwf donne   ;charge la valeur dans donne
btfss donne,0   ;on test tous les bits que l'on envoi en serie sur GPIO,2
bcf GPIO,2 
btfsc donne,0
bsf GPIO,2
call tempo
btfss donne,1
bcf GPIO,2
btfsc donne,1
bsf GPIO,2
call tempo
btfss donne,2
bcf GPIO,2
btfsc donne,2
bsf GPIO,2
call tempo
btfss donne,3
bcf GPIO,2
btfsc donne,3
bsf GPIO,2
call tempo
btfss donne,4
bcf GPIO,2
btfsc donne,4
bsf GPIO,2
call tempo
btfss donne,5
bcf GPIO,2
btfsc donne,5
bsf GPIO,2
call tempo
btfss donne,6
bcf GPIO,2
btfsc donne,6
bsf GPIO,2
call tempo
btfss donne,7
bcf GPIO,2
btfsc donne,7
bsf GPIO,2
movfw PCLtemp
sublw 0xFF
btfsc STATUS,Z
call usf
movfw PCLATHtemp      ;test fin de zone memoire flash atteinte
sublw 0x03
btfsc STATUS,Z
call reinit
bsf GPIO,4   ;mettre a un la sortie 4 de GPIO pour signaler le fonctionnement
goto start   ; refaire la boucle principal

tempo
movfw TMR0   ; on charge a la volé la valeur courante du timer 0
andlw 0x0F     ;  cette tempo etant entre chaques données, cela va faire varier la vitesse d'envoi des bits
addwf donne,w            ; de facon pseudo aleatoire
movwf temp
blcc decf temp,f
btfss STATUS,Z  ; on repete la boucle un nb de foi aleatoire
goto blcc
return

usf
movlw 0x00
movwf PCLtemp
incf PCLATHtemp,f ;incremente PCLATH
return

org 0x00AA  ;debut des variables
adress
    movfw PCLtemp
   sublw 0xFF  ;test si PCL est a FF, fin de zone memoire
   btfsc STATUS,Z
   call usf
   incf PCLtemp,f
   movfw PCLATHtemp
   movwf PCLATH            ;charge octet fort adresse
   movfw PCLtemp           ;charge octet faible d'adresse
   movwf PCL  ;on force le CPU à sauter a l'adresse PCLATHtemp/PCLtemp
retlw #0x11  ; liste des valeurs aléatoires utilisées pour produire le bruit blanc
retlw #0x0C
retlw #0x04
retlw #0x07
retlw #0x16
retlw #0x18
retlw #0x11
retlw #0x11
retlw #0x0A
retlw #0x03
retlw #0x08
retlw #0x0F
retlw #0x18
retlw #0x1C
retlw #0x18
retlw #0x0C
retlw #0x0C
retlw #0x0A
retlw #0x09
retlw #0x10
retlw #0x10
retlw #0x0E
retlw #0x13
retlw #0x0A
retlw #0x0A
retlw #0x0E
retlw #0x11
retlw #0x13
retlw #0x1B
retlw #0x18
retlw #0x12
retlw #0x1A
retlw #0x1C
retlw #0x10
retlw #0x03
retlw #0x0A
retlw #0x0A
retlw #0x0C
retlw #0x09
retlw #0x0E
retlw #0x15
retlw #0x1B
retlw #0x0E
retlw #0x0E
retlw #0x06
retlw #0x04
retlw #0x0C
retlw #0x09
retlw #0x16
retlw #0x11
retlw #0x06
retlw #0x0E
retlw #0x0E
retlw #0x0A
retlw #0x13
retlw #0x13
retlw #0x13
retlw #0x06
retlw #0x03
retlw #0x01
retlw #0x07
retlw #0x18
retlw #0x16
retlw #0x11
retlw #0x1C
retlw #0x15
retlw #0x0C
retlw #0x0C
retlw #0x0A
retlw #0x06
retlw #0x0A
retlw #0x13
retlw #0x09
retlw #0x13
retlw #0x10
retlw #0x09
retlw #0x10
retlw #0x1A
retlw #0x13
retlw #0x11
retlw #0x10
retlw #0x10
retlw #0x0D
retlw #0x10
retlw #0x18
retlw #0x10
retlw #0x18
retlw #0x13
retlw #0x03
retlw #0x08
retlw #0x10
retlw #0x0B
retlw #0x05
retlw #0x11
retlw #0x10
retlw #0x09
retlw #0x0F
retlw #0x18
retlw #0x12
retlw #0x0A
retlw #0x10
retlw #0x1A
retlw #0x1A
retlw #0x0A
retlw #0x13
retlw #0x0E
retlw #0x05
retlw #0x13
retlw #0x10
retlw #0x09
retlw #0x07
retlw #0x15
retlw #0x09
retlw #0x02
retlw #0x10
retlw #0x1A
retlw #0x14
retlw #0x16
retlw #0x0C
retlw #0x11
retlw #0x18
retlw #0x09
retlw #0x14
retlw #0x16
retlw #0x06
retlw #0x0B
retlw #0x05
retlw #0x0B
retlw #0x13
retlw #0x05
retlw #0x06
retlw #0x13
retlw #0x08
retlw #0x0A
retlw #0x13
retlw #0x11
retlw #0x19
retlw #0x0A
retlw #0x09
retlw #0x0A
retlw #0x0C
retlw #0x18
retlw #0x11
retlw #0x14
retlw #0x14
retlw #0x13
retlw #0x16
retlw #0x15
retlw #0x10
retlw #0x09
retlw #0x14
retlw #0x0A
retlw #0x02
retlw #0x0A
retlw #0x0F
retlw #0x09
retlw #0x0C
retlw #0x04
retlw #0x11
retlw #0x0F
retlw #0x0B
retlw #0x1A
retlw #0x15
retlw #0x07
retlw #0x05
retlw #0x0C
retlw #0x15
retlw #0x0E
retlw #0x0A
retlw #0x0F
retlw #0x10
retlw #0x0F
retlw #0x09
retlw #0x0E
retlw #0x14
retlw #0x0D
retlw #0x0C
retlw #0x14
retlw #0x11
retlw #0x07
retlw #0x09
retlw #0x09
retlw #0x0A
retlw #0x09
retlw #0x0C
retlw #0x13
retlw #0x0C
retlw #0x02
retlw #0x06
retlw #0x0C
retlw #0x04
retlw #0x0C
retlw #0x09
retlw #0x0B
retlw #0x03
retlw #0x07
retlw #0x10
retlw #0x0C
retlw #0x03
retlw #0x02
retlw #0x02
retlw #0x01
retlw #0x04
retlw #0x14
retlw #0x09
retlw #0x09
retlw #0x18
retlw #0x0E
retlw #0x07
retlw #0x0C
retlw #0x12
retlw #0x18
retlw #0x08
retlw #0x03
retlw #0x11
retlw #0x0A
retlw #0x0F
retlw #0x13
retlw #0x0C
retlw #0x0C
retlw #0x16
retlw #0x1C
retlw #0x13
retlw #0x04
retlw #0x11
retlw #0x13
retlw #0x0C
retlw #0x0E
retlw #0x18
retlw #0x0C
retlw #0x0C
retlw #0x06
retlw #0x0A
retlw #0x08
retlw #0x06
retlw #0x0A
retlw #0x02
retlw #0x08
retlw #0x0E
retlw #0x17
retlw #0x1C
retlw #0x11
retlw #0x05
retlw #0x07
retlw #0x0E
retlw #0x0F
retlw #0x16
retlw #0x13
retlw #0x05
retlw #0x06
retlw #0x0C
retlw #0x15
retlw #0x1A
retlw #0x1C
retlw #0x13
retlw #0x16
retlw #0x09
retlw #0x02
retlw #0x07
retlw #0x12
retlw #0x08
retlw #0x15
retlw #0x14
retlw #0x10
retlw #0x15
retlw #0x10
retlw #0x0C
retlw #0x11
retlw #0x13
retlw #0x1A
retlw #0x1C
retlw #0x16
retlw #0x10
retlw #0x05
retlw #0x06
retlw #0x0D
retlw #0x0C
retlw #0x04
retlw #0x06
retlw #0x11
retlw #0x12
retlw #0x13
retlw #0x13
retlw #0x1C
retlw #0x10
retlw #0x06
retlw #0x13
retlw #0x1A
retlw #0x1C
retlw #0x11
retlw #0x0E
retlw #0x18
retlw #0x0C
retlw #0x06
retlw #0x15
retlw #0x1A
retlw #0x13
retlw #0x16
retlw #0x10
retlw #0x13
retlw #0x13
retlw #0x15
retlw #0x12
retlw #0x18
retlw #0x12
retlw #0x15
retlw #0x1A
retlw #0x1C
retlw #0x16
retlw #0x0E
retlw #0x0B
retlw #0x18
retlw #0x10
retlw #0x02
retlw #0x0A
retlw #0x11
retlw #0x11
retlw #0x1C
retlw #0x12
retlw #0x16
retlw #0x16
retlw #0x14
retlw #0x13
retlw #0x10
retlw #0x15
retlw #0x1B
retlw #0x17
retlw #0x15
retlw #0x11
retlw #0x0C
retlw #0x14
retlw #0x0D
retlw #0x13
retlw #0x10
retlw #0x09
retlw #0x0F
retlw #0x0C
retlw #0x03
retlw #0x02
retlw #0x01
retlw #0x05
retlw #0x0D
retlw #0x0E
retlw #0x03
retlw #0x09
retlw #0x09
retlw #0x0E
retlw #0x11
retlw #0x0F
retlw #0x04
retlw #0x06
retlw #0x13
retlw #0x07
retlw #0x0A
retlw #0x0A
retlw #0x02
retlw #0x0E
retlw #0x17
retlw #0x0A
retlw #0x11
retlw #0x11
retlw #0x0E
retlw #0x0E
retlw #0x04
retlw #0x07
retlw #0x12
retlw #0x09
retlw #0x13
retlw #0x11
retlw #0x18
retlw #0x1B
retlw #0x1C
retlw #0x1B
retlw #0x13
retlw #0x10
retlw #0x16
retlw #0x1C
retlw #0x16
retlw #0x15
retlw #0x12
retlw #0x18
retlw #0x13
retlw #0x04
retlw #0x11
retlw #0x0D
retlw #0x0A
retlw #0x10
retlw #0x13
retlw #0x05
retlw #0x0C
retlw #0x0F
retlw #0x0E
retlw #0x09
retlw #0x02
retlw #0x09
retlw #0x0E
retlw #0x11
retlw #0x18
retlw #0x11
retlw #0x0B
retlw #0x06
retlw #0x0D
retlw #0x0C
retlw #0x11
retlw #0x1A
retlw #0x11
retlw #0x04
retlw #0x07
retlw #0x0F
retlw #0x0E
retlw #0x0E
retlw #0x0C
retlw #0x08
retlw #0x0E
retlw #0x0C
retlw #0x0C
retlw #0x08
retlw #0x09
retlw #0x0B
retlw #0x03
retlw #0x13
retlw #0x14
retlw #0x0C
retlw #0x0C
retlw #0x03
retlw #0x02
retlw #0x10
retlw #0x1A
retlw #0x15
retlw #0x11
retlw #0x10
retlw #0x0E
retlw #0x10
retlw #0x05
retlw #0x0B
retlw #0x11
retlw #0x0A
retlw #0x0B
retlw #0x04
retlw #0x12
retlw #0x11
retlw #0x15
retlw #0x13
retlw #0x1C
retlw #0x13
retlw #0x0D
retlw #0x0A
retlw #0x10
retlw #0x10
retlw #0x05
retlw #0x02
retlw #0x06
retlw #0x14
retlw #0x09
retlw #0x03
retlw #0x11
retlw #0x17
retlw #0x07
retlw #0x0C
retlw #0x11
retlw #0x09
retlw #0x14
retlw #0x09
retlw #0x13
retlw #0x0A
retlw #0x0C
retlw #0x06
retlw #0x02
retlw #0x02
retlw #0x10
retlw #0x10
retlw #0x18
retlw #0x11
retlw #0x0C
retlw #0x0A
retlw #0x0C
retlw #0x11
retlw #0x18
retlw #0x1C
retlw #0x15
retlw #0x14
retlw #0x11
retlw #0x15
retlw #0x1A
retlw #0x0D
retlw #0x0B
retlw #0x0E
retlw #0x08
retlw #0x02
retlw #0x06
retlw #0x09
retlw #0x0C
retlw #0x14
retlw #0x0F
retlw #0x06
retlw #0x02
retlw #0x03
retlw #0x10
retlw #0x10
retlw #0x0B
retlw #0x02
retlw #0x0A
retlw #0x18
retlw #0x1B
retlw #0x0E
retlw #0x07
retlw #0x11
retlw #0x11
retlw #0x13
retlw #0x0A
retlw #0x0D
retlw #0x14
retlw #0x10
retlw #0x0E
retlw #0x16
retlw #0x1B
retlw #0x1A
retlw #0x13
retlw #0x0F
retlw #0x17
retlw #0x19
retlw #0x0A
retlw #0x09
retlw #0x16
retlw #0x1A
retlw #0x1C
retlw #0x1A
retlw #0x12
retlw #0x0C
retlw #0x0A
retlw #0x0F
retlw #0x10
retlw #0x0E
retlw #0x18
retlw #0x18
retlw #0x0C
retlw #0x0E
retlw #0x0C
retlw #0x11
retlw #0x18
retlw #0x0B
retlw #0x13
retlw #0x1A
retlw #0x15
retlw #0x0D
retlw #0x0C
retlw #0x18
retlw #0x0E
retlw #0x03
retlw #0x05
retlw #0x0C
retlw #0x13
retlw #0x0F
retlw #0x02
retlw #0x0C
retlw #0x18
retlw #0x1C
retlw #0x16
retlw #0x13
retlw #0x18
retlw #0x13
retlw #0x15
retlw #0x0F
retlw #0x11
retlw #0x13
retlw #0x0C
retlw #0x0C
retlw #0x14
retlw #0x09
retlw #0x11
retlw #0x11
retlw #0x0A
retlw #0x0F
retlw #0x12
retlw #0x0C
retlw #0x06
retlw #0x0D
retlw #0x05
retlw #0x05
retlw #0x0C
retlw #0x04
retlw #0x0C
retlw #0x05
retlw #0x04
retlw #0x0D
retlw #0x03
retlw #0x07
retlw #0x0C
retlw #0x02
retlw #0x08
retlw #0x13
retlw #0x07
retlw #0x02
retlw #0x09
retlw #0x17
retlw #0x11
retlw #0x0F
retlw #0x13
retlw #0x12
retlw #0x13
retlw #0x12
retlw #0x1C
retlw #0x12
retlw #0x05
retlw #0x08
retlw #0x13
retlw #0x0E
retlw #0x08
retlw #0x11
retlw #0x10
retlw #0x16
retlw #0x1C
retlw #0x16
retlw #0x10
retlw #0x05
retlw #0x0C
retlw #0x06
retlw #0x03
retlw #0x0D
retlw #0x0E
retlw #0x0D
retlw #0x10
retlw #0x18
retlw #0x13
retlw #0x0E
retlw #0x18
retlw #0x13
retlw #0x05
retlw #0x0A
retlw #0x13
retlw #0x0F
retlw #0x06
retlw #0x0C
retlw #0x09
retlw #0x16
retlw #0x1C
retlw #0x14
retlw #0x05
retlw #0x06
retlw #0x0C
retlw #0x13
retlw #0x0E
retlw #0x10
retlw #0x13
retlw #0x09
retlw #0x15
retlw #0x0B
retlw #0x11
retlw #0x1B
retlw #0x10
retlw #0x04
retlw #0x11
retlw #0x11
retlw #0x14
retlw #0x13
retlw #0x17
retlw #0x11
retlw #0x19
retlw #0x11
retlw #0x16
retlw #0x1C
retlw #0x16
retlw #0x04
retlw #0x10
retlw #0x10
retlw #0x0C
retlw #0x18
retlw #0x0E
retlw #0x0D
retlw #0x0E
retlw #0x09
retlw #0x0A
retlw #0x0B
retlw #0x0A
retlw #0x0C
retlw #0x0A
retlw #0x0D
retlw #0x05
retlw #0x02
retlw #0x00
retlw #0x0A
retlw #0x08
retlw #0x07
retlw #0x0A
retlw #0x0B
retlw #0x18
retlw #0x1C
retlw #0x10
retlw #0x04
retlw #0x02
retlw #0x03
retlw #0x0C
retlw #0x0C
retlw #0x11
retlw #0x11
retlw #0x0A
retlw #0x18
retlw #0x0E
retlw #0x0D
retlw #0x1A
retlw #0x14
retlw #0x13
retlw #0x18
retlw #0x12
retlw #0x08
retlw #0x08
retlw #0x11
retlw #0x11
retlw #0x18
retlw #0x11
retlw #0x15
retlw #0x06
retlw #0x0A
retlw #0x09
retlw #0x0A
retlw #0x08
retlw #0x16
retlw #0x1B
retlw #0x19
retlw #0x13
retlw #0x13
retlw #0x12
retlw #0x18
retlw #0x12
retlw #0x0A
retlw #0x11
retlw #0x10
retlw #0x04
retlw #0x03
retlw #0x0A
retlw #0x0E
retlw #0x13
retlw #0x11
retlw #0x0C
retlw #0x12
retlw #0x13
retlw #0x1A
retlw #0x1A
retlw #0x0C
retlw #0x12
retlw #0x12
retlw #0x16
retlw #0x1C
retlw #0x15
retlw #0x11
retlw #0x07
retlw #0x02
retlw #0x09
retlw #0x18
retlw #0x1B
retlw #0x13
retlw #0x16
retlw #0x1A
retlw #0x11
retlw #0x0A
retlw #0x06
retlw #0x14
retlw #0x0A
retlw #0x11
retlw #0x0E
retlw #0x05
retlw #0x15
retlw #0x13
retlw #0x0C
retlw #0x0C
retlw #0x02
retlw #0x0A
retlw #0x18
retlw #0x16
retlw #0x0C
retlw #0x0E
retlw #0x0E
retlw #0x0D
retlw #0x13
retlw #0x18
retlw #0x1C
retlw #0x18
retlw #0x0C
retlw #0x0C
retlw #0x0A
retlw #0x09
retlw #0x10
retlw #0x10
retlw #0x0E
retlw #0x13
retlw #0x0A
retlw #0x0A
retlw #0x0E
retlw #0x11
retlw #0x13
retlw #0x1B
retlw #0x18
retlw #0x12
retlw #0x1A
retlw #0x1C
retlw #0x10
retlw #0x03
retlw #0x0A
retlw #0x0A
retlw #0x0C
retlw #0x09
retlw #0x0E
retlw #0x15
retlw #0x1B
retlw #0x0E
retlw #0x0E
retlw #0x06
retlw #0x04
retlw #0x0C
retlw #0x09
retlw #0x16
retlw #0x11
retlw #0x06
retlw #0x0E
retlw #0x0E
retlw #0x0A
retlw #0x13
retlw #0x13
retlw #0x13
retlw #0x06
retlw #0x03
retlw #0x01
retlw #0x07
retlw #0x18
retlw #0x16
retlw #0x11
retlw #0x1C
retlw #0x15
retlw #0x0C
retlw #0x0C
retlw #0x0A
retlw #0x06
retlw #0x0A
retlw #0x13
retlw #0x09
retlw #0x13
retlw #0x10
retlw #0x09
retlw #0x10
retlw #0x1A
retlw #0x13
retlw #0x11
retlw #0x10
retlw #0x10
retlw #0x0D
end

Voila.... Si vous voyez des modifs a apporter n'hesiter pas...

Vive l'open source!!!!

Guillaume Marceau alias Stormy

Publicité
Publicité
Commentaires
Publicité