Vous êtes sur la page 1sur 7

Circuit de test :clignotant à LED

16f84
; "Circuit de test : clignotant à LED"
; (C) Fabrice Sincère, mars 2007
; IUT Nancy-Brabois
; version 1.01
; microcontrôleur PIC 16F84A
; développé avec Microchip MPLAB IDE

List p=16F84A ; processeur utilisé


#include <p16F84A.inc>

__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC


;bits de configuration :
;code protect OFF
;watchdog timer OFF
;power up timer ON
;oscillateur RC

;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) = (---11101)

bank0

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

16f876
; "Circuit de test : clignotant à LED"
; (C) Fabrice Sincère, novembre 2007
; IUT Nancy-Brabois
; Version 1.00
; Microcontrôleur PIC 16F876A
; Microchip MPLAB IDE
; Langage : assembleur

List p=16F876A ; processeur utilisé


#include <p16F876A.inc>

__config _RC_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _LVP_OFF &
_WRT_OFF & _CPD_OFF & _CP_OFF
;bits de configuration :
;oscillateur RC
;watchdog timer OFF
;power up timer ON
;brown out detect ON
;low voltage program OFF
;flash program write protection off
;data EE read protect OFF
;code protect 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

movlw B'00000110'
movwf ADCON1 ; la broche RA1 est configurée commme entrée/sortie
numérique

bcf TRISA , 1
; bit 1 du port A (RA1) = 0 : configuration en sortie (commande de
la LED)
; (TRISA) = (11111101)

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
16f88
; "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 <p16F88.inc>

;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
16f628
; "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 <p16F628A.inc>

__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