Vous êtes sur la page 1sur 3

USTO-MB

Faculté de Génie Electrique


Département d’Electronique
Cycle LMD Module : systèmes à microcontrôleurs
TP1 
Les_ports_parallèles - afficheurs à LEDS

Une configuration simplifiée utilisée dans la carte EASYPIC5 pour interfacer les
diodes électroluminescentes est donnée par la figure suivante pour le PORTB. Cette
configuration est valable pour tous les ports du microcontrôleur. Ainsi dans ce cas de figure
pour allumer la diode RB0 il suffit d’appliquer un niveau haut (=1) sur la ligne
correspondante RB0 du PORTB.

Afin de simuler l'exécution d'un programme donné, il faudrait réaliser sur proteus le schéma
ci dessous.

LED1 RED
R1
270R
R2
U1 270R
13 33
14
OSC1/CLKIN RB0/INT
34
R3
OSC2/CLKOUT RB1
35
RB2 270R
2 36
3
RA0/AN0 RB3/PGM
37
R4
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5 270R
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
7
RA4/T0CKI/C1OUT RB7/PGD R5
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI 270R
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17 R6
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23 270R
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25 R7
RC6/TX/CK
26
RC7/RX/DT
270R
19
RD0/PSP0
20 R8
RD1/PSP1
21
RD2/PSP2
22 270R
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

1ière Application :
Dans cette première application, nous allons ouvrir le TP « tp_model.asm » et le
sauvegarder sous le nom tp1.asm. Ce TP consiste à commander les Leds qui sont connectées
au PIC 16F877 via le port B, pour cela ce port doit être configuré en sortie. Ainsi pour
allumer la led RB0 il suffit d’appliquer un niveau haut (=1) sur la ligne correspondante RB0
du PORTB. Dans le programme ci-dessous nous utilisons un sous-programme de
temporisation pour avoir une durée d’environ 200 millisecondes.

Voici le programme

;*****************************************************************
;Programme qui allume la led RB0 pendant 200 millisecondes puis
;l'éteindre pendant 200 autres millisecondes de manière continue.
;*****************************************************************

B. BOUCHIBA Page 1
USTO-MB
Faculté de Génie Electrique
Département d’Electronique
Cycle LMD Module : systèmes à microcontrôleurs

;----------------------- Directives d' assemblage pour MPLAB ---------------------


processor 16F877A

include <P16F877A.I16>

__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BODEN_ON &
_LVP_OFF & _CPD_OFF & _WRT_ENABLE_ON & _DEBUG_OFF

;------------------------------- Définition des constantes -----------------------------

≠DEFINE val_1 0xFF  ;val_1 représente la valeur 0xFF


≠DEFINE val_2 0xFF ;val_2 représente la valeur 0xFF

;----------------------------- Définition des registres ---------------------------------

DATA_1 EQU 0x20 ; le registre temporaire DATA_1 se trouve à l'adresse 20


retard1 EQU 0x21 ; le registre temporaire retard1 se trouve à l'adresse 21
retard2 EQU 0x22 ; le registre temporaire retard2 se trouve à l'adresse 22

;---------------------- Initialisation des ports A et B ---------------------------

ORG 0x00
goto start

start
BSF ; on met à 1 le 5ieme bit du registre STATUS pour accéder
STATUS,5
; à la banque 1 "bank 1" ( pour accéder à TRISB)
MOVLW 0x00 ; on met 00 dans le registre W
MOVWF TRISB ; le port B est programmé en sortie
BCF STATUS,RP0; on remet à 0 le 5ieme bit du registre STATUS pour
; accéder à la 1iere banque "bank 0"

;------------------- Initialisation des leds et registres ----------------------------

CLRF PORTB ; on met 0 sur le port B ( leds éteintes )


MOVLW 0x01 ; on charge le registre w par la valeur 01
MOVWF DATA_1 ; initialisation du regitre DATA_1

;------------------------- Programme principal -----------------------------------

debut
MOVF DATA_1,W ;on met DATA_1 dans W
MOVWF PORTB ; on met W sur le port B ( led RB0 allumée )
CALL tempo ; appel sous-programme de temporisation
BCF PORTB,0 ; led RB0 éteinte
CALL tempo ; appel sous-programme de temporisation
GOTO debut ; retour au début du programme

B. BOUCHIBA Page 2
USTO-MB
Faculté de Génie Electrique
Département d’Electronique
Cycle LMD Module : systèmes à microcontrôleurs
;---------------- Programme de temporisation environ égale à 200ms -------------

tempo
MOVLW val_2 ; on charge val_2 dans le registre W
MOVWF retard2 ; on charge W dans le registre retard2
MOVLW val_1 ; on charge val_1 dans le registre W
MOVWF retard1 ; on charge W dans le registre retard1
attente
DECFSZ retard1,F ; on décrémente retard1 et on saute la prochaine instruction si
GOTO attente ; le registre retard1 = 0 sinon retour à tempo
MOVLW val_1 ; on recharge retard1 par la valeur val_1
MOVWF retard1
DECFSZ retard2,F ; on décrémente retard2 et on saute la prochaine instruction si
GOTO attente ; le registre retard2 = 0 sinon retour à tempo

RETURN ; retour au programme principal après l 'instruction CALL

;-------------------------- directive de fin de programme --------------------------------


END

;*******************************************************************

Le travail demandé est l’édition, l’assemblage et l’exécution du programme ci-dessus.


Vérifier que la led RB0 s’allume et s’éteint toutes les 200 millisecondes.

2ième Application :
Sans toucher au sous-programme de temporisation, modifier le programme principal
de manière à allumer alternativement les 4 leds de poids faible pendant 200ms puis les
leds de poids fort pendant les 200 autres millisecondes et ainsi de suite. Editer, assembler et
exécuter le programme modifié.
Toujours sans toucher au sous-programme de temporisation, modifier le programme
principal de manière à allumer à tour de rôle chacune des 8 leds pendant 200ms. Utiliser dans
ce cas les instructions de décalage mises à votre disposition. Editer, assembler et exécuter le
programme modifié.
Cette fois-ci nous allons modifier la durée de la temporisation et voir ce qui se passe.
Pour cela ≠DEFINE val_2 0xFF par ≠DEFINE val_2 0x7F. Editer, assembler et
exécuter le programme précédent avec ce sous-programme modifié et constater.
En gardant cette modification ,faite une deuxième modification en remplaçant la ligne
≠DEFINE val_1 0xFF par ≠DEFINE val_1 0x7F. Editer, assembler et exécuter le
programme précédent avec ce sous-programme modifié et constater.

N.B : Etablir pour chaque partie l’organigramme de l’application

B. BOUCHIBA Page 3

Vous aimerez peut-être aussi