68
DOSSIER TECHNIQUE 000 Start 001 Stop 1 2 3 6 1 2/5 3B 1° ANNEE CAPET ET PLP2 ELECTRONIQUE 4° trimestre 1997 Jean GONZALEZ Christian VALADE IUFM de Toulouse Unité de Formation Technologies Industrielles Département Electronique 118, route de Narbonne 31078 TOULOUSE CEDEX 4 Tél : 05 62 25 21 45 Télécopie : 05 62 25 21 58 E-mail : [email protected]

Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

  • Upload
    lenhu

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

DOSSIER TECHNIQUE

000 Start 001 Stop1 2 3 6 1 2/5 3B

1° ANNEE CAPET ET PLP2 ELECTRONIQUE

4° trimestre 1997

Jean GONZALEZ Christian VALADE

IUFM de Toulouse Unité de Formation Technologies IndustriellesDépartement Electronique 118, route de Narbonne

31078 TOULOUSE CEDEX 4Tél : 05 62 25 21 45 Télécopie : 05 62 25 21 58 E-mail : [email protected]

Page 2: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 2

Page 3: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 3

Sommaire

1. MISE EN SITUATION............................................................................................91.1. ALGORITHME D'UTILISATION "EMPRUNT D'UN OUVRAGE"..................................91.2. ALGORITHME D'UTILISATION "RESTITUTION D'UN OUVRAGE".......................... 101.3. FONCTION D'USAGE DU DECODEUR..................................................................... 10

2. LES CODES 2 PARMI 5 .....................................................................................102.1. SPECIFICATION DU CODE 2 PARMI 5 - 5 BARRES................................................ 112.2. SPECIFICATION DU CODE 2 PARMI 5 3 BARRES................................................ 122.3. SPECIFICATION DU CODE 2 PARMI 5 - ENTRELACE............................................ 13

3. SCHEMA FONCTIONNEL ASSOCIE A LA FONCTION D'USAGE DUDECODEUR DE CODES A BARRES ....................................................................14

3.1. FONCTION "ACQUISITION DU CODE DE L'ETIQUETTE"....................................... 143.2. FONCTION "DETERMINATION DU CONTENU DE L'ETIQUETTE"......................... 153.3. FONCTION "TRANSFERT DU CONTENU DE L'ETIQUETTE VERS LESPERIPHERIQUES"............................................................................................................ 153.4. FONCTION "AFFICHAGE DES MESSAGES"............................................................ 163.5. FONCTION "DETECTION DE LA PRESENCE D'UNE ETIQUETTE"........................ 163.6. FONCTION "CONTROLE DU PROCESSUS DE LECTURE"....................................16

4. SCHEMA FONCTIONNEL DE LA FONCTION "DETERMINATION DUCONTENU DE L'ETIQUETTE" ...............................................................................17

4.1. FONCTION "CREATION DE LA TABLE DES ZEROS".............................................. 174.2. FONCTION "RECHERCHE DU TYPE DE TABLE".................................................... 174.3. FONCTION "RETOURNAGE EVENTUEL DE LA TABLE"......................................... 184.4. FONCTION "CONSTRUCTION DES CARACTERES"............................................... 184.5. FONCTION "RECONNAISSANCE DES CARACTERES".......................................... 194.6. FONCTION "CODAGE ASCII DES CARACTERES".................................................. 194.7. FONCTION "CONTROLE DU PROCESSUS DE DETERMINATION DU CONTENUDE L'ETIQUETTE"............................................................................................................. 20

5. ANALYSE DE L'ALGORIGRAMME APPELE LORS DE LA RENCONTRED'UNE BARRE. .......................................................................................................20

5.1. ROLE DE LA ROUTINE "CREATION DE LA TABLE DES ZERO"............................. 205.2. ROLE DE LA ROUTINE "RECHERCHE DU TYPE DE TABLE".................................205.3. ROLE DE LA ROUTINE "RETOURNE"...................................................................... 205.4. ROLE DE LA ROUTINE "CREATION DE LA TABLE HEXA"..................................... 21

Page 4: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 4

5.5. ROLE DE LA ROUTINE "RECONNAISSANCE DES CARACTERES".......................215.6. ROLE DE LA ROUTINE "CONVERSION HEXA ASCII".............................................215.7. ROLE DE LA ROUTINE "TRANSFERT DANS DU CONTENU DE L'ETIQUETTEVERS LES PERIPHERIQUES"..........................................................................................215.8. ROLE DE LA ROUTINE "AFFICHAGE DU MESSAGE OK".......................................215.9. ROLE DE LA ROUTINE "AFFICHAGE DU MESSAGE D'ERREUR"..........................21

6. ARCHITECTURE DE LA STRUCTURE DU DECODEUR ................................ 236.1. STRUCTURE S 1.1 "PILOTAGE"...............................................................................236.2. LA STRUCTURE "MEMORISATION PASSIVE" S. 1.3...............................................246.3. LA STRUCTURE "MEMORISATION ACTIVE" S. 1.4................................................246.4. LA STRUCTURE "COMMUNICATION AVEC LE LECTEUR ET LE BUZZER" S. 1.7246.5. LA STRUCTURE "COMMUNICATION PARALLELE" S. 1.6......................................256.6. LA STRUCTURE "COMMUNICATION SERIE" S. 1.5...............................................256.7. LA STRUCTURE "DECODAGE D'ADRESSES..........................................................266.8. STRUCTURE "ALIMENTATION" S.A. 1.....................................................................26

7. SCHEMA STRUCTUREL DU DECODEUR ....................................................... 288. SCHEMA DE CONCEPTION DU DECODEUR ................................................. 29

8.1. NOMENCLATURE DES COMPOSANTS....................................................................298.2. DESSIN D'IMPLANTATION DES COMPOSANTS......................................................308.3. DESSIN D'ENSEMBLE...............................................................................................31

9. STRUTURE LOGICIELLE DU DECODEUR ...................................................... 329.1. TABLES DES SYMBOLES..........................................................................................329.2. PROGRAMME ECRIT EN LANGAGE C.....................................................................349.3. UTILISATION DE L'ASSEMBLEUR AVOCET............................................................43

10. TRAVAUX DIRIGES ......................................................................................... 4611. TRAVAUX PRATIQUES.................................................................................... 58

Page 5: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 5

Programme de formation

Cours

Jeudi 20 novembre 1997de 9 h à 12 hCours 1

Les structures logicielles fondamentalesDéfinition des termes et expressions utilisés lors de l'étude de constatation des

structures logiciellesLes techniques de programmation structurée

Présentation d'une méthode d'analyse des logiciels indépendante du langage utilisé.Les outils et les techniques d'élaboration d'un logiciel

* sur le codage C* sur les directives d'assemblage* sur les opérations de "linkage"

Architecture du micro-contrôleur 68HC11Architecture interne et mode d'adressages

Lundi 24 novembre 1997de 9 h à 12 hCours 2

La programmation structurée en langage C

Jeudi 27 novembre 1997de 9 h à 12 hCours 3

Présentation du décodeur de codes à barresAnalyse fonctionnelle de constatation du décodeurLes périphériques du 68HC11

* ports parallèles* port série* timer

Les liaisons parallèles entre un ordinateur et un périphérique:Exemple: la connexion de type Centronix Ordinateur-Imprimante.

Page 6: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 6

Lundi 1 décembre 1997de 9 h à 12 hCours 4

La programmation structurée en langage C (suite)Les différentes opérations d'élaboration d'un logiciel

* sur le codage C* sur les directives d'assemblage* sur les opérations de "linkage"

Jeudi 8 janvier 1998de 9 h à 12 hCours 5

Les Liaisons séries asynchrones entre ordinateurs et périphériquesMode de programmationLes liaisons séries asynchrones entre ordinateurs et périphériques et analyse d'un

protocole de dialogue de type XON/XOFF.

Jeudi 15 janvier 1998de 9 h à 12 hCours 6

Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochipL'évolution technologique des micro contrôleurs à court terme et les applications

actuelle et dans un avenir proche.

Page 7: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 7

Travaux dirigés

Mercredi 3 décembre 1997 (GB) et (GA)Travaux dirigés 1

Analyse fonctionnelle de constatation du décodeurAnalyse des algorithmes et algorigrammes.

Mercredi 3 décembre 19997 (GB) et (GA)Travaux dirigés 2

Validation de la structure logicielle remplissant la fonction "Transcodage descaractères numériques d'une table codés en décimal en caractères codés enA.S.C.I.I." et « retourne table »

Lundi 8 décembre 1997 (GA et GB)Travaux dirigés 3

Conception de la structure matérielle de la perche.

Jeudi 11 décembre 1997 (GA et GB)Travaux dirigés 4

Etude d'une structure logicielle remplissant la fonction "Retourne la table zéro etcompacte".

En automomieTravaux dirigés 4 bis

Analyse de la documentation du micro contrôleur 68 HC 11Conception de la structure matérielle du décodeur de codes à barres.

Jeudi 8 janvier 1998 (GA et GB)Travaux dirigés 5

Utilisation des fonctions chronométrage du 68HC11Conception d'une structure logicielle simple.

Page 8: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 8

Travaux pratiques

Semaine du 1 décembre au 5 décembre 1997Travaux pratiques 1

Prise en main de l’outil de développement M11Etude d'une structure logicielle remplissant la fonction "Transcodage des caractères

numériques d'une table codés en décimal en caractères codés en A.S.C.I.I.".Validation expérimentale à l'aide des outils de développement.

Semaines du 8 au 12 décembre 1997Travaux pratiques 2

Etude d'une structure logicielle remplissant la fonction "Retourne la table zéro".Validation expérimentale à l'aide des outils de développement.

Semaines du 15 au 19 décembre 1997Travaux pratiques 3

Conception d'une structure logicielle remplissant la fonction "format"Mise en état de fonctionnement à l'aide de l'outil de développement

Semaine du 12 au 16 janvier 1998Travaux pratiques 4

Conception d'une structure logicielle remplissant les fonctions associées auchronométrage développées dans les travaux dirigés 5

Mise en état de fonctionnement à l'aide de l'outil de développement

Semaines du 19 au 23 janvier 1998Travaux pratiques 5

Liaison sérieMise en état de bon fonctionnement d’une liaison série.Détermination expérimentale des limites d'utilisation de la liaison.Synthèse

Page 9: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 9

1. MISE EN SITUATION

Le lecteur et le décodeur de code à barres sont des composants d'un système degestion informatisé des prêts d'une bibliothèque.

Les utilisateurs de la bibliothèque possèdent une carte de lecteur. Un numéro à 6chiffres a été attribué à chaque lecteur. Ce numéro est transcrit en code à barres sur uneétiquette collée sur la carte de lecteur.

De la même façon, sur chaque document pouvant être emprunté se trouve un code àbarres, permettant de repérer l'ouvrage en question.

Le lecteur optique, qui est ici un crayon optique comporte une "diode émettriced'infrarouge et une diode réceptrice". Ces deux composants électroniques sont noyés dansla même tête de lecture. Le lecteur optique est relié électriquement au décodeur, quicomporte une structure matérielle à laquelle lui a été associée une structure logicielle.

