;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; Nom: pictrain0_PRG (YouBiTonMatic en PIC) ; Date: 22/2/2006 ; Version: 1.0b (modifs de présentation) ; Circuit: plaquette d'essai ; Auteur: PSi ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ LIST p=PIC12F675 ; Définition de processeur #include ; Définitions des constantes errorlevel -302 __CONFIG _CPD_OFF & _BODEN_OFF & _CP_OFF & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; DECLARATIONS DE VARIABLES SPECIFIQUES CBLOCK 0x020 ; Début de la zone des variables CPT_256 : 1 ; Compteurs pour la durée de chaque son SAV_TMR1H : 1 ; Sauvegarde valeur TMR1 (timer1) poids fort SAV_TMR1L : 1 ; Sauvegarde valeur TMR1 (timer1) poids faible ENDC ; Fin de la zone des variables #include ; Paramétrage 'standard' : paramètres ;(registres...) pour une utilisation standard du PIC ; (pas de ; convertisseur, ni comparateur...) ; contient également des morceaux de programme standard ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; PARAMETRES SPECIFIQUES BANK1 clrf TRISIO ; Port en sortie bsf TRISIO,5 ; sauf 5 pour déclenchement clrf WPU ; Pas de résistances de rappel sauf bsf WPU,5 ; résistance de rappel sur le port 5 ; registre controle interruptions INTCON BANK0 et 1 clrf INTCON bsf INTCON,GIE ; interruptions activées en permanence bsf INTCON,PEIE ; autorise interrupt. périphériq. (dont Timer1) ; registre interruptions périphériques clrf PIE1 bsf PIE1,TMR1IE ; autorise les interruptions Timer1 BANK0 bcf GPIO,1 ; sortie à 0 ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; BOUCLE PRINCIPALE BouclePrincipale btfsc GPIO,5 ; attente déclenchement goto BouclePrincipale ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ call SON_Tii ; appel des sons call SON_Tii call SON_Tii call SON_Taa call SON_Taa call SON_Tii call SON_Tii goto BouclePrincipale ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; SOUS-PROGRAMMES ; son Tii, 660 Hz SON_Tii movlw d'253' ; valeur poids fort du timer movwf SAV_TMR1H ; sauvegarde movwf TMR1H ; chargement timer poids fort movlw d'27' ; valeur poids faibledu timer movwf SAV_TMR1L ; sauvegarde movwf TMR1L ; chargement timer poids faible bsf T1CON, TMR1ON ; lancement du timer movlw d'255' ; chargement compteur durée movwf CPT_256 boucle_Tii btfsc T1CON, TMR1ON ; test fin durée (=timer arreté) goto boucle_Tii ; attente fin durée return ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; son Taa, 370 Hz SON_Taa movlw d'250' movwf SAV_TMR1H movwf TMR1H movlw d'201' movwf SAV_TMR1L movwf TMR1L bsf T1CON, TMR1ON movlw d'255' movwf CPT_256 boucle_Taa btfsc T1CON, TMR1ON goto boucle_Taa return ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; Interruption TMR1 (appelée à chaque interruption TMR1) inttimer1 bcf T1CON, TMR1ON ; arret timer movfw SAV_TMR1H ; chargement timer poids fort movwf TMR1H movfw SAV_TMR1L ; chargement timer poids faible movwf TMR1L movlw b'00000010' ; inversion sortie xorwf GPIO,f decfsz CPT_256,f ; décrément compteur durée bsf T1CON, TMR1ON ; relancer timer return ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; Interruption TMR0 (appelée à chaque interruption TMR0) ;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ inttimer0 return END