1 les microcontrôleurs pic de microchip le 16f84


19

II.5 Exemples de programme

;******************************************************************************************************* ; programme led_int.asm ; on connecte un interrupteur sur RB0 (entrée) et une LED sur RB1 (sortie) ; Si on place l’interrupteur à 1, la LED doit s’allumer, si on le met à zéro, elle doit s’éteindre ;******************************************************************************************************** LIST p=16f84A, f=inhx8m, r = dec

INCLUDE « p16f84A.inc »

__CONFIG _CP_OFF & _XT_OSC & _PWRTE_OFF & _WDT_OFF

bsf STATUS,RP0 ; bank 1

movlw B’00000001′

movwf TRISB ; pour configurer RB0 en entrée

bcf STATUS,RP0 ; bank 0

tst btfss PORTB,0

goto off

bsf PORTB,1

goto tst

off bcf PORTB,1

goto tst

end ;*********************************************************************************************************************************** ; programme led-tmr0-1.asm ; faire clignoter une LED connectée sur une sortie du port B, la temporisation permettant d’ajuster la fréquence ; est obtenue par scrutation des débordement du timer TMR0 ;*********************************************************************************************************************************** LIST p=16f84A, f = inhx8m, r = dec

__CONFIG _CP_OFF & _XT_OSC & _PWRTE_OFF & _WDT_OFF

INCLUDE « p16f84A.inc »

CTR equ 0x0C

bsf STATUS,RP0 ; bank 1 (pour TRISB et OPTION_REG)

clrf TRISB ; PORTB en sortie

movlw B’00000111′

movwf OPTION_REG ; PSA=0, prédiviseur affecté à TMR0, PS1 PS2 PS3 = 111, div = 256

; T0CS=0, horloge TMR0 = fosc/4/div

bcf STATUS,RP0 ; retour à bank 0

encore: comf PORTB,f ; complémenter PORTB

call delay ; attendre un peu

goto encore ; recommencer

delay: movlw 5 ; pour attendre que TMR0 déborde 5 fois

movwf CTR ; ce qui donne 5 x 256 x 256 µs

tst: btfss INTCON,T0IF ; attendre que TMR0 déborde

goto $-1

bcf INTCON,T0IF ; baisser le drapeau

decfsz CTR,f ; pour recommencer CTR fois

goto tst

return end

Laisser un commentaire