Le décodeur est relié par une liaison parallèle ou série à un micro-ordinateur (ou unautre périphérique) qui assure la gestion des prêts d'ouvrage.

1.1. ALGORITHME D'UTILISATION "EMPRUNT D'UN OUVRAGE"

+ 5 v 0 v

Alimentation

Ver

s le

cteu

r opti

qu

e

(cra

yon

P

10 D

ata

logic

)

Ver

s Im

pri

man

te o

u C

om

pati

ble

PC

Lia

ison

para

llèl

eL

iais

on

sér

ie

DECODEUR

DE

A

BARRES

CODE

Aff

ich

age

du

mes

sage

d'e

rreu

r

- Le futur emprunteur balaye le code de sa carte par le crayon optique,

Page 10: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 10

- puis balaye le code de l'ouvrage devant être emprunté à l'aide du crayonoptique.

- balaye avec le crayon l'étiquette "Emprunt" collée sur le poste de travail.- après des vérifications nombreuses, (nombre de livres empruntés, lecteur

interdit de prêt ...) l'ordinateur autorise la démagnétisation de la bandeinvisible solidaire de l'ouvrage. L'emprunteur pourra ainsi quitter labibliothèque sans être intrigué par le système de protection contre le vol.

1.2. ALGORITHME D'UTILISATION "RESTITUTION D'UN OUVRAGE"

- L'emprunteur balaye le code de sa carte par le crayon optique,- puis balaye le code de l'ouvrage devant être restitué à l'aide du crayon

optique.- balaye avec le crayon optique l'étiquette "Restitution" collée sur le poste de

travail.- l'ordinateur autorise la démagnétisation de la bande invisible solidaire de

l'ouvrage afin de le protéger contre le vol.

On isole la Fonction Principale 1

"DECODAGE".

1.3. FONCTION D'USAGE DU DECODEUR

A partir des informations provenant du crayon optique, mettre sur le bus de liaisondes interfaces, à la disposition des périphériques, les codes ASCII des caractèressignificatifs contenus dans le mot lu, de fournir un message visuel sur le type d'erreur delecture éventuelle ou un bip sonore si la lecture est correcte.

On se propose d'analyser la structure matérielle et logicielle du décodeur et demontrer comment l'organisation fonctionnelle et structurelle proposée participe à la

réalisation de cette fonction d'usage.

2. LES CODES 2 PARMI 5

Un mot est composé de caractères numériques et de deux caractères précisant ledébut (caractère START) et la fin du mot (caractère STOP).

Chaque caractère est formé par des éléments qui peuvent être des barres ou desespaces. Un espace ou une barre large correspond a la valeur binaire "1", tandis que unespace ou une barre mince correspond à la valeur binaire "0".

Les codes 2 parmi 5 ont la particularité d'avoir 5 éléments significatifs. Le premierélément du mot est toujours une barre. Ce premier élément peut prendre la valeur "0" ou

Page 11: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 11

"1" suivant l'épaisseur de la barre. Le dernier élément du mot de n caractères est toujoursune barre qui peut être large ou mince.

La largeur d'un élément large est trois fois plus grande que celle d'un élément mince.

La longueur occupée par un caractère est toujours la même quelque soit le caractèreimprimable.

2.1. SPECIFICATION DU CODE 2 PARMI 5 - 5 BARRES

Ce code est constitué uniquement par des barres.

Les espaces ne sont pas significatifs et ne contiennent pas d'information.

Chaque caractère imprimable est constitué par deux barres larges et trois barresminces.

De ce fait, ce code présente une grande tolérance d'impression (+/- 25 %) et permetune réalisation avec les moyens d'impression les plus simples, notamment à l'aided'imprimantes à aiguilles. Cependant un encombrement important dû à la faible densité pardigits limite ses applications aux mots composés de 4 ou 5 caractères maximum.

110 Start 101 Stop2/5 5B1 2 3 4

Figure 1 : Etiquette utilisant un code 2 parmi 5 5 barres

Caractère EL1 EL2 EL3 EL4 EL5

0 0 0 1 1 0 $0C

1 1 0 0 0 1 $11

2 0 1 0 0 1 $12

3 1 1 0 0 0 $03

4 0 0 1 0 1 $14

5 1 0 1 0 0 $05

6 0 1 1 0 0 $06

7 0 0 0 1 1 $18

8 1 0 0 1 0 $09

9 0 1 0 1 0 $0A

Start 1 1 0

Stop 1 0 1

Figure 2 : Table de vérité du code 2 parmi 5 5 barres

Page 12: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 12

2.2. SPECIFICATION DU CODE 2 PARMI 5 3 BARRES

Ce code est constitué par des barres et des espaces.

Un caractère commence et se termine toujours par une barre.

Les espaces appartenant aux caractères sont significatifs et contiennent desinformations. Les espaces appartenant aux caractères peuvent être larges ou minces. Ilspeuvent, en conséquence, prendre la valeur "0" ou "1" suivant leur largeur.

Chaque caractère est séparé par un espace généralement mince. Les espaces entrecaractères ne sont pas significatifs et ne contiennent pas d'information.

000 Start 001 Stop1 2 3 6 1 2/5 3B

Figure 3 : Etiquette utilisant un code 2 parmi 5 3 barres

Caractère EL1 EL2 EL3 EL4 EL5

0 0 0 1 1 0 $0C

1 1 0 0 0 1 $11

2 0 1 0 0 1 $12

3 1 1 0 0 0 $03

4 0 0 1 0 1 $14

5 1 0 1 0 0 $05

6 0 1 1 0 0 $06

7 0 0 0 1 1 $18

8 1 0 0 1 0 $09

9 0 1 0 1 0 $0A

Start 0 0 0

Stop 0 0 1

Figure 4 : Table de vérité du code 2 parmi 5 3 barres

Chaque caractère imprimable est constitué par trois barres et deux espaces.

De ce fait, ce code présente une tolérance d'impression de l'ordre de +/- 10 % etpermet une réalisation avec les moyens d'impression simples, par exemple à l'aided'imprimantes à aiguilles de bonne qualité.

Un encombrement plus faible par rapport à la longueur du mot fait que ce code estutilisé par les organismes devant imprimer les étiquettes en fonction du produit traité. C'estnotamment le cas des bibliothèques et librairies.

Page 13: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 13

2.3. SPECIFICATION DU CODE 2 PARMI 5 - ENTRELACE

Ce code est constitué par des barres et des espaces.

Le premier caractère imprimable commence et se termine par une barre et estcomposé de deux barres larges et de trois barres minces.

Le deuxième caractère imprimable commence et se termine par un espace et estcomposé de deux espaces larges et de trois espaces minces.

Les espaces non significatifs du premier caractère deviennent les espacessignificatifs, support de l'information, pour le deuxième caractère qui se trouve alorsenchevêtré dans les éléments du premier caractère.

Les caractères suivants sont composés de la même façon. Tous les espaces du motsont significatifs et contiennent des informations. Il n'y a pas d'espace séparateur decaractère.

De ce fait, ce code présente une tolérance d'impression faible de l'ordre de +/- 10 %et permet une réalisation avec les moyens d'impression simples, par exemple à l'aided'imprimantes à aiguilles de bonne qualité. Malgré un encombrement réduit, ce code n'estutilisable que pour des mots composé d'un nombre pair de caractères.

100stop

0000start 98765432

Figure 5 : Etiquette utilisant un code 2 parmi 5 entrelacé

Caractère EL1 EL2 EL3 EL4 EL5

0 0 0 1 1 0

1 1 0 0 0 1

2 0 1 0 0 1

3 1 1 0 0 0

4 0 0 1 0 1

5 1 0 1 0 0

6 0 1 1 0 0

7 0 0 0 1 1

8 1 0 0 1 0

9 0 1 0 1 0

Start 0 0 0 0

Stop 1 0 0

Figure 6 : Table de vérité du code 2 parmi 5 entrelacé

Page 14: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 14

3. SCHEMA FONCTIONNEL ASSOCIE A LA FONCTION D'USAGE DU DECODEUR DE CODES A

BARRES

3.1. FONCTION "ACQUISITION DU CODE DE L'ETIQUETTE"

Rôle:

La fonction "Acquisition de l'image de l'étiquette" donne l'image numérique del'étiquette. Chaque élément de l'étiquette est représenté par un octet. Le contenu de l'octetest fonction de la dimension de l'élément.

- Elle remplit une table appelée TABLE DES DUREES. Le contenu d'un mot dela table est proportionnel à la durée d'un élément. La table contient autant demots qu'il y a d'éléments sur l'étiquette. Il n'y a pas de prise en compte de lacouleur de l'élément, car le début et la fin d'un mot est toujours une barre(noire), et il y a succession d'espaces blancs et de barres noires.

- Cette routine détermine également la fin de table.

Entrée : (A)- Image temporelle de l'étiquette.

Sortie :(B)- Série de mots de huit bits. Chaque mot représente la "durée" des éléments

(barres ou espaces) de l'étiquette. La vitesse de défilement étant uniforme, onaura une image numérique de la lecture de l'étiquette physique.

Entrée de commande : (3)- L'ordre d'acquisition est donné par le contrôle du processus de lecture lorsque

la première barre d'une étiquette a été détectée et si il la fonction "Contrôle deprocessus" a terminé la lecture et le traitement de l'étiquette précédente.

3.2. FONCTION "DETERMINATION DU CONTENU DE L'ETIQUETTE"

Rôle :

Donner de code ASCII des caractères de l'étiquette

Entrée : (B)- Image numérique de l'étiquette physique (table des durées)

Sortie : (C)- Caractères de l'étiquette codés en ASCII (table ASCII)

Entrée de commande : (5)- Ordre de mise en service de la fonction

Sortie de commande : (4)- Etat du traitement de l'étiquette

Page 15: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 15

Détection de la présence

d'une étiquette

Acquisition del'image del'étiquette

Détermination du contenu del'étiquette

Transfert ducontenu de

l'étiquette vers les périphériques

Contrôle du processus de lecture

Affichage desmessages

Matière d'oeuvre informationnelle traitée par l'objet technique

Matière d'oeuvre informationnelle de commande

A

B C E

1 2

3

4 5 8 9

10

11

Imagetemporelle

del'étiquette

Contenu de

l'étiquettecodé

en ASCII

Confirmation de

lecturecorrecte

Etatdu

périphérique

12

.

Figure 7 : Schéma fonctionnel du décodeur

3.3. FONCTION "TRANSFERT DU CONTENU DE L'ETIQUETTE VERS LESPERIPHERIQUES"

Rôle :

Transférer le contenu de la mémoire vers le périphérique lorsque celui-ci estdemandeur. L'ordre de transfert est donné par le contrôle du processus de lecture si lafonction "Transfert du contenu de l'étiquette" a détecté le périphérique demandeur.

Entrée : (C)- Caractères de l'étiquette codés en ASCII

Sortie :( E)- Les caractères codés en ASCII représentatifs du mot composé sur l'étiquette

