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