;************************************************************ ; NOM: pictrain1_PRG.asm ; Date: 8/11/2007 ; Auteur: PSi ;************************************************************ ERRORLEVEL -302 ; la séquence ci-dessous est utilisée par MPLAB pour définir les variables du processeur ifdef __12F675 LIST p=PIC12F675 #INCLUDE endif ifdef __12F629 LIST p=PIC12F629 #INCLUDE endif __CONFIG _CPD_OFF & _BODEN_OFF & _CP_OFF & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT ; oscillateur interne 4 MHz ;********************************************************************* ; DEFINE - EQU - INC #DEFINE IO_Bouton_Marche GPIO,5 ; Entrée bouton départ #DEFINE IO_Bouton_Arret GPIO,4 ; Entrée bouton arret #DEFINE IO_LED GPIO,0 ; Sortie vers la LED #INCLUDE ; Notre paramétrage standard ;********************************************************************** ; INITIALISATION ; parametres du prédiviseur BANK1 bsf OPTION_REG,2 ; pré-diviseur sur 256 bsf OPTION_REG,1 bsf OPTION_REG,0 BANK0 ; registre controle interruptions INTCON clrf INTCON bsf INTCON,GIE ; Activation des interruptions ; parametres des entrées/sorties BANK1 ; Passage en BANK1 clrf TRISIO ; Tous les bits à 0 (output) bsf TRISIO,5 ; sauf bit 5 (bouton déclenchement) bsf TRISIO,4 ; sauf bit 4 (bouton arrêt) clrf WPU ; Bits à 0 (pas de résistance) bsf WPU,5 ; sauf l’entrée 5 bsf WPU,4 ; sauf l’entrée 4 BANK0 ; Revenir en BANK0 clrf GPIO ; tous les bits initialisé à 0 ;********************************************************************** ; boucle principale ;********************************************************************** ET_BouclePrincipale btfsc IO_Bouton_Marche ; test si bouton 'marche' activé goto ET_BouclePrincipale ; si non, boucle bsf INTCON,T0IE ; si oui, lancement Timer0 ET_Boucle_Marche ; boucle 'marche' btfsc IO_Bouton_Arret ; test si bouton 'arret' activé goto ET_Boucle_Marche ; si non, boucle bcf INTCON,T0IE ; si oui, arret Timer0 bcf IO_LED ; extinction de la LED goto ET_BouclePrincipale ; retour au début ;********************************************************************* ; interruption TMR0 appelée à chaque interruption TMR0 ;********************************************************************* SP_inttimer0 movlw b'00000001' ; chargement W xorwf GPIO,f ; inversion de la valeur de la sortie return ;********************************************************************* ; interruption TMR1 appelée à chaque interruption TMR1 ;********************************************************************* SP_inttimer1 return END