sont envoyés au terminal (ordinateur de saisie, imprimante, ...) Le mode detransmission peut être série ou parallèle. Ces caractères seront envoyés si leterminal est demandeur.

Entrées de commande :- (12) Détection de l'état du périphérique (demandeur ou non)- (8) Autorisation du transfert de 1 mot de huit bits

Sortie de commande :- (9) Etat du périphérique (demandeur ou non)

3.4. FONCTION "AFFICHAGE DES MESSAGES"

Rôle :

Page 16: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 16

Renseigner l'utilisateur si la lecture est correcte et donner au technicien demaintenance le type d'erreur rencontré lors de la lecture

Entrée de commande : (10)- Mot de huit bits caractéristique de la lecture

Sortie de commande : (11)- Impulsion sonore et lumineuse si la lecture est correcte- Affichage de message d'erreur si la lecture est incorrecte

3.5. FONCTION "DETECTION DE LA PRESENCE D'UNE ETIQUETTE"

Rôle :

Informer la fonction "contrôle du processus de lecture" qu'une barre a été détectée

Entrée de commande: (1)- Rencontre de la première barre de l'étiquette.

Sortie de commande : (2)- Sortie active dès la rencontre de la première barre.

3.6. FONCTION "CONTROLE DU PROCESSUS DE LECTURE"

Rôle :

Gérer séquentiellement la mise en service de chaque fonction. Les enchaînementsentre les différentes séquences sont explicités par les algorigrammes ci-après.

4. SCHEMA FONCTIONNEL DE LA FONCTION "DETERMINATION DU CONTENU DE

L'ETIQUETTE"

4.1. FONCTION "CREATION DE LA TABLE DES ZEROS"

Rôle :

A partir de la table contenant l'image temporelle de l'étiquette, la fonction "création dela table des zéros" donne l'image physique de l'étiquette.

Entrées (Ba) :- Série de mots de huit bits. Chaque mot représente la "durée" des éléments

(barres ou espaces) de l'étiquette. La vitesse de défilement étant uniforme, onaura une image numérique de la lecture de l'étiquette physique.

Sorties (Bz) :- Série de mots de huit bits ($00 ou $01) donnant l'image physique de

l'étiquette. $00 pour un élément mince, $01 pour un élément large.

Entrée de commande : (4.10)

Page 17: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 17

- Ordre mise en service de la fonction

Sortie de commande : (4.11)- Renseigne la fonction "Contrôle de processus de détermination du contenu de

l'étiquette" sur la bonne exécution de la création de la table des zéros.

4.2. FONCTION "RECHERCHE DU TYPE DE TABLE"

Rôle :- Rechercher les éléments composant les caractères "Start" et "Stop".- Comparer les caractères "Start" et "Stop" à ceux caractérisant le type de table- Identifier le type de table parmi les trois possibles.

Entrées (Bz) :- Série de mots de deux mots huit bits ($00 ou $01) donnant l'image physique

de l'étiquette. $00 pour un élément mince, $01 pour un élément large.

Entrée de commande : (4.1)- Ordre mise en service de la fonction

Sortie de commande : (4.2)- Renseigne la fonction "Contrôle de processus de détermination du contenu de

l'étiquette" sur le type de table reconnue.

Page 18: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 18

4.3. FONCTION "RETOURNAGE EVENTUEL DE LA TABLE"

Rôle :

Cette fonction est mise en service lorsque le caractère Start n'a pas été trouvé endébut d'étiquette. Il s'agit d'une lecture dans le sens droite gauche. Dans ce cas, le contrôledu processus de détermination du contenu de l'étiquette commandera le retournage del'image de l'étiquette.

Entrée : (Bb)- Image numérique de la lecture de l'étiquette.

Sortie :(Bd)- Image numérique de la lecture retournée de l'étiquette.

Entrée de commande : (4.3)- Mise en service de la fonction "Inversion"

Sortie de commande : (4.4)- Renseigne la fonction "Contrôle de processus de détermination du contenu de

l'étiquette" sur la bonne exécution de la fonction.

4.4. FONCTION "CONSTRUCTION DES CARACTERES"

Rôle :

La reconnaissance du Start et du Stop donne le type de codage de l'étiquette(2 parmi 5 3 barres, 2 parmi 5 5 barres , 2 parmi 5 entrelacé). A partir du type de code et dela position des éléments significatifs, la fonction construit un mot de huit bits significatifs ducaractère présent sur l'étiquette.

Entrée : (Bd)

Sortie : (Be)- Table contenant les caractères codés en 2 parmi 5 de l'étiquette

Entrée de commande : (4.5)- Ordre mise en service de la fonction

Sortie de commande : (4.6)- Renseigne la fonction "Contrôle de processus de détermination du contenu de

l'étiquette" sur l'incompatibilité élément caractère.

Page 19: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 19

Recherche du type de

table

Retournageéventuel

de la table

Construction descaractères

Reconnaissancedes caractères

Codage ASCII descaractères

Contrôle du processusde détermination du

contenu de l'étiquette

Bd Be Bf Bg C

4.11 4.3 4.4 4.5 4.6 4.7 4.8 4.9

Ba BbB

4 5Matière d'oeuvre informationnelle traitée par l'objet technique

Matière d'oeuvre informationnelle de commande

4.10

Création de latable des zéros

4.1 4.2

Bz

Figure 8 : Schéma fonctionnel de la fonction "Détermination ducontenu de l'étiquette

4.5. FONCTION "RECONNAISSANCE DES CARACTERES"

Rôle :

Identifier les caractères lus par rapport à ceux contenus dans une table de référence.

Entrée : (Be)

Sortie : (Bf)- Table contenant les caractères codés décimal de l'étiquette

Entrée de commande : (4.7)- Ordre mise en service de la fonction

Sortie de commande : (4.8)- Renseigne la fonction "Contrôle de processus de détermination du contenu de

l'étiquette" sur la non reconnaissance d'un caractère.

4.6. FONCTION "CODAGE ASCII DES CARACTERES"

Rôle :

Transforme le code décimal du caractère en code ASCII.

Exemple : Le chiffre 1 est un caractère dont le code décimal est 1. Le codage de 1 enASCII donne $31.

Entrée : (Bf)

Page 20: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 20

Sortie :(Bg ou C)- Caractères de l'étiquette codés en ASCII

Entrée de commande : (4.9)

4.7. FONCTION "CONTROLE DU PROCESSUS DE DETERMINATION DU CONTENUDE L'ETIQUETTE"

Rôle :

- Gérer séquentiellement la mise en service de chaque fonction. Les enchaînementsentre les différentes séquences sont explicités par l'algorigramme ci-après.

5. ANALYSE DE L'ALGORIGRAMME APPELE LORS DE LA RENCONTRE D'UNE BARRE.

5.1. ROLE DE LA ROUTINE "CREATION DE LA TABLE DES ZERO"

- Elle analyse la durée des éléments et affecte la valeur $01 à un élément large et lavaleur $00 à un élément mince. La table alors créée est appelée TABLE DES ZERO. LeDébut de la table des zéro et la fin de la table des zéro sont repérées.

- Met à jour éventuellement la variable ERREUR en lui affectant $08.

5.2. ROLE DE LA ROUTINE "RECHERCHE DU TYPE DE TABLE"

A partir des informations contenues dans le début des caractères terminaux, cetteroutine :

- recherche la présence du caractère de Start et du stop correspondant au codedétecté,

- détermine le type de code (2/5 - 3 barres, 2/5 - 5 barres, 2/5 - entrelacé) utilisépour l'étiquette qui vient d'être lue,

- positionne les pointeurs de table au premier élément du premier caractèresignificatif et au dernier élément du dernier caractère significatif,

- met éventuellement à jour la variable ERREUR en lui affectant $04 ou $01.

5.3. ROLE DE LA ROUTINE "RETOURNE"

- Cette routine est active lorsque le caractère Start n'a pas été trouvé en débutd'étiquette. Il s'agit d'une lecture dans le sens droite gauche. Dans ce cas, le contrôle duprocessus de détermination du contenu de l'étiquette commandera le retournage del'image de l'étiquette.

Page 21: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 21

5.4. ROLE DE LA ROUTINE "CREATION DE LA TABLE HEXA"

- Reconstitue les caractères à partir des éléments binaires $00 et $01 afin d'obtenirun mot de huit bits caractérisant le caractère. Exemple 0 sera codé $0C, 1 sera codé $11, .

- La table ainsi constituée est nommée "TABLE HEXA". Le Début de la table pointe lecode du premier caractère. La fin de table pointe le dernier caractère.

5.5. ROLE DE LA ROUTINE "RECONNAISSANCE DES CARACTERES"

- Compare les codes des caractères de la table hexa au code des caractères de latable de référence et affecte au contenu de la table hexa la valeur décimale du caractère lu.

- Met éventuellement à jour la variable ERREUR en lui affectant $10.

5.6. ROLE DE LA ROUTINE "CONVERSION HEXA ASCII"

- Convertit le contenu de la table hexa, qui est actuellement le code décimal ducaractère, en code ASCII correspondant au caractère. Exemple 0 correspond à $30.

5.7. ROLE DE LA ROUTINE "TRANSFERT DANS DU CONTENU DE L'ETIQUETTEVERS LES PERIPHERIQUES"

