1 les microcontrôleurs pic de microchip le 16f84


21

;******************************************************************************************************************** ; Clignotement d’une LED reliée à la sortie 0 du port B. Les autres bits du port B ne sont pas affectés ; La temporisation est réalisée à l’aide du Watchdog timer ;********************************************************************************************************************* list p=16f84, f=inhx8m, r = dec

__config _PWRTE_OFF & _CP_OFF & _WDT_ON & _XT_OSC

#include « p16f84A.inc »

bsf STATUS,RP0 ; select bank1

bcf TRISB,0 ; RB0 en sortie

movlw B’00001101′ ; prescaler affecté au WDT, prescaler = 101 = 32

movwf OPTION_REG ; débordement du WDT tous les 32 x 18ms = 0.576 s

bcf STATUS,RP0 ; select bank0

movlw 1 ; bit 0 de W à 1, le autres à 0,

Loop: sleep ; passe en mode sleep, réveil dans 0.576 s

xorwf PORTB,f ; complémente le bit 0 de PORTB

goto Loop ; recommence la loupe indéfinitivement

end ;*************************************************************************** ; Clignotement d’une LED reliée à n’importe quelle sortie du port B. La temporisation est réalisée à l’aide d’une boucle de ; retard à base de 3 boucles imbriquées N1 (256), N2 (256), N3 (à préciser) ; T1 : (N1-1) x (1+2) + 2 => N1=0=256 => T1 = 767 µs ; T2 : T1 + (N2-1) x (1+2+T1) + 2, N2=0 => T2 = 196352 µs ; T3 : T2+(N3-1) x (1+2+T2) + 2 + 2 = N3 x 196355 + 1 µs (je croix) ;*************************************************************************** list p=16f84, f=inhx8m, r=dec

#include « p16f84A.inc »

__config _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_OFF

N1 equ 0x0D ; N1,N2,N3 = compteurs temporisateur

N2 equ 0x0E

N3 equ 0x0F

;=================================Programme principal bsf STATUS,RP0 ; select bank1

clrf TRISB ; programme tous les bits du bort B en sortie

bcf STATUS,RP0 ; select bank0

loop: comf PORTB,f ; complémente PORTB

movlw 3 ; 3 donne une tempo voisine de 0.6 s

call tempo

goto loop ; recommence la loupe indéfinitivement

;=================================Procédure de temporisation tempo: movwf N3 ; copier W dans N3

tmp decfsz N1,f ; boucle intérieure

goto tmp

decfsz N2,f ; boucle médiane

goto tmp

decfsz N3,f ; boucle extérieure

goto tmp

return end

Laisser un commentaire