0% ont trouvé ce document utile (0 vote)
483 vues4 pages

Correction TD Microcontrôleur 2016-17

Ce document contient la correction de plusieurs exercices sur le microcontrôleur. Il présente les programmes solutions pour chaque exercice et explique brièvement certaines parties de code.

Transféré par

Soulaimen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
483 vues4 pages

Correction TD Microcontrôleur 2016-17

Ce document contient la correction de plusieurs exercices sur le microcontrôleur. Il présente les programmes solutions pour chaque exercice et explique brièvement certaines parties de code.

Transféré par

Soulaimen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Année Universitaire 

: 2016 - 2017
Section  GEC 1ère Année

Matière  Microcontrôleur

Correction TD N°1

Correction EX 1

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 0 OU 1
BCF STATUS, RP0 ; BANK 0
MOVLW 12
MOVWF 0X20
BSF STATUS, RP0 ; BANK 1
MOVLW 0XF
MOVWF 0XA0
BSF STATUS, RP1 ; BANK 2OU 3
BCF STATUS, RP0 ; BANK 2
MOVLW –5
MOVWF 0X110
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 ;F=F-W
BTFSS STATUS, Z ; F - W= 0 => Z=1 donc les deux valeurs sont égales
; => saut de l’instruction suivante (pas de branchement vers different)
; sinon Z= 0 donc les deux valeurs sont différentes
; =>pas de saut de l’instruction suivante (branchement vers different),
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 :

2ème Semestre 2016-2017/ ENET’COM / Page 1 sur 4


Année Universitaire : 2016 - 2017
Section  GEC 1ère 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

Correction EX 4

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


sur 16 bits sur 16 bits sur 16 bits

D_addMOVFh’11, W D_negCOMFh’11, f D_subCALLD_neg


ADDWFh’21, f INCFh’11, f CALLD_add
BTFSCSTATUS, C BTFSCSTATUS, Z RETURN
INCFh’20, f DECFh’10, f
MOVFh’10,W COMFh’10, f
ADDWFh’20, f RETURN
RETURN

Autres solutions pour D_neg


Ss. Prg. complément à 2 Ss. Prg. complément à 2
sur 16 bits sur 16 bits

D_negCOMFh’11, f D_negCOMFh’11, f
COMFh’10, f INCFh’11, f
INCFh’11, f BTFSCSTATUS, Z
BTFSCSTATUS, Z GOTO Sinon
INCFh’10, f GOTOAlors
RETURN SinonCOMFh’10, f
INCFh’10, f
RETURN
AlorsCOMFh’10, f
RETURN

Correction EX 5

list p=16F877A
include <[Link]>
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 au reset 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

2ème Semestre 2016-2017/ ENET’COM / Page 2 sur 4


Année Universitaire : 2016 - 2017
Section  GEC 1ère Année

Matière  Microcontrôleur

Correction EX 6
list p=16F877A
include <[Link]>
org 0x00
Debut 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
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

Correction EX 7

Début
Direction des données :
PORTB  sortie
Initialisation
PORTA  Digital
RA1  entrée
RA1 Non RA3  sortie

Oui
RA3 = 0 RA3 = 1

PORTB = 0XF0 PORTB = 0X0F

Les pins des ports A et E constituent un ensemble de 8 pins Analogique Numé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 ».

Registre ADCON1

2ème Semestre 2016-2017/ ENET’COM / Page 3 sur 4


Année Universitaire : 2016 - 2017
Section  GEC 1ère Année

Matière  Microcontrôleur

Les différentes combinaisons possibles sont données par le tableau suivant :

La valeur de ADCON1 par défaut est 0---0000 ce qui active la configuration «  tous les pins sont des entrées
analogique » ce qui ne correspond pas à ce qui est demandé dans cet exercice. Dans notre cas on a besoin de
configurer RA1=AN1 comme entrée standard (Digitale) et RA3=AN3 comme sortie standard (Digitale aussi).
Entrée ou sortie c’est avec TRISA, mais I/O Standard c’est avec ADCON1 ayant la valeur 0110=(0x06) ou
0111=(0x07) qui donne la même configuration ( tous les pins sont des I/O Standard « Digital ») ou aussi avec la
valeur 1110=(0x0E). Dans ce qui suit, on a choisi la valeur 0x06.

list p=16F877
Include <[Link]>
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

2ème Semestre 2016-2017/ ENET’COM / Page 4 sur 4

Vous aimerez peut-être aussi