- Ajoute les caractères $0A (Retour chariot) et $0D (avance d'une ligne)

- Transfert le contenu de la table hexa vers les registres des périphériques.

5.8. ROLE DE LA ROUTINE "AFFICHAGE DU MESSAGE OK"

- Met sous tension la diode électroluminescente, solidaire du crayon, pendant unedurée de l'ordre de 50 ms.

5.9. ROLE DE LA ROUTINE "AFFICHAGE DU MESSAGE D'ERREUR"

- Met sous tension la diode électroluminescente correspondant à la valeur de lavariable d'erreur.

Page 22: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 22

Christian Valade

Jean Gonzalez

Table à l'envers ?

Retouner la table.

Créer la table des zéros

Rechercher le type de table.

Convertir la table en code Hexa

Convertir la table en code 2/5

Code inconnu ? (non 2/5)

Imprimer

Sortie

i = 0?oui

oui

oui

oui

non

Remarque : en cas d'erreur on se contente de sortir le bloc précédent qui a renvoyé l'indication d'erreur a aussi généré 5 bips et positionné la LED concernée.

Erreur table inconnue ou mauvais start/stop ?

Erreur d'imprimante ? (off line, papier, etc...)

Convertir la table en code ASCII

Signaler tout va bien (2 bips, LED crayon, autres LED éteintes).

C'est un parasite isolé (on ignore) Algorigramme de la fonction Timeout( )

Entrée

Figure 9 : Algorigramme de la fonction Time out

Page 23: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 23

6. ARCHITECTURE DE LA STRUCTURE DU DECODEUR

ALIMENTATION

A. 1

S. 1.1

DECODAGE

D'ADRESSES

S. 1.2

MEMORISATION

PASSIVE

S. 1.3

MEMORISATION

ACTIVE

S. 1.4

COMMUNICATION

SERIE

S. 1.5

COMMUNICATION

PARALLELE

S. 1.6S. 1.7

COMMUNICATION

avec le lecteur

optique

PILOTAGE

Lecteur Optique Compatible PC ou Imprimante

et le Buzzer

Buzzer

Figure 10 : Architecture du décodeur

Toutes ces structures sont matérialisées par le micro-contrôleur 68HC11.

6.1. STRUCTURE S 1.1 "PILOTAGE"

Tous les signaux sont des signaux logiques compatibles avec la technologie T.T.L.(Transistor Transistor Logic)

Rôle:

- prend un mot de huit bits (octet) à une adresse particulière, le combine avec lecontenu d'un de ses registres de huit bits, place le résultat, qui est un nouveau mot de huitbits, à la même ou à une autre adresse.

La structure "PILOTAGE" ne peut accomplir qu'une seule tâche à la fois.

Page 24: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 24

6.2. LA STRUCTURE "MEMORISATION PASSIVE" S. 1.3

Rôle:

Mettre en permanence à la disposition de la structure "PILOTAGE" des instructionsafin qu'elle y puise les activités et les routines nécessaires à l'accomplissement de la tâche.Le programme résident permettant le pilotage des structures du décodeur est placé danscette structure.

6.3. LA STRUCTURE "MEMORISATION ACTIVE" S. 1.4

Rôle:

Permettre à la structure "PILOTAGE" d'y déposer des variables intermédiaires, d'yplacer les acquisitions donnant l'image du code, d'assurer le traitement de ses informations,et de mémoriser le contenu d'une étiquette traitée dans l'attente de l'envoi vers lespériphériques.

6.4. LA STRUCTURE "COMMUNICATION AVEC LE LECTEUR ET LE BUZZER" S.1.7

Rôle:

Permet l'acquisition des informations contenues dans le mot lu et renseignel'utilisateur sur le type d'erreurs éventuellement commises lors de l'opération de lecture.

Entrées:- LECT: signal numérique issu du crayon optique- Le niveau bas correspond à un espace, le niveau haut à une barre. Le signal

ne reste pas au niveau haut pendant une durée supérieure à 25 ms.

Sorties:- OK: signal numérique actif au niveau bas pendant une durée de 50 ms lorsque

la lecture et le traitement sont correct. Ce signal permet de fournir uneimpulsion lumineuse par l’intermédiaire de la diode électroluminescente ducrayon optique et une impulsion sonore par l’intermédiaire du buzzer.

- TROP : signal numérique actif au niveau haut lorsqu'il y a trop de caractèresdans le mot ou que la fin du mot n'a pas été détectée.

- CODE AUTRE : signal numérique actif au niveau haut lorsqu'il y a lectured'une étiquette construite dans un code autre que le code 2 parmi 5.

- START/STOP : signal numérique actif au niveau haut lorsqu'il y a un défaut ouune mauvaise lecture des caractères de début et de fin.

- CARACT : signal numérique actif au niveau haut lorsqu'il y a mauvaise lecturedes caractères imprimables.

- TABLE REF : signal numérique actif au niveau haut lorsque le caractère lu n'apas de correspondance dans les tables de référence.

- BUSY/NC : signal numérique actif au niveau haut lorsque le périphérique n'estpas connecté.

Page 25: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 25

6.5. LA STRUCTURE "COMMUNICATION PARALLELE" S. 1.6

Rôle:

Assure le transfert des caractères codés en ASCII, stockés dans le tampond'impression, vers le périphérique possédant une liaison parallèle normalisée Type"Centronics".

Sorties:- Bus de liaison de PC0 à PC7 assure le transport des caractères codés en

ASCII.- STB: signal numérique actif au niveau bas avertissant le périphérique qu'une

nouvelle donnée est disponible sur le bus de liaison. STB reste au niveau bastant que le périphérique n'a pas répondu et pris en compte le caractèreprésent sur le bus de liaison.

Entrée:- ACK: lorsque le périphérique a pris en compte le caractère présent sur le bus

de liaison, ACK passe du niveau haut au niveau bas. C'est la transition hautvers bas qui est active. Un niveau haut présent sur ACK indique que lepériphérique est connecté et sous tension.

6.6. LA STRUCTURE "COMMUNICATION SERIE" S. 1.5

Rôle:

Assure le transfert des caractères codés en ASCII, stockés dans le tampond'impression, vers le périphérique possédant une liaison série normalisée Type "RS 232".

Sorties:- TXD: (Transmitted Data Line) Ligne de transmission de données assure le

transport des caractères codés en ASCII.- RTSN: (Request To Send) Demande d'émission est active au niveau bas,

permet de piloter le périphérique.

Entrées:- CTSN: (Clear to Send) permet le contrôle automatique de la fin de

transmission, est active un niveau bas.

Page 26: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 26

6.7. LA STRUCTURE "DECODAGE D'ADRESSES

Rôle:

La structure "DECODAGE D'ADRESSES " fournit des lignes actives au niveau baspermettant de sélectionner les structures "COMMUNICATION" et "MEMORISATION".

6.8. STRUCTURE "ALIMENTATION" S.A. 1

Rôle:

Fournir une différence de potentiel d'alimentation de + 5 volts +/- 5% à partir de la

différence de potentiel distribuée sur la carte du décodeur.

Page 27: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 27

Le plan mémoire du décodeur

Temp 4 octets réservés pour le compilateur

Rbss Variables globales et tables

Libre

Pile Variables locales et adressesde retour des sous-programmes

64 registres servent à configurer etexploiter les périphériques intégrésau 68HC11

Non utilisée dans cette application

Text Code du module assembleur(start module)

Text Code du module C

Const Table de référence

Libre

Vecteurs Vecteurs Reset et vecteursInterruptions

$0000$0004

$0047

$00FF

$1000

$103F

$B600

$B7FF

$E000

$E0D2

$E646

$E65A

$FFFF

RAM

REGISTRES

EEPROM

ROMouEPROM

Figure 11 : Plan mémoire du décodeur

Page 28: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 28

7. SCHEMA STRUCTUREL DU DECODEUR

Figure 12 : Schéma structurel du décodeur

Page 29: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 29

8. SCHEMA DE CONCEPTION DU DECODEUR

8.1. NOMENCLATURE DES COMPOSANTS

BILL OF MATERIALSDesign: C:\ISIS\GZ\DECOBAR2.DSNRevision: 1.7Author: Jean Gonzalez

Resistors1 R1 10000KΩ Couche métallique3 R2,R3,R4 4.7KΩ Couche métallique1 R5 4.7kΩ Couche métallique

Capacitors

2 C1,C2 22pF Polyester

1 C3 1nF Polyester

3 C4,C6,C7 4.7uF Tantale

1 C5 10nF Polyester

1 C8 47uF Tantale

5 C9,C10,C11,C12,C13 10uF Tantale

Integrated Circuits

1 U1 68HC11-52

2 U2,U3 ULN2003

1 U4 LP2951

1 U5 MAX232

Transistors

1 Q1 8MHz

Diodes

7 D1,D2,D3,D4,D5,D6,D7 LED

1 D8 1.5KE6.8A

2 D9,D10 DIODE

Miscellaneous

1 BUZ1 BUZZER

1 J1 CONN H2

1 J2 CONN H26

1 J3 CONN H16

1 J4 CONN D9

2 J5,J6 CONN H4

1 RP1 4.7KΩ

1 RP2 0.33KΩ

Page 30: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 30

8.2. DESSIN D'IMPLANTATION DES COMPOSANTS

Figure 13 : Vue des composants (échelle non respectée)

Page 31: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 31

8.3. DESSIN D'ENSEMBLE

Figure 14 : Vue d'ensemble côté composants (échelle non respectée)

Page 32: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 32

9. STRUTURE LOGICIELLE DU DECODEUR

9.1. TABLES DES SYMBOLESLinker command line:

-ptext=0E000h,const,strings,rdata=00h/,temp,rbss,data,bss,stack=0FFh \ -oC:\temp\l.obj -hp.sym -mp.MAP C:\C11V7\SCRDECO.OBJ decobar.obj \ C:\HT-6811\LIB\68libsc.lib

Machine type is 6801

Name Link Load Length SelectorC:\C11V7\SCRDECO.OBJ

(abs) 0 0 10000text E000 E000 D2temp 0 E656 4

decobar.obj text E0D2 E0D2 574const E646 E646 10rbss 4 E65A 47temp 0 E656 4

C:\HT-6811\LIB\68libsc.lib

TOTAL Name Link Load Length(abs) 0 0 10000

CLASS DATA

CLASS CODEtext E000 E000 646const E646 E646 10

CLASS RBSSrbss 4 E65A 47temp 0 E656 4

CLASS RDATA

SEGMENTS Name Load Length Top Selector

text 00E000 000656 00E656 E000rdata 00E656 00004B 00E6A1 E656stack 0000FF 000000 0000FF FF

Page 33: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 33

Symbol Table

__Bbss bss E6A1 __Bdata data E6A1 __Brbss rbss E65A__Brdata rdata E656 __Btemp temp E656 __Hbss bss 004B__Hconst const E656 __Hdata data 004B __Hrbss rbss 004B__Hrdata rdata 0000 __Hstack stack 00FF __Hstrings strings E656__Htemp temp 0004 __Htext text E646 __Hvectors vectors 0000__Lbss bss 004B __Lconst const E646 __Ldata data 004B__Lrbss rbss 0004 __Lrdata rdata 0000 __Lstack stack 00FF__Lstrings strings E656 __Ltemp temp 0000 __Ltext text E000__Lvectors vectors 0000 _ascii text E490 _baud (abs) 102B_bip text E117 _c1 rbss 0004 _compacte text E275_ddrc (abs) 1007 _ddrd (abs) 1009 _debacq text E5A6_exit text E0CF _format text E33B _i rbss 0005_imprime text E4FB _iniportc text E0E6 _initimer text E0D2_inv rbss 0006 _j rbss 0007 _k rbss 0008_main text E61F _pioc (abs) 1002 _porta (abs) 1000_portb (abs) 1004 _portc (abs) 1003 _portcl (abs) 1005_portd (abs) 1008 _porte (abs) 100A _r2compacte text E2EF_rcompacte text E2AF _retourne text E3A3 _sccr2 (abs) 102D_scdr (abs) 102F _scsr (abs) 102E _tabhexa text E435_table rbss 0009 _table25 text E3E4 _tcnt (abs) 100E_tctl2 (abs) 1021 _tempo text E0F5 _tflg1 (abs) 1023_tic3 (abs) 1014 _timeout text E562 _tmsk1 (abs) 1022_tn rbss 0046 _tout rbss 0048 _tref const E64C_trop text E144 _tstart const E646 _tstop const E649_ttype rbss 004A _tzero text E152 start text E084

Page 34: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 34

9.2. PROGRAMME ECRIT EN LANGAGE C/************ le compilateur travaille sur 7 bits doncSURTOUT PAS de codes ASCII etendus dans les commentaires en cas depb incomprehensible enlever les commentaires (caract francais)ATTENTION aux indices de tableau non signes (tjs consideres >=0)***/

/*** XIRQ pour orion dans start module (option) ***//*** vecteur de tic3 (pa0) crayon optique FAIT dans start moduledonc enleve ici #define VECTIC3 ((isr *)0xffea)

***********************************************************************/#include "11regist.H" /** mon fichier registres **/#include <intrpt.H>#define LTABLE 60 /** modif facile avec cte declaree **/

/*********************** var globales page0******************************/near unsigned int tn,tout; /** temps : tn dernier front, tout tpsdepuis tn */near unsigned char i; /** indice dernier elt de la table encours **/near unsigned char j,k; /** indices de tableau a tout faire **/near unsigned char ttype; /** 0 : entrela*** 1 : 3barres*** 2 :5barres***/near unsigned char inv; /** 1 si table retournee **/near unsigned char table[LTABLE+1]; /** table a tout faire **/near unsigned char c1; /** caract tampon **//************************ tableaux de ctes**************************/const unsigned char tstart[3]=0,0,3; /* qualificatif const doncen ROM */const unsigned char tstop[3]=1,4,5; /* table des stops */const unsigned char tref[10]= /* code 2/5 */ 0x0c,0x11,0x12,0x03,0x14,0x05,0x06,0x18,0x09,0x0a;/******************** fonctions d'initialisation*************************/ void initimer(void)

tctl2=0x3; /* tous fronts */tflg1=0x1; /* RAZ flag */tmsk1=0x1; /* INTER sur tic3 */

void iniportc (void)

ddrc=0xff; /** 2 etats en output hdns **/pioc=0x1c; /** full_hdns output pulse strb_low ack_low

**/

Page 35: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 35

/*********************** fonctions de traitement*************************//********* temporisation entree en ms environ **********/void tempo (unsigned int tps)

unsigned char c;for( ;tps>0;tps--) /** remarquer la position des ; **/

for(c=0;c<=100;c++);/******************************************************//************* BIP entree nbre de bips ****************/void bip(unsigned char nbre) for( ;nbre>0;nbre--)

porta=porta|0x10; /* OU logique force a 1 le bip ss modifautres */

tempo(200);porta=porta&0xef; /* ET logique force a 0 le bip */tempo(100);

/*************************************************//**************** etiquette trop longue ***************/void trop (void)

portb=1;bip(5); /**** bloquer ici en debug ou TP ****/

/** boucle: goto boucle; ***********/

Page 36: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 36

/************************************************************//******* creation de la table des zeros : ********************* 0 pour elt mince 1 pour elt epais *************//***entree i indice du elt saisi par le crayon ***/void tzero(void)

/**** bloquer ici si niveau 1 d'acquisition seulement ***bloque en inter flag I a 1 *** tester var i et table ****/

k=0; for(j=0;j<i;j++) /*** jusqu'a la premiere inegalite ***/

c1=table[j]; /** save time before convert **/if(table[j] > (2*table[j+1])) table[j]=1; /** nettement plus long donc 1 **/

while(k) /** retour sur elt precedents **/ table[j-k]=1;

k--;break; /** sortie a la premiere inegalite **/

if(table[j] < (table[j+1]/2)) table[j]=0;

while(k) /** retour sur elt precedents **/ table[j-k]=0;

k--;break;

/** aucun des precedents c'est l'egalite **/k++; /** on laisse pour l'instant (k : compteur d'egalite) **/

/*** apres la prem inegalite ds la table ***/ while(j<i)

if(c1>2*table[j+1]) /* elt i+1 nettement plus court*/

c1=table[j+1]; /* save time before clear */table[j+1]=0;

else if(c1<table[j+1]/2) /* i+1 nettement plus long */

c1=table[j+1]; /* save time */table[j+1]=1;

else /** l'egalite n'est plus indetermine **/ c1=table[j+1];

table[j+1]=table[j];

j++;

/*** fin table des zeros ***/

Page 37: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 37

/***************************************************//*********** conversion serie vers // ********************** nbre octets a 1 bit vers un octet **********//*** entrees j indice premier octet source ** nbre nombre acompacter **//*** sortie c1 resultat ***/void compacte(unsigned char nbre)

unsigned char top;top=j+nbre-1;c1=table[j];j++;for( ;j<=top;j++) /** on s'arrete en top **/

c1=(c1<<1)+table[j]; /* decale a gche puis add *//****/void rcompacte(unsigned char nbre) /** le meme en reculant **/

unsigned char top;top=j+1-nbre;c1=table[j];j--;for( ;j>=top;j--) /** on s'arrete en top **/ c1=(c1<<1)+table[j];

if(j==0) break; /** $ff considere positif **/

/****/void r2compacte(unsigned char nbre) /** le meme en reculant 1BARRE/2 **/

unsigned char top;top=j-2*(nbre-1);c1=table[j];j-=2;for( ;j>=top;j-=2) /** on s'arrete en top **/ c1=(c1<<1)+table[j];

if(j==0) break; /** $ff considere positif **/

Page 38: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 38

/****************************************************//****** recherche du type de table et verification start ou stop******//** entree i nbre d'elt ds la table **//** sortie renvoie 1 si erreur start ou stop **/unsigned char format(void)

inv = 0;ttype=table[0]+table[i]; /** selon barres extremes **/if(ttype==0) /** entrelace **/ j=3; /** 4em en j=3 **/ rcompacte(4); /*** start ? ***/ if(c1 != tstart[ttype]) /** mauvais start **/ j=0; /** est ce un stop **/

compacte(3);if(c1 != tstop[ttype]) portb=0x6; /** non plus stop **/

bip(5); /* err start/stop ou code autre 2 leds*/

return(1);else inv=1; /** il faut la retourner **/

else /** pas entrelace **/ portb=0x2; /** code non lu pour l'instant **/

bip(5);return(1);

return(0); /** OK **/

/********************************************//**** retoune la table si stop au debut *****/void retourne(void)

j=0;k=i;while(k>j)

c1=table[j];table[j]=table[k];table[k]=c1;j++;k--;

Page 39: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 39

/********************************************//** tansformation de la table des zeros en code 2 parmi 5 **//** suppose start au debut **//** entree i **//** sortie i (mise a jour indice dernier elt)**/void table25(void)unsigned char jj; /** car j est modifie par rcompacte **/ if(!ttype) /** entrelace **/

jj=12; /** fin du premier caract **/k=0;while(jj<i)

j=jj;r2compacte(5);table[k]=c1;k++;j=jj+1; /** fin du 2n ieme **/r2compacte(5);table[k]=c1;k++;jj+=10; /** paire suivante **/

table[k]=0xff; /** + clair ds wice **/i=k-1; /** fin table 2/5 **/

/*************************************//***** conversion table 2/5 vers table hexa

(binaire naturel) *************//** sortie renvoie 1 si erreur / table de ref **/unsigned char tabhexa(void)

for(j=0;j<=i;j++) c1=table[j];

for(k=0;k<=9;k++) if(c1==tref[k]) table[j]=k;

break; if(k==9) portb=0x10; /** caract ss equivalent ds

tref2/5 **/bip(5);return(1);

return 0; /*** OK ***/

Page 40: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 40

/************ conversion hexa/BCD -> ascii & rajout CR LF************/void ascii(void) /** 0xff en i+1 repere ds wice *** ascii a lasuite de

table hexa de i+2 a i+2+i pour voir les 2 en TP **/

for(j=0;j<=i;j++)table[j+i+2]=table[j]+'0';

table[j+i+2]='\r';table[j+i+3]='\n';table[j+i+4]=0;

/*********************************************/unsigned char imprime(void) if(!(porte & 2)) /** imprimante hors tension **/

portb=0x40;bip(5);return 1;

for(j=i+2;table[j]!=0;j++) k=0;

while(!(pioc & 0x80)) tempo(1);

k++;if(k==100) /** mini 1 caract toutes les 100

ms **/ portb=0x40;

bip(5);return 1; /** off line paper etc...**/

portcl=table[j]; /** envoi **/ return 0;

Page 41: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 41

/*********************************************//***** on passe a la suite de debacq() par un time-out ******/void timeout(void)

if(i) i--; /** i indice du dernier elt saisi **/else return; /** 1 seul (parasite) rendre la

main **/tzero(); /** (table des zeros) **/if(format())

return; /** erreur type de table oustart/stop **/

if(inv)retourne(); /** stop au debut **/

table25();if(tabhexa())

return; /** erreur carac non present ds table deref2/5 **/

ascii();if(imprime())

return; /** Pb imprimante **/bip(2); /** pas d'erreur : 2 bips et **/portb=0x80; /** LED crayon seule **/

/***//******* DEBUT d'acquisition d'un code barre *******/void interrupt debacq(void) tn=tic3; tflg1=0x1; /* RAZ flags */ i=0; do

if(i>=LTABLE) trop(); break; /* trop de barres */tout=tcnt-tn;if(tout>=32000) /** faire coherent avec nbre decalages

**/ timeout(); /* suite, i elt saisis, dernier indice i-1

*/ break;

c1=tflg1 & 0x01;if(c1) table[i]=(tic3-tn)>>7; /** reglage vitesse crayon et

quartz4/8MHz attention changement de format ici */

i++; tn=tic3; /** memoire du dernier instant **/ tflg1=0x1; /* RAZ flags */

while(1); /*** ss fin ***/ tflg1=0x1; /* RAZ flags */

Page 42: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 42

/***//******************* programme ***************/void main (void)

initimer(); /* chrono sur TIC3 */iniportc(); /* imprimante */

/*** set_vector(VECTIC3,debacqu); inutile fait ds start module***/

portb=0;bip(1); /** depart standard : 1 bip **/if(!(porte & 2)) /** imprimante hors tension **/ portb=0x40;

bip(5);ei();

prog: goto prog; /* taches de fond */

Page 43: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 43

9.3. UTILISATION DE L'ASSEMBLEUR AVOCET

Utilisation de l'assembleur AVOCET version 7

1) pour les débutants

