APPLICATIONS A VOIR PIC 16F84 OK

Telechargé par BOUALAOUI7374
1)Allumage de LEDS en sortie
.
;****************************
;*Allumer une LED sur PortB *
;****************************
; fichier 1_led.asm
;A la mise sous tension la LED SUR RB s'allume
;
; 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 portb
STATUS equ 0x0003 ; Le bit 5 permet d'acceder à la Banque 1 ou 0
; ce qui donne acces au TRIS ou au PORT
; Equivalence DONNEES
; *******************
donnee equ 0x0062 ; Donnee en hexa a stocker en sortie on allume les LED
D2, D6 et D7
;***************
;Initialisation*
;***************
org 00h ; Apres le reset le PC pointe l'adresse 00
goto début ; 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 ; RAZ registre de direction portb soit en sortie.
bcf STATUS,05 ; Selection de Bank 0 pour l'accès au PORT
;*********************
;Programme principal *
;*********************
; On active les sorties 1,5 et 6 sur le portb
movlw donnee ; chargement dans le registre W valeur litterale
movwf PORTB ; chargement du contenu de w dans le fichier PORTB
fin
goto fin
end
2) Recopie d'un port en entrée sur sortie
.
;*********************************
;*Recopier le portA sur le PortB *
;*********************************
; fichier 2_recop.asm
;
; Device = 16F84 ; Utilisation du circuit 16F84
; Horloge = XT ; Déclaration et config du Circuit
; Equivalence registres
;***********************
PORTA equ 0x0005 ; Adresse du porta
PORTB equ 0x0006 ; Adresse du portb
TRISA equ 0x0085 ; Adresse du registre de direction 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
;***************
;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
clrf PORTA ; 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
movlw 1fh ;
movwf TRISA ; Declaration du porta en entree
bcf STATUS,05 ; Selection de Bank 0 pour l'accès au PORT
;*********************
;Programme principal *
;*********************
boucle
movf PORTA,0 ; chargement dans le registre Work du porta
movwf PORTB ; chargement du contenu de w dans le fichier PORTB
goto boucle ; recopie permanente
end
1-3) Clignotement de toutes les LED sur un port en sortie à l'aide d'une tempo par
boucle.
;********************************
;*Faire clignoter tout le PortB *
;********************************
; fichier 3_cligno.asm
; Le clignotement n'est pas visible a l'oeil nu
; un oscilloscope sur l'une des sorties 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 *
clrf PORTB ; Extinction de toutes les LEDS
boucle
movlw 0x00ff ; chargement de COMPT de la valeur maximale
movwf COMPT
tempo
decfsz COMPT,1 ; Le temps de decompter 256 valeurs
goto tempo ; calcultemps : 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
comf PORTB,1 ; on inverse l'etat des LEDs
goto boucle ; recopie permanente
end
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
1-5) Clignotement d'une seule LED sur un port en sortie à l'aide d'une tempo par
boucles imbriquées
Faire clignoter la LED 0 sur le PortB a la frequence de 0,5 Hz *
; fichier 5_led1cl.asm
; Le clignotement est visible a l'oeil nu periode de 200 ms
; Device = 16F84 ; Utilisation du circuit 16F84
; Horloge = XT ; Déclaration et config du Circuit
; Equivalence registres
PORTB equ 0x0006 ;
TRISB equ 0x0086 ;
STATUS equ 0x0003 ;
* Reservation memoire *
; Les registres occupent la RAM jusqu'en OBh
COMPT equ 0Ch
COMPT1 equ 0Dh
;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 *
clrf PORTB ; Extinction de toutes les LEDS
boucle
bsf PORTB,0 ; On allume la LED 1
call tempo
bcf PORTB,0 ; On eteind la LED 1
call tempo
goto boucle ; recopie permanente
; SOUS PROGRAMME *
; SP tempo de 100 ms *
tempo
movlw 0x00C8 ; chargement de COMPT1 DE 200
movwf COMPT1 ;
delai1
movlw 0x00A6 ; chargement de COMPT
movwf COMPT
delai
decfsz COMPT,1 ; Le temps de decompter 166 valeurs
goto delai ; calcul temps:1 instruction =Tquartz/4=1µs =1 cycle
; l'instruction goto est de 2 cycles
; 2 instructions = 3 µs repeter 166 fois t=498 µs
decfsz COMPT1,1 ; ON execute la boucle 200 fois
goto delai1 ; calcul du temps : 500µs*200=100ms
return
end
1 / 23 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !