; "Circuit de test : clignotant à LED" ; (C) Fabrice Sincère, mars 2007 ; IUT Nancy-Brabois ; version 1.01 ; microcontrôleur PIC 16F628A ; développé avec Microchip MPLAB IDE List p=16F628A ; processeur utilisé #include __config _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC_CLKOUT & _LVP_OFF & _DATA_CP_OFF & _BOREN_OFF & _MCLRE_ON ;bits de configuration : ;code protect OFF ;watchdog timer OFF ;power up timer ON ;oscillateur RC_CLKOUT ;low voltage program OFF ;data EE read protect OFF ;brown out detect OFF ;master clear enable ON ;xxxxxx ; macro ;xxxxxx bank1 macro ; passage en banque 1 bsf STATUS,RP0 endm bank0 macro ; passage en banque 0 bcf STATUS,RP0 endm ;xxxxxxxxxxxxxxxxxxxx ; démarrage sur reset ;xxxxxxxxxxxxxxxxxxxx org 0x0000 goto initialisation ; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ; Routine d'interruption ; 1 source d'interruption : TMR0 en mode timer ; Toutes les 256*1 = 256 cycles (prescaler 1:1) ; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx org 0x0004 ; vecteur d'interruption comf PORTA , f ; on inverse le niveau logique de la sortie RA1 ; => inversion de l'état de la LED bcf INTCON,T0IF ; on efface le drapeau T0IF retfie ; retour d'interruption ;xxxxxxxxxxxxxxx ; initialisation ;xxxxxxxxxxxxxxx initialisation bank1 bcf OPTION_REG , T0CS ; bit 5 (T0CS) = 0 : TMR0 en mode timer ; (OPTION_REG) = (11011111) ; prescaler 1:1 bcf TRISA , 1 ; bit 1 du port A (RA1) = 0 : configuration en sortie (commande de la LED) ; (TRISA) = (11111101) bank0 movlw B'00000111' movwf CMCON ; inactivation des comparateurs analogiques movlw B'10100000' movwf INTCON ; bit 7 (GIE) = 1 : autorisation globale des interruptions ; bit 5 (T0IE) = 1 : autorisation de l'interruption TMR0 ; bit 2 (T0IF)= 0 : on efface le drapeau de l'interruption TMR0 ;xxxxxxxxxxxxxxxxxxxxx ; programme principal ;xxxxxxxxxxxxxxxxxxxxx debut_programme ; on attend le débordement de TMR0 (0xFF -> 0x00) ; ce qui génére une interruption goto debut_programme END