Vous êtes sur la page 1sur 3

Année Universitaire : 2019 - 2020

ère
Section GEC 1 Année

Matière Microcontrôleur

Correction TD N°1

Correction EX1

BSF STATUS, RP0


BCF STATUS, RP1 ; sélection du Bank 1
MOVLW b'00000000'
MOVWF TRISB ; toutes les lignes du port B sont des sorties
BSF TRISA, 0 ; la ligne 0 du port A est une entrée
BCF STATUS, RP0 ; sélection du Bank 0
CLRF PORTB ; met à 0 toutes les lignes du port B.
retour BTFSS PORTA, 0 ; si le bit 0 du port A est à 1 le programme saute une instruction
GOTO retour
MOVLW FF
XORWF PORTB, f ; inverse les bits du port B ( [1111 1111] XOR port B = NOT(port B))
GOTO retour
END

Correction EX 2

ORG 0X00
BCF STATUS, RP1 ; BANK 0OU 1
BCF STATUS, RP0 ; BANK 0
MOVLW D’12’
MOVWF 0X20
BSF STATUS, RP0 ; BANK 1
MOVLW 0XF
MOVWF 0XA0
BSF STATUS, RP1 ; BANK 2OU 3
BCF STATUS, RP0 ; BANK 2
MOVLW D’–5’
MOVWF 0X120
BSF STATUS, RP0 ; BANK 3
MOVLW 0X20
MOVWF 0X190
END

Correction EX 3

ORG 0x00
Debut BCF STATUS, RP1 ; bank 0 ou 1
BCF STATUS, RP0 ; bank 0
MOVF 0x6F,W ; chargement de la première valeur dans le registre de travail W
BSF STATUS, RP0 ; bank 1
SUBWF 0xEF,W ;W=F-W
BTFSS STATUS, Z ; F - W= 0 => Z=1 donc les deux valeurs sont égales
; => saut de l’instruction suivante (pas de branchement versdifferent)
; sinon Z= 0 donc les deux valeurs sont différentes
; =>pas de saut de l’instruction suivante (branchement versdifferent),
GOTO different ; l’instruction suivante n’est pas forcément un branchement vers
; une étiquette où on traite le cas d’égalité on passe directement pour
; traiter le cas de l’égalité
BSF STATUS, RP1 ; bank 2 ou 3
BCF STATUS, RP0 ; bank 2
MOVLW 0x00 ; les deux instructions peuvent être remplacé par une seule instruction :
ème
2 Semestre 2019-2020/ ENET’COM Page 1 sur 3
Année Universitaire : 2019 - 2020
ère
Section GEC 1 Année

Matière Microcontrôleur

MOVWF 0x16F ; CLRF 0x16F


GOTO debut
different BSF STATUS, RP1 ; bank 2 ou 3
BSF STATUS, RP0 ; bank 3
MOVLW 0xFF ; charger tous les bits de W par “1”
MOVWF 0x1EF
END

CorrectionEX4

Ss. Prg. d’addition Ss. Prg. complément à 2 Ss. Prg. de soustraction


sur 16 bits sur 16 bits sur 16 bits

D_add MOVF h’11, W D_neg COMF h’11, f D_sub CALL D_neg


ADDWF h’21, f INCF h’11, f CALL D_add
BTFSC STATUS, C BTFSC STATUS, Z RETURN
INCF h’20, f DECF h’10, f
MOVF h’10,W COMF h’10, f
ADDWF h’20, f RETURN
RETURN

Correction EX 5

list p=16F877A
include<p16F877A.inc>
org 0x00
bcf STATUS, RP1 ; on sélectionne banque 0 ou 1
bsf STATUS, RP0 ; on passe en banque 1
bcf OPTION_REG, NOT_RBPU ; résistance de rappel en service,
; pas besoin de résistance externe
bcf TRISA, 2 ; bit 2 de TRISA à 0 => RA2 configurée comme sortie
; Inutile de configurer TRISB, car il est en entrée par défaut
; aureset du PIC

bcf STATUS , RP0 ; on repasse en banque 0


boucle btfss PORTB, 2 ; tester RB2, sauter si vaut 1
bsf PORTA, 2 ; RB2 vaut 0, donc on allume la LED (RA2=1)
btfsc PORTB, 2 ; tester RB2, sauter si vaut 0
bcf PORTA, 2 ; RB2 vaut 1, donc LED éteinte (RA2=0)
goto boucle ; et on recommence
end

Correction EX6
list p=16F877A
include<p16F877A.inc>
org 0x00
Debut
BCF STATUS,IRP ;[0C,7F] EST DANS [00,FF]
MOVLW h'0c'
MOVWF FSR ; 0C dans FSR
Boucle CLRF INDF ; met zéro à l'adresse pointée par FSR
INCF FSR, F ; passe à FSR + 1
Correction EX 7
BTFSS FSR, 7 ; tester si on détecte la valeur 0x80 qui est égale à 0x7F+1
GOTO Boucle ; boucler si FSR < 7F
GOTO Debut
end

ème
2 Semestre 2019-2020/ ENET’COM Page 2 sur 3
Année Universitaire : 2019 - 2020
ère
Section GEC 1 Année

Matière Microcontrôleur

Début Direction des données :


PORTB  sortie
Initialisation
PORTA  Digital
RA1  entrée
Non RA3  sortie
RA1

Oui
RA3 = 0 RA3 = 1

PORTB=0XF0 PORTB=0X0F

Les pins des ports A et E constituent un ensemble de 8 pins AnalogiqueNumérique (AN7 ..AN0) qui peuvent
être utilisés en trois modes différents (entrée analogique, entrée/sortie standard, ou tension de référence). Le
registre ADCON1 permet de sélectionner la configuration adéquate selon la valeur de ses 4 premiers bits
(PCFG3.. PCFG0). Le bit 7 n’a pas d’importance dans notre cas, c’est pour la configuration du décalage des 10
bits correspondants à la valeur Analogique convertie dans le cas « entrée analogique ».

list p=16F877
Include <p16f877.inc>
Org 0x00
BCF STATUS, RP1 ; préparation de la sélection banque 0 ou 1
BSF STATUS, RP0 ; on passe en banque 1
BSF TRISA, 1
BCF TRISA, 3
MOVLW 0x06
MOVWF ADCON1 ; les pin AN7.. AN0 sont des I/O digitales
CLRF TRISB ; PORTB en mode sortie
BCF STATUS, RP0 ; on passe en banque 0
test BTFSS PORTA, 1
GOTO case0
BCF PORTA, 3 ; RA3=0
MOVLW 0XF0
MOVWF PORTB ; portB<- 0XF0
GOTO test
case0 BSF PORTA, 3 ; RA3=1
MOVLW 0X0F
MOVWF PORTB ; portB<- 0X0F
GOTO test
end

ème
2 Semestre 2019-2020/ ENET’COM Page 3 sur 3