;**************************************************** ;Titre : ;**************************************************** ;Auteur : ;Date : ;Derniere mise a jour : ;**************************************************** #include ; Définitions des constantes ERRORLEVEL -302 __CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON & _LVP_OFF ;********************************************************************* ; MACRO * ;********************************************************************* BANK0 macro bcf STATUS,RP0 ; sélectionner banque 0 endm BANK1 macro bsf STATUS,RP0 ; sélectionner banque 1 endm ;********************************************************************* ; DEFINES * ;********************************************************************* ;#DEFINE LEDIR PORTA, 3 ;********************************************************************* ; ASSIGNATIONS * ;********************************************************************* ;HAUT EQU 'H' ;********************************************************************* ; VARIABLES * ;********************************************************************* CBLOCK 0x0020 SAV_W, SAV_STATUS, SAV_FSR ; Sauvegarde des registres cmpt1, cmpt2 ; Compteur du "tempo" ENDC ;********************************************************************* ; DEMARRAGE * ;********************************************************************* org 0x0000 goto Init ;********************************************************************* ; INTERRUPTIONS * ;********************************************************************* org 0x0004 goto Interrupt ;********************************************************************* ; INITIALISATION * ;********************************************************************* Init: clrf PORTA clrf PORTB BANK1 clrf TRISA clrf TRISB clrf EEADR ; permet de diminuer la consommation ; Configuration du OPTION REGISTER movlw b'11000000' ;pull-up disable. movwf OPTION_REG BANK0 ; Configuration du registre d'interruption clrf INTCON bsf INTCON, T0IE ; Active le timer 0 bsf INTCON, GIE ; Active les interruptions goto Start ;********************************************************************* ; PROGRAMME * ;********************************************************************* Start: goto Start ;********************************************************************* ; INTERRUPTIONS BIS * ;********************************************************************* Interrupt: call SAVE_REG ;Code d'interruption call RAP_REG retfie ;********************************************************************* ; SUB-ROUTINES * ;********************************************************************* ; SOUS-PROGRAMME DE SAUVEGARDE SAVE_REG: MOVWF SAV_W ;SAUVEGARDE W DANS SAV_W SWAPF STATUS,0 ;SAUVEGARDE STATUS MOVWF SAV_STATUS ;DANS SAV_STATUS MOVF FSR,0 MOVWF SAV_FSR RETURN ;SOUS-PROGRAMME DE RESTITUTION RAP_REG: MOVF SAV_FSR,0 MOVWF FSR SWAPF SAV_STATUS,0 ; RESTAURATION STATUS MOVWF STATUS SWAPF SAV_W,1 ; RESTAURATION DE W SWAPF SAV_W,0 RETURN tempo: clrf cmpt2 boucle2: clrf cmpt1 boucle1: decfsz cmpt1, f goto boucle1 decfsz cmpt2, f goto boucle2 return END ;Fin du fichier