0% ont trouvé ce document utile (0 vote)
248 vues7 pages

Code Source

Ces documents décrivent des circuits clignotants à LED utilisant différents microcontrôleurs PIC. Ils contiennent des informations sur la configuration des ports et timers pour faire clignoter une LED via des interruptions TMR0.

Transféré par

Ons
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
248 vues7 pages

Code Source

Ces documents décrivent des circuits clignotants à LED utilisant différents microcontrôleurs PIC. Ils contiennent des informations sur la configuration des ports et timers pour faire clignoter une LED via des interruptions TMR0.

Transféré par

Ons
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

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 <[Link]>

__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 <[Link]>

__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 <[Link]>

;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 <[Link]>

__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

Vous aimerez peut-être aussi