On se limite dans ce cas au travail sur un seul fichier à la fois.

1-1) Ecrire votre programme au moyen d'un éditeur de texte.

Exemple

******************************************************************************attention : pas de caractere francais (accents) dans les commentaires*****(codes ASCII) etendus) car l'assembleur travaille sur 7 bits.******************************************************************************************

opt hc11,lbra **sinon 6801 et brancht court**psect rasvar, basepage **page 0**N1 rmb 2 **reserve 2 octets en mémoire N1N2 rmb 2Res rmb 2

***************************************************************************pset ascode,pure ***code assembleur lecture seule***start LDS #$FFboucle LDaa N1

ADDa N2STaa RES

FINI JMP boucle***************************************************************************pset vectors,abs,ovrld **section superpose (overlay) **

rmb $FFFE **@du vecteur de reset**fdb start **contenu du vecteur RESEST**

***************************************************************************END

Remarques :

- l'assembleur accepte indifféremment les majuscules ou les minuscules, sauf pour lesétiquettes et noms de sections.

- PSECT signifie PROG section. Une section (segment sur d'autres assembleurs)correspond à une zone mémoire RAM ou EPROM. On place en RAM les grandeurs susceptiblesde varier (variables) et en EPROM ou ROM les invariants (le programme et les constantes).PSECT ascode signifie que l'on travaille dans une zone mémoire qui s'appelle ascode. Dans unpremier temps (débutants) on utilise l'application assembleur en répondant oui à l'opérationlinkeur. Dans ce cas, votre programme ne peut comporter que les sections ascode et rasvar.ascode sera implanté à partir de l'@ $E000 et rasvar à partir de l'@ $0000 (ces options sontdéfinies dans asm117.bat).

- Options de PSECT :,pure est facultatif (lecture seule) : l'assembleur signalera une tentative d'écriture dans cette

zone. Toutes les sections présentant cette option devront être placées dans le linkeur enROM.

,basepage est facultatif (en page zéro) : permet d'accélérer le programme au moyen del'adressage direct (@ sur un octet toutes les sections présentant cette option devrontêtre placées sur le linkeur aux @ $0000 à $00FF.

,abs signale une section absolue : elle commence à l'@ $0000. Dans ce cas particulier onconnaît les @ des éléments de la section avant linkage.

Page 44: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 44

,ovrld (overlay) permet à une section absolue : elle commence en $0000 de recouvrirpartiellement une autre c'est au programme, de vérifier qu'il n'y a pas de conflit mémoire.A utiliser avec précaution, débutants s'abstenir.

1-2) Enregistrer votre programme avec l'extension AS exemple : ADD.AS

1-3) Lancer l'application Assembleur HC11 en répondant oui à toutes les questions.L'assembleur signale les erreurs de syntaxe. Si il y en a , la lecture du fichier P.PRN (printer))vous aidera à dépanner. Le fichier contenant les codes machines est un fichier ASCII nomméP.S19. Le fichier contenant la table des symboles s'appelle $$.SYM.

