Vous êtes sur la page 1sur 4

Fourati Mariem & Farhat Saida

2 LF T 1

TP microprocesseur et microcontrleur:
TP2: Gestion des E/S et traitement
conditionnel
1. Organigramme du fonctionnement du programme:

Dbut

b5 appuy

b5 relch

Allumer D5

b1 appuy

b2 appuy
Allumer D1
Eteindre D2
Allumer D2
b5 appuy

b5 relch

Eteindre D5,D1,D2

Eteindre D1

Fourati Mariem & Farhat Saida


2 LF T 1
On a comme des entres:
B1 li au port A2
B2 li au port A3
B5 li au port B0

On a comme des sorties:


Diode D1 li au port C4
Diode D2 li au port C5
Diode D1 li au port E2

2) Le code du programme:
list p=16F877 dfinition du pic
#include <p16f877.inc> dfinition du bibliothque du pic (qui contient la
configuration, les registres...)

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC
& _LVP_OFF & _CPD_OFF assignations

org 0

Adresse de dpart

bsf

STATUS, RP0

bcf

STATUS, RP1

Slection du Bank1 (RP1=0 & RP0=1)


car le registre TRISA ce trouve dans
ce Bank

movlw

0x0C

le registre w 0x0C

movwf

TRISA

le registre TRISA w

BSf

TRISB,0

movlw

0x00

Le registre w 0x00

movwf

TRISC

le registre TRISC w

bcf

TRISE,2

movlw

0x06

(Bit Set f)le bit0 du registre TRISB 1

(Bit clear f)le bit0 du registre TRISB 0


Le registre w 0x06

Fourati Mariem & Farhat Saida


2 LF T 1
movwf

ADCON1 le registre ADCON1 w (cest un registre

pour configurer les PORTS A et E comme un ensemble dentres analogiques ou comme


des E/S. Sil contient 0x06, les ports sont configurs comme des E/S)

bcf

STATUS,RP0

Slection du Bank0 (RP1=0 & RP0=0)

; suite de programme
b_anim

(Bit test file skip if clear) tester

btfsc PORTB,0

bit 0 du port B: s'il est =1 alors: il excute l'instruction suivante. Cest un test pour
savoir si le bouton B5 est appuy ou non

goto

b_anim

sauter l'instruction qui a comme

tiquette b_anim

b1_anim

btfss PORTB,0

(Bit test file skip if set) tester bit 0

du port B: s'il est =0 alors: il excute l'instruction suivante sinon il saute une
instruction. Cest un test pour savoir si le bouton B5 est relch ou non.

b_test f

goto

b1_anim

bsf

PORTE,2

btfsc PORTA,2

le bit2 du port E=1


Effectuer un test sur le bit 2 du

PORTA. On va tester si le premier bouton B1 est appuy ou non.

test_b2

goto

test_b2

bsf

PORTC,4

le bit 4 du port B=1

bcf

PORTC,5

le bit 5 du port B=0

goto

fin_test

btfsc PORTA,3

Effectuer un test sur le bit 3 du

PORTA. On va tester si le 2me bouton B2 est appuy ou non.

fin_test

goto

b_test

bsf

PORTC,5

bcf

PORTC,4 le bit 4 du port C =0

le bit 5 du port C =1

btfsc PORTB,0 Effectuer un test sur le bit 0 du

PORTB. On va tester si le bouton B5 de lanimateur est appuy ou non.

goto

fin_test

Fourati Mariem & Farhat Saida


2 LF T 1
fin_test2

btfss PORTB,0

Effectuer un test sur le bit 0 du

PORTB. On va tester si le bouton B5 de lanimateur est relch ou non.

end.

goto

fin_test2

bcf

PORTC,4

le bit 4 du port C =0

bcf

PORTC,5

bcf

PORTE,2

le bit 2 du port E =0

goto

b_anim

le bit 5 du port C =0