;******************************************************************************************** ; NOM: klaxon (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 interruption périphériques (notamment timer 1) ; 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