1-4) Lancer l'application émulateur WICE. Vous êtes alors prêt à tester votre programme.Le chargement des fichiers P.S19 et $$.SYM est automatique. Si ce n'est pas le cas, vérifier lecontenu du fichier W6811.FIL

2) Vous avez un peu d'expérience. Vous allez linker (relier) des fichiers assemblésséparément.

Exemple :

opt hcll

*******************************************************************************

psect rasvar,basepage ****PAGE 0 ***

ml FCC "MESSAGE"

fcb 0

*******************************************************************************

psect ascode,pure ***lecture seule***

start LDS #$FF

global search_monitor

boucle jsr search_monitor

ldab #0

global wc_command

jsr wc_command

ldd #m1

global print_msg

jsr print_msg

fini jmp fini

*******************************************************************************

psect vectors,abs,ovrld ****section supperposee (overlay)

rmb $FFFE

fdb start

*******************************************************************************

END

Ce programme s'appelle TESTUPS.AS. Il permet de tester une fonction d'affichageintégrée à l'émulateur WICE. Ces fonctions s'appellent (universal peripheral simulator). Ce

Page 45: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 45

programme ne peut fonctionner seul. Il fait appel à 3 sous-programmes (search_monitor,print_msg, wc_command) situés dans un (ou plusieurs) autre fichier. Ces routines ont étédéclarées globales car elles sont définies (écrites) ailleurs. de même un sous-programme définitici et susceptible d'être utilisé ailleurs devrait être déclaré global.

Ce programme sera assemblé en répondant non à l'option linkeur. On obtient alors unfichier TESTUPS.OBJ (assemblé mais @ non encore définies).

Ce programme ne peut fonctionner seul. Il devra être linké avec le programmeUPSAVO7.OBJ qui contient les routines search_monitor, print_msg, wc_command.

Le linkage des deux parties TESTUPS.OBJ et UPSAVO7.OBJ sera fait en utilisantl'application linker HC11. Avant de pouvoir utiliser cette application, il faut écrire un fichier decommandes linker pour dire au ce qu'il a à faire. En général, la syntaxe étant un peu lourde, onrecopie en renommant un fichier de codes linker existant puis on modifie (en général seulementla liste des .OBJ à relier.

Exemple : Fichier de codes linker TESTUPS.TXT

Contenu Commentaires

-Pascode=0F000H,asconst,rasvar=0 \ -P (put) section ascode à partir de @F000,

section asconst à la suite de ascode, section

rasvar à partir de $0000

-O$.obj -Hp.sym -Mp.map \ -O (output) et H (symboles) ne pas modifier

cette ligne

testups.OBJ upsavo7.obj \ liste des .OBJ à relier

Remarque : \ à la fin de chaque ligne pour dire : ce n’est pas fini, lire la suite.

On peut avoir autant de sections que l'on veut (ligne 1). Des fichiers différents peuventpartager ou non une même section. Ex : dans ascode il y a contributions provenant deTESTUPS.AS et UPSAVO7.AS TESTUPS étant nommé avant dans la liste (ligne 3), son codeassembleur occupera le début de la section ascode.

On peut avoir autant de fichiers .OBJ que l'on veut. Une dizaine n'est pas exceptionnel.

ATTENTION : Seules les sections réellement utilisées doivent apparaître ligne du haut. Siproblème sur table des symboles, rajouter une ligne vide ou 0 au début de $$.SYM. (ou FormFeed, saut de page)

Page 46: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 46

Christian Valade

Jean Gonzalez

Travaux dirigés N°1

Objectif:

A partir des algorigrammes fournis dans le document support, de l'organisation duplan mémoire, du rôle de chaque routine, être capable de comprendre (lire, analyser, fairela synthèse, extrapoler) le fonctionnement du décodeur de codes à barres.

Travail demandé:

Q 1) Analyse de l'algorigramme (time out) appelé lors de la rencontre d'une barre

La durée de lecture de l'étiquette de la page est de 1 seconde. Un compteur internefournit une base de temps de 1 ms.

A partir de l'algorigramme appelé lors de la rencontre d'une barre et du rôle dechaque routine;

Q 2) Donner le nombre d'octets de la TABLE DES DUREES, après acquisition

Q 3) Donner le contenu de la TABLE DES DUREES, après exécution de la routineDEBACQ.

Q 4) Calculer le nombre d'octets de TABLE DES ZEROS

Q 5) En déduire le contenu de la TABLE DES ZEROS après l'exécution de la routineCREATION DE LA TABLE DES ZEROS. [TZERO( )]

Q 6) Expliciter le rôle de la routine RECHERCHE DU TYPE DE TABLE. [Format ( )]

Q 7) Expliquer le rôle de la routine RETOURNE [Retourne ( )]

Q 8) Donner le contenu de la table hexa après exécution de la routine CREATION DE LA

TABLE HEXA. (2/5) [Table25( )]

Q 9) En déduire la longueur de la table HEXA (2/5)

Q 10) Donner le contenu de la table hexa après exécution de la rou tineRECONNAISSANCE DES CARACTERES. [Tabhexa ( )]

Page 47: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 47

Q 11) Donner le contenu de la table hexa après exécution de la routine CONVERSION

HEXA ASCII. [ACSII( )]

Q 12) Ecrire le texte tel que vous pourriez lire sur une imprimante connectée audécodeur.

Remarque:- La fréquence du quartz est de 8 Mhz, en conséquence la période du cycle

machine est de 0,5 µs.- Le compteur est commandé par sept décalages. La période du compteur sera

de 0,5 .27 = 128/2 = 64 µs.- La durée maximale de lecture d’une barre entre deux fronts est de 255.64 soit

de 16,3 ms. La durée de lecture d’une étiquette de 75 éléments minces seraitde 1,23 s. Inversement, si la durée de lecture totale de l’étiquette est de 1 s, ladurée d’un élément sera de 1 / 75 soit 13,3 ms. En pratique, la vitesse delecture sera beaucoup rapide.

Page 48: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 48

Christian Valade

Jean Gonzalez

Travaux dirigés N°2

Fonctions ascii( ) et retourne( )

Ressources : Listings suivants :- le programme complet en langage C DECOBAR.C- le compte rendu de "linkage" associé P.MAP- les modules assembleur générés par le compilateur des fonction ascii( ) et

retourne().- la documentation du 68HC11.

Introduction à la fonction ASCII( )

A partir de DECOBAR.C

Q 1) Rédiger l'algorithme de la fonction ascii( ).

Q 2) Dessiner l'algorigramme de la fonction ascii( ).

A partir de la table des symboles :

Q 3) Donner l'adresse mémoire de la fonction ascii( ).

Q 4) Donner l'adresse du premier élément de la table.

Etudier le module assembleur correspondant à la fonction ascii( ).

Q 5) Associer à chaque bloc assembleur son équivalent source C ou algorithme. Enparticulier détailler le mécanisme de la boucle for (faire i fois).

Un opérateur intelligent (mais beaucoup plus lent que le compilateur) peut réduireenviron de moitié le nombre d'instructions. En particulier le compilateur traite chaqueinstruction séparément. L'opérateur peut profiter du fait qu'un calcul d'indice a déjà été faitauparavant. Dans cette optique, les trois derniers blocs peuvent être réduits à quelquesinstructions.

Q 6) Réduire le code autant qu'il vous est possible. Si vous n'avez pas l'habitude,commencer par la fin, c'est plus facile (pas de boucle).

Le programme réduit a peut être une structure un peu différente de la versiond'origine.

Q 7) Réactualiser l'ordinogramme ou l'algorithme.

Page 49: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 49

Introduction à la fonction retourne( )

L'étude va être un peu identique mais cette fois-ci nous allons faire faire aucompilateur l'essentiel du travail de réduction du code assembleur en utilisant despointeurs.

Q 8) Rédiger l'algorithme de la fonction retourne( ).

Etudier le module assembleur correspondant à la fonction retourne( ).

Identifier

Q 9) Associer à chaque bloc assembleur son équivalent source C ou algorithme. Enparticulier détailler le mécanisme de la boucle for (faire i fois).

Simplification par le langage C

Puisque le langage assembleur travaille plus facilement sur les adresses desdonnées que sur des tableaux indicés, nous allons étudier une autre rédaction en langageC de la même fonction.

Q 10) Etudiez le listing de la fonction retourn_()

Q 11) Associer à chaque bloc assembleur son équivalent source C ou algorithme. Enparticulier détailler le mécanisme de la boucle while (faire tant que).

Q 12) Faut-il généraliser ce type de programmation en mode "single chip"? en mode"expanded mux" ? Proposer des arguments pour et contre.

Votre code assembleur

Q 13) Rédiger votre version en assembleur du sous-programme retourne (il restequelques simplifications possibles en remplaçant les pointeurs par les registresX et Y).

Q 14) Si nécessaire réactualiser l'ordinogramme ou l'algorithme.

Page 50: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 50

Assembleur généré par le compilateur pour la fonction ascii()

;C:\C11V7\DECOBAR.C: 251: void ascii(void)global _asciisignat _ascii,24

_ascii;C:\C11V7\DECOBAR.C: 255: for(j=0;j<=i;j++)clr _jbra l85

