SYSTEME DE CONTROLE D’ACCES ELA CT 1000+L
SEQUENCE 3
Révisé le
14/12/2006
Page
1
/10
Romuald REBECK
1- Notion d’assembleur :
1.1- Comment le micro contrôleur exécute-t-
il un programme
? (comprendre ce qui suit, ne
pas l’apprendre…)
Le micro contrôleur est un circuit électronique, il ne comprend donc que des signaux
électriques.
MOVLW 10011111B et TRIS POR
TB
sont des instructions écrites en assembleur, le PIC ne
comprend pas l’assembleur.
Il faut d’abord traduire ces instructions en code opération donc en mots de 12 bits implantés
dans l’EEPROM du PIC pour que celui
-ci puisse les exécuter
Pour que le µC ex
écute les instructions MOVLW 10011111B et TRIS PORTB
il faut que la
mémoire programme contienne les code opération des instructions à réaliser.
Le contenu de l’EPROM doit être le suivant
:
Analyse
:
A la mise sous tension, la première
instruction exécutée est celle implantée à l’adresse 7FFh
(vecteur de reset)
Le µC exécute donc l’instruction dont le code opération est
101
000000000 (
soit sur
le bus d’instruction 5V,0V,5V,0V, 0V, 0V, 0V, 0V, 0V, 0V, 0V, 0V)
Ces signaux sont interprétés par le décodeur d’instructions
101
est le code opération de l’instruction GOTO (voir page 54/56) qui est une
instruction de saut à l’adresse donnée par les 9 bits suivant le code
101
soit les 9 bits
000000000 auxquels on ajoute
les bits
PA1 et PA0
de STATUS en poids fort
(lesquels sont mis à 0 lors d’un reset ou à la mise sous tension
: voir table 6.1 page
52/56) ce qui nous donne l’adresse sur 11 bits 00
000000000B soit 000h
Le µC exécute alors l’instruction implantée à l’adresse 000h dont le code opératio
n est
1100
10011111
1100
est le code opération de l’instruction MOVLW (charger W avec un littéral soit
une donnée de 8 bits)
Le littéral est 10011111
Après cette instruction on a 10011111 dans W et le compteur de programme est
augmenté de 1 et pointe donc l
’instruction implantée à l’adresse 001h qui est déjà
chargée.
Le µC exécute alors l’instruction dont le code opération est
000000000
110
000000000
est le code opération de l’instruction TRIS (charge un registre TRIS avec
le contenu de W)
101
000000000
7FFh
1100
10011111
000h
000000000
110
001h
SYSTEME DE CONTROLE D’ACCES ELA CT 1000+L
SEQUENCE 3
Révisé le
14/12/2006
Page
2
/10
Romuald REBECK
Rappel séquence 2
:
Une circuiterie de sélection est prévue directement depuis l’unité
de calcul pour ces 3 registres, la sélection s’effectue selon que l’on ajoute PORTA
(=
5 ou 5h) ou PORTB (=6 ou 6h ou PORTC (= 7 ou 7h) à l’instruction TRIS
Soit TRIS 05 en décimal ou TRI
S 05h en hexadécimal pour charger le registre
TRISA
TRIS 06 ou TRIS 06h pour charger le registre TRISB
TRIS 07 ou TRIS 07h pour charger le registre TRISC
110
est l’adresse du registre tris à charger soit TRISB puisque 110B = 6 = 6h =
PORTB
Nous venons
de voir ce qui se passe concrètement dans le PIC lors de l’exécution de 3
instructions.
1.2- Un peu d’histoire (pour votre culture personnelle) :
Dans les premiers ordinateurs (années 40), il n’y avait pas de ROM, pas de clavier, pas
d’écran mais des vo
yants puis des afficheurs, le programme était inscrit sur des cartes
perforées, soit uniques, soit multiples en accordéon, ou sur des bandes de papier. Un trou
représentait un 1 par exemple et une absence de trou un 0.
Nos instructions MOVLW et TRIS auraie
nt eu l’allure suivante (les
sont des trous,
les
+
des «
non trous
»)
:
Des cellules photoélectriques ou des capteurs mécaniques (au début) transformaient les trous
en +V et les «
non trous
» restaient des 0V (ou le contraire
)
Imaginez la difficulté du codage des instructions… (machine à perforer)
Même si l’on pouvait imaginer une machine à écrire qui transformait directement un
mnémonique (comme MOVLW) par l’appui d’une touche en
+ +
, il restait à coder la
donnée en binai
re ou en hexadécimal (là se serait le top du top).
Je ne suis pas un spécialiste de la préhistoire de l’informatique, mais je pense que les
premières cartes perforées étaient codées bit par bit.
La carte était ensuite introduite dans le lecteur, comme dans
un orgue de barbarie et avançait
d’une ligne à chaque instruction.
Encore plus rigolo, les premières RAM étaient des mémoire à tube à vide (les fameuses
lampes des anciennes télés). Le transistor n’avait pas encore été inventé et il fallait 2 tubes
pour
faire 1 bascule élémentaire soit un bit de mémoire (un octet devait alors tenir sur une
ligne de 35 cm de long , 2 cm de large et 5 de haut environ, pour un tube de 2cm de diamètre)
+ + + +
+ +
+ +
+ +
+ +
+
+
SYSTEME DE CONTROLE D’ACCES ELA CT 1000+L
SEQUENCE 3
Révisé le
14/12/2006
Page
3
/10
Romuald REBECK
Après, sont apparues les mémoires vives à tore. Un tore est un anneau fait
dans un matériau
qui reste aimanté après qu’on ait fait passer un courant dans un fil qui le traverse.
Le tore faisait un peu plus d’un millimètre de diamètre, il fallait un tore pour un bit.
Outre le travail de couture pour faire la matrice de fils qui t
raversaient les tores, la lecture
d’un tore était destructive. Pour lire un tore, il fallait envoyer un courant qui en détruisait le
contenu, il fallait alors réécrire son contenu après la lecture. Ce n’était pas parfait comme
système, mais bien moins cher
que les tubes et ça ne consommait pratiquement rien, la donnée
étant conservée sous la forme d’une aimantation rémanente (alors que les tubes contiennent
un filament qui doit être chauffé en permanence)
Un des premiers calculateurs, l’ENIAC (1946) pesait
30 tonnes, comprenait 17 468 tubes,
7 200 diodes à cristal, 1500 relais, 70 000 résistances 10 000 condensateurs et environ 5
millions de joints s
oudés à la main, il était refroidi par plusieurs ventilateurs de 30CV et
occupait une salle de plus de 150 mètres carrés. Il fallait constamment changer les tubes
grillés (plusieurs par jour), si bien qu’il était plus souvent en panne, qu’opérationnel. Cet
ordinateur était toutefois capable de multiplier 2 nombres d’une dizaine de chiffres en
quelques ms, le programme était entré par câblage d’armoires électriques.
Allez faire un tour sur ce site, ça vaut le coup (photos de l’Eniac) :
http://histoire.info.online.fr/eniac.html
Puis sont apparues les transistors (1947) et ainsi les RAM et les ROM et les micro
processeurs, mais pas tout de suite...
1.3-
Comment écrire un programme dans une PROM
?
Au plus simple, on peut programmer une PROM avec des interrupteurs pour faire les 0 ou 1,
case par case.
Par exemple pour une PROM 512 octets, 8 interrupteurs 2 positions (0 ou 1) pour les données
et 7 interrupteurs pour l’adresse.
Ainsi on positionne les 7
interrupteurs pour choisir l’adresse, on positionne les 8 interrupteurs
de la donnée à inscrire à cette adresse et on envoie l’impulsion de programmation.
Ce n’est pas rapide mais j’ai déjà programmé ainsi sur une plaque LABDEC avec des fils
pour interrup
teurs, pour quelques dizaines d’octets, vu que je n’avais pas de programmateur.
Heureusement, en même temps que les PROM sont apparus les programmateurs de PROM,
d’abord autonomes, avec un clavier hexadécimal et des afficheurs (il fallait alors encore
pro
grammer en code opération), ils ont rapidement évolué en se connectant à un micro
-
ordinateur.
C’est alors qu’est apparue la puissance de l’assembleur.
1.4-
L’assembleur
:
L’assembleur est un langage créé à partir du code opération des instructions.
Au l
ieu d’écrire
1100
10011111
puis
000000000
110
dans l’ EPROM du PIC en binaire ou
en hexadécimal
, bit par bit avec des interrupteurs ou octet par octet avec un clavier en binaire
ou en hexadécimal, on allume le PC, on lance l’éditeur du programme d’assemblag
e et on
écrit
:
SYSTEME DE CONTROLE D’ACCES ELA CT 1000+L
SEQUENCE 3
Révisé le
14/12/2006
Page
4
/10
Romuald REBECK
MOVLW
10011111B
TRIS
6
Ensuite on lance la commande d’assemblage et l’assembleur traduit MOVLW par 1100,
rajoute la donnée 10011111B puis traduit TRIS par 000000000 et rajoute l’adresse 110 (il
traduit directement 6 décimal en 110 en
binaire)
On obtient alors automatiquement le code opération de ces deux instructions sous forme d’un
listing
:
110010011111
000000000110
Si l’on a défini l’adresse de début d’implantation du programme par exemple l’adresse 000h,
ce qui se fait avec la d
irective d’assemblage ORG 000h, qu’il suffit de placer ainsi :
ORG
000h
MOVLW
10011111B
TRIS
6
Après assemblage on a le listing suivant avec l’adresse d’implantation des instructions
:
000h
110010011111
001h
000000000110
La 1
ère
instruction qui
suit ORG 000h est placée à l’adresse 000h, la 2
ème
est placée à l’adresse
suivante soit 001h
Si l’on veut écrire ce mini programme dans l’EPROM du PIC, on connecte le programmateur
de PIC à l’ordinateur, on place le PIC sur son support et on lance la pro
grammation.
Toutes les instructions sont écrites dans l’EPROM, le résultat est :
Ainsi on a plus à s’occuper des codes opération, c’est l’assembleur qui s’en occupe, donc
à la fin du chapitre assembleur, on n’en parlera plus (ouf
!!!), s
auf au début de la
description des instructions...
On a maintenant des informations électriques correspondant à des instructions dans l’EPROM
(seules informations que le PIC peut comprendre)
Remarque, on n’a pas le contenu de l’EPROM vu au 1.1
-
, il manque le vecteur de reset.
7FFh
1100
10011111
000h
000000000
110
001h
SYSTEME DE CONTROLE D’ACCES ELA CT 1000+L
SEQUENCE 3
Révisé le
14/12/2006
Page
5
/10
Romuald REBECK
Pour avoir le vecteur de reset il faudrait écrire en assembleur
:
ORG
7FFh
GOTO
000h
ORG
000h
MOVLW
10011111B
TRIS
6
Remarque: la directive ORG, comme toutes les directives d’assemblage, n’est pas une
instr
uction, elle ne donne pas de code opération et n’apparaît pas dans l’EPROM.
Les directives d’assemblage ont pour but de faciliter l’écriture du programme en assembleur
et pour la directive ORG, de définir l’adresse absolue de manière définitive pour
l’imp
lantation des différentes parties du programme.
2-
Directives d’assemblage
:
Outre la directive ORG que nous venons de voir, il en existe plusieurs autres que nous allons
examiner successivement.
2.1- Mais nous allons d’abord étudier la structure d’un
e ligne de programme en assembleur
:
Le programme assembleur comporte 3 champs voir page 41/56
Dénomination
Champ étiquette
Champ instruction
Champ commentaire
Début
MOVLW 10011111B
; config ESSEEEEE
Exemple
TRIS 6
; initialisation de PORT
B
L’étiquette est facultative et correspond à un mot au choix
Le champ commentaire est facultatif, un commentaire commence par un point virgule
On peut écrire une ligne de programme ne comprenant qu’un commentaire
Pour comprendre l’intérêt de l’étiquett
e reprenons le programme précédent
:
ORG
7FFh
GOTO
000h
ORG
000h
MOVLW
10011111B
TRIS
6
Si l’on utilise une étiquette ce programme peut s’écrire
:
101
000000000
7FFh
1100
10011111
000h
000000000
110
001h
MOVLW
10011111B
TRIS
6
GOTO
000h
1 / 11 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 !