20
;************************************************************************************************************************ ; programme led-tmr0-2.asm ; faire clignoter une LED connectée sur une sortie du port B. La temporisation permettant d’ajuster la ; fréquence est obtenue en comptant les débordements du timer TMR0 à l’interieur de l’interruption T0I ; TMR0 est utilisé en timer avec un prédiviseur de 256. En comptant 5 débordement on obtient une ; temporisation de 4 x 256 x 256 µs ;********************************************************************************************************************** list p=16f84,f=inhx8m,r=dec
__config _PWRTE_OFF & _CP_OFF & _WDT_OFF & _XT_OSC
#include « p16f84.inc »
CTR equ 0x0C ; varible de comptage
; ================= démarrage sur RESET org 0
goto start
;================= procedure d’interruption org 4
bcf INTCON,T0IF ; baisser le drapeau levé par l’interruption
decfsz CTR,f
retfie comf PORTB,f ; changer l’état de la LED
movlw 5 ; initializer compteur
movwf CTR
retfie ;================= Programme principal start bsf STATUS,RP0 ; select bank1
clrf TRISB ; programme tous les bits du bort B en sortie
movlw B’00000111′ ; mode timer, prédiviseur pour TMR0, div=256
movwf OPTION_REG
bcf STATUS,RP0 ; select bank0
movlw B’10100000′ ; autorisation Interruption T0I
movwf INTCON
movlw 5 ; initialise CTR pour le premier passage
movwf CTR
Loop goto Loop ; le PIC reste planté ici et n’en sort que pour aller
; executer une interuption due au débordement de TMR0
end