l82ldab _jldaa #0std ctempldab _ildaa #0addd 0+ctempaddd #_table+2xgdyldx #_tableldab _jabxldab 0+0,xaddb #48stab 0+0,y

l84inc _j

l85ldab _jcmpb _ibls l82

l83;C:\C11V7\DECOBAR.C: 257: table[j+i+2]='\r';ldab _ildaa #0std ctempldab _jldaa #0addd 0+ctempaddd #_table+2xgdxldab #13stab 0+0,x

;C:\C11V7\DECOBAR.C: 258: table[j+i+3]='\n';ldab _ildaa #0std ctempldab _jldaa #0addd 0+ctempaddd #_table+3xgdxldab #10stab 0+0,x

;C:\C11V7\DECOBAR.C: 259: table[j+i+4]=0;ldab _ildaa #0std ctempldab _jldaa #0addd 0+ctempaddd #_table+4xgdxclr 0+0,x

l81rts

Page 51: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 51

Assembleur généré par le compilateur pour la fonction retourne()

;C:\C11V7\DECOBAR.C: 187: void retourne(void)global _retournesignat _retourne,24

_retourne;C:\C11V7\DECOBAR.C: 189: j=0;

clr _j;C:\C11V7\DECOBAR.C: 190: k=i;

ldab _istab _k

;C:\C11V7\DECOBAR.C: 191: while(k>j)bra l62

l63;C:\C11V7\DECOBAR.C: 192: ;C:\C11V7\DECOBAR.C: 193: c1=table[j];

ldx #_tableldab _jabxldab 0+0,xstab _c1

;C:\C11V7\DECOBAR.C: 194: table[j]=table[k];ldy #_tableldab _jabyldx #_tableldab _kabxldab 0+0,xstab 0+0,y

;C:\C11V7\DECOBAR.C: 195: table[k]=c1;ldx #_tableldab _kabxldab _c1stab 0+0,xline 196

;C:\C11V7\DECOBAR.C: 196: j++;inc _j

;C:\C11V7\DECOBAR.C: 197: k--;dec _k

;C:\C11V7\DECOBAR.C: 191: l62

ldab _kcmpb _jbhi l63rts

Page 52: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 52

source C variante : fonction retourn_()

extern unsigned char i,j,k,c1;extern unsigned char *pt1,*pt2;

/*** en DECLARATION prefixe * pour pointeur : pt1 et pt2contiendront des adresses de char (8 bits) ***/

extern unsigned char table[30];

void retourn_(void)

pt1=table; /* table ss indice : 1 iere @ de table */pt2=&table[i]; /* & en prefixe var => @ de la variable */ /* donc pt1 et pt2 initialises sur @ debut et fin de

table*/while(pt2>pt1)

c1=*pt1; /* * en prefixe pointeur => contenu */*pt1=*pt2; /* pointe par pt1 et pt2 */*pt2=c1;pt1++; /* @ suivante */pt2--;

remarque : Demander register pour l 'un des pointeurs réduit encore un peu le code

Assembleur généré par le compilateur pour la fonction retourn_()

global _retourn_signat _retourn_,24

_retourn_ldd #_tablestd _pt1

;C:\THEMES\DECOBAR\RETOURN_.C: 10: pt2=&table[i];ldab _ildaa #0addd #_tablejmp L1

l3ldx _pt1ldab 0,xstab _c1

;C:\THEMES\DECOBAR\RETOURN_.C: 15: *pt1=*pt2;ldx _pt2ldab 0,xldx _pt1stab 0,x

;C:\THEMES\DECOBAR\RETOURN_.C: 16: *pt2=c1;ldab _c1ldx _pt2stab 0,x

;C:\THEMES\DECOBAR\RETOURN_.C: 17: pt1++;ldd #1addd _pt1std _pt1

;C:\THEMES\DECOBAR\RETOURN_.C: 18: pt2--;ldd _pt2subd #1

L1std _pt2

;C:\THEMES\DECOBAR\RETOURN_.C: 12: cpd _pt1bhi l3

;C:\THEMES\DECOBAR\RETOURN_.C: 20: rts

Page 53: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 53

Christian Valade

Jean Gonzalez

Travaux dirigés N°3

Fonctions compacte( ) et format( )

Ressources : listings suivants :- le programme complet en langage C DECOBAR.C- le compte rendu de "linkage" associé P.MAP- facultatif l'assembleur généré par le compilateur correspondant à la fonction

retourne( )- la documentation du 68HC11.

Introduction à la fonction compacte

Q 1) Rédiger l'algorithme ou l'algorigramme de la fonction compacte( ).

Q 2) Dessiner ce qui se passe en mémoire (bits -> octet)

Fonction compacte( )

Q 3) Rédiger sans l'aide du compilateur votre version assembleur de la fonctioncompacte( ).

Pour respecter l'aspect structuré du module, on souligne les blocs au moyen de labelssi1, si2, si3, si1n (sinon correspondant à si1), si1f (fin des blocs correspondant à si1) ... etc,et on décale (identation) les parties correspondant aux blocs comme dans le module écriten C.

Remarque :* le passage de paramètre aux fonctions compacte et rcompacte() s'effectue par

le registre B.

Introduction à la fonction format( )

Q 4) Rédiger l'algorithme de la fonction format( ).

Rédiger en assembleur le sous-programme format( ).

Les fonctions compacte et rcompacte ne sont pas demandées ici. En TP ellespeuvent être récupérées dans le module DECOBAR.AS et intégrées à votre texte ou biencompilées à part et ensuite linkage avec votre module.

Page 54: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 54

Christian Valade

Jean Gonzalez

Travaux dirigés N°4

Conventions liées au logiciel de saisie de schéma :* Toutes les connections de même nom sont électriquement reliées.* Vcc représente l'alimentation 5V.* Pour les circuits logiques (qui ne possèdent en général qu'une seule tension

d'alim), la connexion à Vcc est implicite et non représentée.

Aspects qualitatifs

Q 1) Quel est le rôle des ULN2003. Indiquer pourquoi ce type de fonction n'est pasintégré au 68HC11.

Le portC du 68HC11 peut être connecté à une imprimante (entrée parallèle) par lebiais du connecteur J2.

Q 2) Quel protocole de communication doit-on s'attendre à trou ver au niveau duportC ?

Q 3) Quelle longueur de câble (ordre de grandeur) peut on avoir à votre avis entre lelecteur de codes barre et l'imprimante ? pourquoi ?

Le connecteur J3 est réservé à la liaison série.

Q 4) Quel est le rôle du MAX232 (U5) ?

Q 5) expliquer en quelques mots (et/ou dessin) le principe du doubleur de tension àcapacité commutée utilisée dans le MAX232

Q 6) Quels protocoles de communication sont rendus impossibles par le câblageprésent ici ?

Q 7) Quelle longueur de câble peut on piloter ici ?

Q 8) Quel est le rôle de la résistance R5 ?

Page 55: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 55

Aspects quantitatifs.

Caractéristiques électriques statiques

Pour un éclairement correct, il faut un courant de l'ordre de 10 mA dans les LEDS. Ladoc des ULN2003 est dans le polycop du décodeur.

Q 9) Qui limite le courant dans les LEDS ?

Q 10) Le circuit intégré ULN2003 ne possède pas de broche d'alimentation positive.pourquoi ?

Q 11) Vérifier la compatibilité statique entre le 68HC11 et U3. (Le 68HC11 est-il capablede fournir courant et tension suffisants à U3 ?).

Le réseau R3 C7 filtre la référence du CAN 8 bits intégré au 68HC11.

Q 12) Donner le coefficient de conversion du CAN.

Q 13) Quelle précision doit-on s'attendre à trouver sur ce type d'ADC ?

Q 14) Que pensez vous de la qualité de la référence ? Quels type de capteurs peut onutiliser avec une précision relative supérieure à celle de la référence ?

Q 15) Montrer que le calcul statique des résistances des résistances de tirages surdes entrées en l'air PA2, PA1, ou MODA conduit à des valeurs peu réalistes.

Cas particuliers.

Circuit de reset

Le LP2951 est un régulateur intégré faible consommation qui positionne sa sortieERR à l'état bas si la tension s'abaisse de plus de 5% par rapport à la valeur de consigne.Ici seule la fonction surveillance de tension du composant est utilisée : Reset est actif si latension d'alimentation du 68HC11 est inférieure à 4,75V.

Q 16) Rechercher dans la documentation les raisons de cette protection.

Q 17) On branche une alimentation 10V 10A sur VCC. La diode D8 conduit. Que sepasse-t-il ensuite? Quels conséquences pour le câblage imprimé.

Exercice logiciel

On souhaite associer un "buzzer" à l'affichage LED : 1 bip (0,5s) pour OK, 3 bips(période 0,2s) pour un défaut. Le buzzer est actif quand PA4="1". Le bit PA4 étantunidirectionnel n'a pas à être configuré.

Q 18) Ecrire le texte en syntaxe source assembleur 68HC11 des routines BIP1 et BIP3

Page 56: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 56

Christian Valade

Jean Gonzalez

Travaux Dirigés N°5

Objectif

Etre capable d'utiliser quelques-unes des fonctions liées au temps (Timer) du68HC11.

Utilisation des fonctions de chronométrage (input (time) capture)

Introduction

La routine debacq (début acquisition) correspond à la partie logicielle de la fonctionacquisition de l'image de l'étiquette. Sa fonction est de créer la table des temps (entrechaque front). On se propose d'écrire cette routine simplifiée (pas de test trop de barres) enassembleur. On peut d'inspirer de la fonction void interrupt debacq(void). l'entrée decapture utilisée est ic3. Rappel : la base de temps principale du 68HC11 est tcnt (@$100E). Dans ce TD nous appellerons date, la valeur courante du registre TCNT. Rq : iln'est pas nécessaire de fonctionner en interruption.

Description de la tache :

Attendre le front suivant

S'il ne survient pas avant 25ms (durée max permise par le lecteur optique)

abandonner

S'il survient mesurer l'écart (temps) par rapport au front précédent et stocker

dans la table

L'algorithme simplifié de ce sous programme est le suivant :tn = tic3 (date du 1° front)effacer l'indic de frontrépéter tantque (date-tn) < 25 ms (date-tn=tout)

Si front sur Pa0 (IC3)tn+1 = datetemps = tn+1-tnstocker temps dans table (attention format table 8 bits)décaler 7 foistn = tn+1 (préserve la dernière date de front)effacer l'indicateur de front

Fsi (fin de Si)Ftq (fin de tant que)

Travail demandé

Page 57: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 57

Arithmétique

Q 1) Montrer qu'une simple soustraction entre 2 valeurs successives de date donneune image du temps écoulé même s'il y a eu un (1 seul) passage de frontière.Date est limité à 2 octets, le passage de frontière survient quand date passe de$FFFF à $0000.

Programmation

Q 2) Ecrire le texte en syntaxe source assembleur 68HC11.

