
1-4) Clignotement d'une seule LED sur un port en sortie à l'aide d'une tempo par 
boucle.   Introduction d'un sous programme
. 
 
 ;**************************************** 
;*Faire clignoter la LED 1 du PortB * 
;**************************************** 
; fichier 4_ledcli.asm 
 
; Le clignotement n'est pas visible                                                                                   
a l'oeil nu 
; un oscilloscope sur la sortie                                                                                 
clignotante  permet de s'assurer du                                                                               
clignotement de la LED 
; On pourra verifier aussi la mesure                                                                                       
du temps à l'oscilloscope  
; La comparer au calcul effectue  
;  
; 
; Device = 16F84    ; Utilisation du circuit 16F84 
; Horloge =  XT   ; Déclaration et config du Circuit 
; Equivalence registres 
PORTB    equ    0x0006 ; Adresse du portb 
TRISB    equ    0x0086 ; Adresse du registre de direction du porta 
STATUS    equ    0x0003 ; Le bit 5 permet d'acceder à la Banque 1 ou 0  
          ; ce qui donne acces au TRIS ou au PORT  
;* Reservation memoire * 
; Les registres occupent la RAM jusqu'en OBh 
COMPT    equ    0Ch 
;Initialisation* 
    org    00h    ; Apres le reset le PC pointe l'adresse 00 
    goto    debut    ; On saute les 5 premiers octets car à l'adresse 
            ; 04 on a l'adresse d'interruption 
            ; On prend l'habitude de ne pas ecrire sur ce segment 
            ; en sautant simplement jusqu'apres ce segment 
    org    05h 
debut     
    clrf    PORTB    ; Mise a zero des latches de sorties 
    bsf    STATUS,05 ; Selection de Bank 1 pour l'accès au TRIS 
    movlw    00h    ; 
    movwf    TRISB    ; Declaration du portb en sortie 
 
    bcf    STATUS,05 ; Selection de Bank 0 pour l'accès au PORT 
 
;Programme principal * 
boucle   
    clrf    PORTB    ; Extinction de toutes les LEDS 
    call    tempo 
    movlw    01h 
    movwf    PORTB    ; on inverse l'etat de la LED 1 
    call    tempo 
    goto    boucle    ; recopie permanente 
;Sous Programmes  * 
tempo 
    movlw    0x00ff    ; chargement de COMPT de la valeur maximale 
    movwf    COMPT 
delai 
    decfsz    COMPT,1   ; Le temps de decompter 256 valeurs  
    goto    delai    ; calcul du temps : 1 instruction =Tquartz/4=1µs 
=1 cycle 
            ; l'instruction decfz est de 2 cycles 
          ; 2 instructions = 3 µs repeter 256 fois t=768µs 
    return 
    end