; "Circuit de test : clignotant à LED" ; (C) Fabrice Sincère, juillet 2007 ; IUT Nancy-Brabois ; Version 1.01 ; Microcontrôleur PIC 16F88 ; Microchip MPLAB IDE ; Langage : assembleur List p=16F88 ; processeur utilisé #include ;Program Configuration Register 1 __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _EXTRC_CLKOUT ;bits de configuration : ; Code protection OFF ; CCP1 function on RB0 ; In-Circuit Debugger OFF ; FLASH Program Memory Write protection OFF ; Data EE Memory Code Protection OFF ; Low Voltage Programming OFF ; Brown-out Reset OFF ; RA5/MCLR pin function is MCLR ; Power-up Timer ON ; Watchdog Timer OFF ; EXTRC oscillator ; CLKO function on RA6/OSC2/CLKO ;Program Configuration Register 2 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF ;bits de configuration : ;Internal External Switch Over mode OFF ;Fail-Safe Clock Monitor OFF ;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,TMR0IF ; on efface le drapeau TMR0IF 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) bcf ANSEL , 1 ; la broche RA1 est configurée ; comme une entrée/sortie de type numérique bank0 movlw B'10100000' movwf INTCON ; bit 7 (GIE) = 1 : autorisation globale des interruptions ; bit 5 (TMR0IE) = 1 : autorisation de l'interruption TMR0 ; bit 2 (TMR0IF)= 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