Fonction comparaison (d'un temps) avec (ou sans) action en sortie (output (time)compare).

rappel : La fonction est celle du réveil matin : Prévenir à l'instant où l'on atteint untemps réglé auparavant. Le réglage de l'instant de déclenchement se fait en ajoutant à ladate (tcnt) le temps à attendre jusqu'au déclenchement.

Ecrire l'algorithme correspondant

On souhaite associer un "buzzer" à l'affichage LED : 1 bip (0,5s) pour OK, 3 bips(période 0,2s) pour un défaut. Le buzzer est actif quand PA4="1". Le bit PA4 étantunidirectionnel n'a pas à être configuré. Les temporisations seront réalisées en utilisant leregistre output compare (avec action en sortie).

Q 3) Ecrire le texte du programme en source assembleur.

Elargissement du champ technologique

Réaliser une référence 1KHZ sur la broche Pa4 (OC4) en utilisant les fonctions dedéclenchement synchronisées (Output compare) du 68HC11.

Q 4) Description de la tache :

Q 5) Ecrire l'algorithme correspondant.

Q 6) Ecrire le texte du programme en source assembleur.

Page 58: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 58

11. TRAVAUX PRATIQUES

Christian Valade

Jean Gonzalez

Travaux Pratiques N°1

Le TP N°1 est la mise en oeuvre du TD N°2.

Prise de contact avec la chaîne de développement : éditeur -> assembleur / linker-émulateur

1) Ecrire le texte du module (accès éditeur dans menu utilitaires)

2) Sauvegarder avec l'extension AS (ex ASCII.AS).

3) Assembler (menu applications) en répondant oui à toutes les options si erreurs desyntaxe, consulter le fichier P.PRN (printer) et recommencer sinon

4) lancer l'application émulateur

Dans l'émulateur, on utilise les modes pas à pas(N), trace(T nbre de pas), run(G @)avec ou sans point d'arrêt(B @). On observe le programme désassemblé(U @), on observele contenu des mémoires avec affichage permanent(P) ou à la demande(D @), on peutécrire en mémoire en hexa(E @), ou en ascii (A @ puis FCC), on modifie les registres(R).

Préfixe \ pour pouvoir utiliser un symbole à la place d'une valeur hexa dans unecommande.F1 aide (liste des cdes)Alt F1 commute mode débutant (bavard) /mode expert (concis)F2 pour vérifier ou modifier le plan mémoire (il y en a un par défaut)F10 pour sortir.

5) Valider le module ascii

6) Rédiger une fiche de quelques lignes qui contient la liste des taches à effectuerpour valider le module.

7) Faire évoluer le module pour obtenir une conversion majuscules -> minuscule puisminuscules -> majuscules.

(utilisation possible d'un nombre signé)

Page 59: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 59

Christian Valade

Jean Gonzalez

Travaux Pratiques N°2

Mise en oeuvre du TD N°2 (suite) et du TD N°3

1) Validation des modules retourne et compacte.

Page 60: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 60

Christian Valade

Jean Gonzalez

Travaux Pratiques N°3

A partir de DECOBAR.C

1) rédiger l'algorithme de la fonction format( ).

8) Rédiger en assembleur le sous-programme format().

Pour respecter l'aspect structuré du module, on souligne les blocs au moyen de labelssi1, si2, si3, si1n (sinon correspondant à si1), si1f (fin des blocs correspondant à si1) ... etc,et on décale (identation) les parties correspondant aux blocs comme dans le module écriten C.

Remarques :- Le passage de paramètre aux fonctions compacte et rcompacte() s'effectue

par le registre B.- Les fonctions compacte et rcompacte ne sont pas demandées elles peuvent

être récupérées dans le module DECOBAR.AS et intégrées à votre texte oubien compilées à part et ensuite linkage avec votre module.

Si vous souhaitez avoir un aperçu du travail multi-fichiers -> linker faire ceci :* Assembler votre module format.AS avec l'option pas de linkage. Vous obtenez

un fichier format.OBJ* Compiler un module de source.C contenant uniquement les fonctions

compacte() & rcompacte() ainsi que la déclaration extern unsigned charc1,j,table[60]; On peut compiler avec les options optimiser (full), suppress localsymbols, symbolic debug info, 68HC11. Ensuite choisir COMPILE to .OBJ

* Ecrire le fichier de commandes linker.* Lancer l'application linker.

Pour vous aider, voici le programme GOTOC.AS capable d'appeler la fonctioncompacte().

Page 61: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 61

***********************

global _c1,_j,_table

psect rasvar,basepage **** PGE 0 ****

_c1 rmb 1

_j rmb 1

_table RMB 50

*****************************

psect ascode,pure **** lect seule ******

start LDS #$FF orion

boucle LDab #3

global _compacte

jsr _compacte

FINI JMP boucle

********************************

psect vectors,abs,ovrld *** section supperposee (overlay) ***

rmb $FFFE

fdb start

*********************************

END

et voici le fichier de commandes linker associé :

-Pascode=0F000H,text,rasvar=0 \

-O$.obj -Hp.sym -mP.MAP \

gotoc.OBJ c:\c11V7\compacte.obj \

Page 62: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 62

Christian Valade

Jean Gonzalez

Travaux Pratiques N°4

Mise en oeuvre du TD N°5 (modules assembleur liés au timer du 68HC11)

S'il reste du temps faire fonctionner le décodeur

S'il reste beaucoup de temps essayer de greffer le module assembleur debacq à laplace de son équivalent C dans le logiciel complet.

Page 63: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 63

Christian Valade

Jean Gonzalez

Travaux Pratiques N°5

Mise en oeuvre de la SCI DU 68HC11 (Serial Communication Interface)

Il s'agit d'une révision générale sur la programmation HC11.

Rédiger le compte rendu au fur et à mesure du TP en y ajoutant les points qui ontnécessité une aide même s'ils sont hors sujet.

Ecriture des sous programmes utilitaires élémentaires.

1) Ecrire le sous programme d'initialisation de l'interface série

Définition de INISCI- entrée : sans- sortie : sans- format des données : 8 bits, 1 stop, pas de bit de parité.- vitesse : 9600 bauds.- On suppose que l'on a un quartz 8 MHz. On met SCP1 et SCP0 sur 1(division par 13).- On met en route l'émetteur et le récepteur et on programme le BAUD register.

2) Ecrire le sous programme d'envoi d'un caractère sur la voie série

Définition de EMICAR- entrée : registre B ( caractère à envoyer)- sortie : registre A (contient SCSR)

Algorithme :Attendre que TDRE =1 (transmit data register empty)Envoyer BFin de sous programme

3) Ecrire le sous programme de réception d'un caractère sur la voie série

Définition de RECCAR- entrée : sans- sortie :

- registre B (caractère reçu)- registre A (SCSR)

Page 64: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 64

Algorithme :attendre que RDRF=1 (read register full)lire le caractère reçu dans Bfin de sous programme

4) Ecrire le sous programme de temporisation.

Définition de TEMPO- entrée : registre Y- sortie : sans

Algorithme :tant que Y est positif

décrémenter Yinstructions bidon pour mettre la boucle a 10 cycles machines

fin de tant quefin de sous programme

Emission

En manipulation avec M11 on utilisera un talker du type X (cavalier présent entre RXDet XIRQ).

Les programmes doivent être tapés sans oublier les commentaires et en particulier ladéfinition des entrées sorties.

Test élémentaire (test partie émission)

Définition de TSTSERI

Algorithme :* initialisations d'usage (on pourrait s'en passer ds un premier temps si on

travaille à la même vitesse que M11)* faire toujours

Envoi de "A" sur la voie sérietempo de 10 ms

* fin de faire* s'arrêter

5) Calculer la durée d'un bit à 1200 bauds.

6) Mettre l'oscilloscope à mémoire sur la voie série, réaliser une acquisition.

7) Identifier les bits de start et de stop, le caractère envoyé. Les données sont ellesen logique positive ?

8) A votre avis, à quoi sert la tempo ? Si vous ne voyez pas, enlevez-la, et refaites unrelevé à l'oscilloscope.

9) Quitter M11 sans arrêter le programme et utiliser le programme SERIGZ.EXE (menulecture seule -> écran)

10) Qu'observez vous ? S'il y a des surcharges permanentes, allonger la tempo entredeux caractères et recommencer.

Page 65: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 65

Remarque : on peut enlever le cavalier sur XIRQ pendant cette expérimentation pouréviter que le talker qui surveille la liaison série n'interrompe votre programme et le remettresi on veut reprendre la main avec M11.

11) Refaire la question précédente en lançant directement votre programme en $B600par un BREAK sur la liaison série sans la présence du talker de M11.

Emission d'un message avec terminateur (de message) $00

Définition du programme principalentrée : MESS (message à émettre)sortie : sansMESS est une constante définie de la manière suivante :MESS FCC "Bon courage pour le concours"FCB $00 ( valeur $00 qui n'est pas un code ASCII )

Ce programme doit permettre d'envoyer le message ci-dessus sur la SCI.

Algorithme :Initialisation de SPAppel de INISCIInitialisation du pointeur de message (par exemple X)Faire

FaireAppel de EMICARtempo 10ms environ (selon la rapidité de votre PC)pointer le car suivant

tant que ( car à envoyer différent de 0 )tempo longue 100ms environ

toujoursFin de programme

Remarque : On n'envoie pas le terminateur $00

12) Ecrire et faire fonctionner le programme. Précisez comment vous vérifier que votreprogramme fonctionne ?

13) Transformer ce programme en sous programme (nommé puts) d'émission d'uneligne (message possédant un terminateur NULL). L'entrée étant X @ du début dumessage.

Emission et réception ( communication avec un terminal )

Remarque : un terminal est une machine qui envoie sur son port série tout ce qui esttapé au clavier et affiche à l'écran ce qui est reçu sur le port série. Sauf rebouclage desbroches RD et TD, il n'y a donc pas d'action clavier -> écran.

Page 66: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 66

On déclare :entrée : MESS (message à émettre)sortie : sans

MESS est une constante définie de la manière suivante :MESS1 FCC "Appuyer sur une touche"CRLF FCB $0D

FCB $0AFCB $00 ( valeur $00 qui n'est pas un code ASCII )

MESS2 FCC "La touche est : "FCB $00 ( valeur $00 qui n'est pas un code ASCII )

Définition du programme principal ( SERIGZ.EXE fonctionne ici en mode terminal ).

Cette fois, l'algorithme n'est pas donné. Description de la tâche :

Le programme affiche sur le terminal : "Appuyer sur une touche" puis attend.

Quand le terminal envoie un octet, votre programme répond "La touche est : X" Xétant l'octet reçu qui est donc retourné en écho au terminal en plus des messages fixes.

Page 67: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 67

Page 68: Jean GONZALEZ Christian VALADE - …authier.tabanon.free.fr/archive2006/pedago/systemes_a_voir/lec_97.pdf · Le fonctionnement en interruption du micro-contrôleur 68HC11 en monochip

IUFM de TOULOUSE Département ElectroniqueDécodeur de codes à barres

Page : 68

110 Start 101 Stop2/5 5B1 2 3 4 000 Start 001 Stop1 2 3 6 1 2/5 3B 100stop

0000start 98765432