Vous êtes sur la page 1sur 33

DEUXIEME PARTIE:

ETUDE FONCTIONNELLE DE LA CARTE A P 6809


Plan de ltude:

A -Schma fonctionnel de la carte P 6809 B- Schma lectrique de la carte P 6809 C- Description de la fonction: Gestion gnrale de la carte et des dispositifs extrieurs D- Description de la fonction: Sauvegarde des donnes relatives la gestion de la carte et des dispositifs extrieurs E- Description de la fonction: Programme de gestion de la carte et des dispositifs extrieurs F- Description de la fonction: Gestion des liaisons avec les dispositifs extrieurs G- Description de la fonction: Slection et synchronisation de la transmission des donnes H- Descrition de la fonction: Production du signal de squencement I- Description de la fonction: Production du signal de rinitialisation J- Description de la fonction: Alimentation gnrale et dcouplage en frquence K- Plan dimplantation de la carte P L- Typon ct composants de la carte P M- Typon ct cuivre de la carte P N- Plan de la carte support O- Typon de la carte support

page 3 page 4

page 5

page 6

page 6

page 7

page 8

page 9

page 9

page 9 page 10 page 11 page 12 page 13 page 14

-2-

- cf RIVALIN Georges 2005-2006-

A- Schma fonctionnel de la carte P 6809:

-3-

- cf RIVALIN Georges 2005-2006-

B- Schma lectrique de la carte P 6809:

-4-

- cf RIVALIN Georges 2005-2006-

C- Description de la fonction Gestion gnrale de la carte et des dispositifs extrieurs: 1- Variables dentre, variables de sortie, et variables dentre-sortie utilises par la suite:
=> D[7..0]: Bus de donnes comportant lensemble des bornes D7 D0: Ce bus de donnes est bi-directionnel: - lorsque le microprocesseur reoit un mot de donnes, les bornes D7 D0 sont des bornes dentres, - lorsque le microprocesseur transmet un mot de donnes, les bornes D7 D0 sont des bornes de sortie. => A[15..0]: Bus dadresses comportant lensemble des bornes A15 A0: Ce bus dadresses est un bus de sortie. => RESET: Entre de rinitialisation des composants internes au microprocesseur (registres), active ltat bas: Cet tat bas est obtenu: - la mise sous tension de la carte, - ou par action sur le bouton-poussoir BP1. => E: Sortie de synchronisation gnrale de la transmission des donnes. Le signal au point E est rectangulaire, de frquence 1 MHz et de rapport cyclique 0,5. => R/W: Sortie fixant les modes lecture ou criture de donnes:

Cette sortie prsente ltat logique: - 0 lorsque le microprocesseur souhaite crire un mot de donnes, - 1 lorsque le microprocesseur souhaire lire un mot de donnes.

2- Rle de la fonction Gestion de lensemble de la carte et des dispositifs extrieurs:


=> Recevoir des donnes issues: - de la fonction Programme de gestion de la carte et des dispositifs extrieurs, - de la fonction Sauvegarde des donnes relatives la gestion de la carte et des dispositifs extrieurs, - de la fonction Gestion des liaisons avec les dispositifs extrieurs; => Traiter ces donnes; => Transmettre les donnes traites: - la fonction Gestion des liaisons avec les dispositifs extrieurs, - la fonction Sauvegarde des donnes relatives la gestion de la carte et des dispositifs extrieurs, => Commander les modes de fonctionnement lecture ou criture des composants externes.

3- Ralisation de cette fonction:


Cette fonction est ralise laide du composant dnomm MICROPROCESSEUR. -5- cf RIVALIN Georges 2005-2006-

D- Description de la fonction Sauvegarde des donnes relatives la gestion de la carte et des dispositifs extrieurs: 1- Variables dentre, variables de sortie, et variables dentre-sortie utilises par la suite:
=> D[7..0]: Bus de donnes comportant lensemble des bornes D7 D0: Ce bus de donnes est bi-directionnel: - lorsque la mmoire reoit un mot de donnes, les bornes D7 D0 sont des bornes dentres, - lorsque la mmoire transmet un mot de donnes, les bornes D7 D0 sont des bornes de sortie. => A[10..0]: Bus dadresses comportant lensemble des bornes A10 A0: Ce bus dadresses est un bus dentre. => Y0: => R/W: Entre permettant de slectionner une communication entre le P et la mmoire RAM. Entre fixant les modes lecture ou criture de donnes:

Cette entre prsente ltat logique: - 0 lorsque la mmoire doit sauvegarder un mot de donnes, - 1 lorsque la mmoire doit transmettre un mot de donnes sauvegard.

2- Rle de la fonction Sauvegarde des donnes relatives la gestion de la carte et des dispositifs extrieurs:
=> Sauvegarder des donnes issues de la fonction Gestion de lensemble de la carte et des dispositifs extrieurs, sa demande; => Transmettre les donnes la fonction Gestion de lensemble de la carte et des dispositifs extrieurs, sa demande.

3- Ralisation de cette fonction:


Cette fonction est ralise laide du composant dnomm MEMOIRE RAM.

E: Description de la fonction Programme de gestion de la carte et des dispositifs extrieurs: 1- Variables dentre, variables de sortie, et variables dentre-sortie utilises par la suite:
=> D[7..0]: Bus de donnes comportant lensemble des bornes D7 D0: Ce bus de donnes est unidirectionnel: la mmoire ne peut que transmettre un mot de donnes, les bornes D7 D0 sont des bornes de sortie.

-6-

- cf RIVALIN Georges 2005-2006-

=> A[13..0]:

Bus dadresses comportant lensemble des bornes A13 A0:

Ce bus dadresses est un bus dentre. => Y6: Entre permettant de slectionner une communication entre le P et la mmoire EPROM.

2- Rle de la fonction Programme de gestion de la carte et des dispositifsextrieurs:


=> Sauvegarder le programme de gestion de lensemble de la carte et des dispositifs extrieurs,

3- Ralisation de cette fonction:


Cette fonction est ralise laide du composant dnomm MEMOIRE EPROM.

F- Description de la fonction Gestion des liaisons avec les dispositifs extrieurs: 1- Variables dentre, variables de sortie, et variables dentre-sortie utilises par la suite:
=> D[7..0]: Bus de donnes comportant lensemble des bornes D7 D0: Ce bus de donnes est bi-directionnel: - lorsque le PIA reoit un mot de donnes, les bornes D7 D0 sont des bornes dentres, - lorsque le PIA transmet un mot de donnes, les bornes D7 D0 sont des bornes de sortie. => A2, A1, A0: => Y4: Entres permettant de slectionner une communication entre le P et le PIA, ou lun de ses composants internes.

Entre permettant de slectionner une communication entre le P et le gestionnaire de priphrique (PIA).

=> RESET: Entre de rinitialisation des composants internes au PIA (registres), active ltat bas. => E: Entre de synchronisation gnrale de la transmission des donnes.

=> R/W:

Entre fixant les modes lecture ou criture de donnes:

Cette entre prsente ltat logique: - 0 lorsque le PIA doit sauvegarder un mot de donnes, - 1 lorsque le PIA doit transmettre un mot de donnes sauvegard. => PA[7..0] et PB[7..0]: Bus de donnes comportant lensemble des bornes PA7 PA0 dune part, les bornes PB7 PB0 dautre part: -7- cf RIVALIN Georges 2005-2006-

Ces bus de donnes sont bi-directionnels: - lorsque le PIA reoit un mot de donnes, les bornes PX7 PX0 sont des bornes dentres, - lorsque le PIA transmet un mot de donnes, les bornes PX7 PX0 sont des bornes de sortie.

selon le sens de circulation des donnes pralablement fix. 2- Rle de la fonction Gestion des liaisons avec les dispositifs extrieurs:
=> Sauvegarder des donnes issues de la fonction Gestion de lensemble de la carte et des dispositifs extrieurs, et les communiquer lextrieur de la carte; => Transmettre les donnes venant de lextrieur de la carte la fonction Gestion de lensemble de la carte et des dispositifs extrieurs; => Grer le sens de transmission des donnes son niveau.

3- Ralisation de cette fonction:


Cette fonction est ralise laide du composant dnomm PIA.

G- Description de la fonction Slection et synchronisation de la transmission des donnes: 1- Variables dentre et variables de sortie:
=> A15 et A14: => Y6: => Y4: => Y0: => E: Entres permettant de choisir le composant avec lequel le P tablira une communication.

Sortie permettant de slectionner une communication entre le P et le PIA. Sortie permettant de slectionner une communication entre le P et la mmoire EPROM. Sortie permettant de slectionner une communication entre le P et la mmoire RAM. Entre de synchronisation gnrale de la transmission des donnes.

2- Rle de la fonction Slection et synchronisation de la transmission des donnes:


=> Slectionner le composant avec lequel le P tablira une communication, et grer dans le temps cette communication.

3- Ralisation de cette fonction:


Cette fonction est ralise laide du composant dnomm dcodeur/dmultiplexeur.

-8-

- cf RIVALIN Georges 2005-2006-

H- Description de la fonction Production du signal de squencement: 1- Variable dentre et variable de sortie:


=> X: => Ex: Entre prsentant un signal pseudo-rectangulaire de frquence 4 MHz. Sortie prsentant un signal pseudo-rectangulaire de frquence 4 MHz.

2- Rle de la fonction Production du signal de squencement:


=> Fournir une rfrence temporelle pour la transmission et le traitement des donnes.

3- Ralisation de cette fonction:


Cette fonction est ralise autour dun QUARTZ.

I- Description de la fonction Production du signal de rinitialisation: 1- Variable de sortie:


=> RESET: Sortie permettant de rinitialisation des composants internes au microprocesseur et au PIA (registres), active ltat bas: Cet tat bas est obtenu: - la mise sous tension de la carte, - ou par action sur le bouton-poussoir BP1.

2- Rle de la fonction Production du signal de rinitialisation:


=> Fournir un signal permettant la rinitialisation des composants internes au microprocesseur et au PIA.

3- Ralisation de cette fonction:


Cette fonction est ralise laide dun bouton-poussoir, et dun circuit RC.

J- Description de la fonction Alimentation gnrale et dcouplage en frquence: 1- Signaux dentre et de sortie:


=> +5,6V: => +5V: Tension continue de 5,6V. Tension continue de 5V.

2- Rle de la fonction Alimentation gnrale et dcouplage en frquence:


=> Assurer lalimentation de la carte P sous une tension continue de 5V. -9- cf RIVALIN Georges 2005-2006-

K- Plan dimplantation de la carte P:

- 10 -

- cf RIVALIN Georges 2005-2006-

L- Typon ct composants de la carte P:

- 11 -

- cf RIVALIN Georges 2005-2006-

M- Typon ct cuivre de la carte P:

- 12 -

- cf RIVALIN Georges 2005-2006-

N- Plan dimplantation de la carte support:

Pour les travaux devant tre ralise ensuite, lentre CA1 doit tre place ltat 1, et lentre CB1 ltat 0.

- 13 -

- cf RIVALIN Georges 2005-2006-

O- Typon de la carte support:

- 14 -

- cf RIVALIN Georges 2005-2006-

TROISIEME PARTIE:

ETUDE STRUCTURELLE DE LA CARTE A P 6809


Plan de ltude:

A -Le microprocesseur 6809

page 16

B- La mmoire vive ou mmoire RAM

page 17

C- La mmoire morte ou mmoire EPROM

page 19

D- Le gestionnaire de priphriques ou PIA

page 21

E- Synchronisation gnrale partir du dcodeur/dmultiplexeur

page 24

F- Les registres internes au microprocesseur

page 24

- 15 -

- cf RIVALIN Georges 2005-2006-

A- Le P, le bus dadressage et le bus de donnes:

1- La base de temps:

Oscillateur quartz

4 Mhz

Diviseur de frquence par 4

1 Mhz

Cest un multivibrateur astable constitu autour du quartz Q et des condensateurs C5 et C6. Il dlivre un signal rectangulaire de 4 MHz non accessible, mais un diviseur de frquence par 4 permet dobtenir un signal de frquence 1MHz accessible sur la borne E du microprocesseur.

2- Le compteur binaire et le bus dadressage:


A0 A15

Oscillateur quartz

4 Mhz

Diviseur de frquence par 4

1 Mhz

Compteur binaire 16 tages

La base de temps incrmente un compteur binaire 16 tages. Lensemble des seize variables dadressage ainsi obtenu est appel bus dadresses ou bus dadressage, unidirectionnel sortant. Le compteur binaire, plus tard appel COMPTEUR PROGRAMME, est prpositionnable tout moment et toute valeur par les instructions de sauts ou branchements.

3- La rinitialisation du compteur-programme la mise sous tension, ou vecteur RESET:

Lentre RESET peut tre maintenue ltat bas pendant le temps ncessaire la rinitialisation du P: - soit manuellement laide du bouton-poussoir BP1, - soit chaque mise sous tension de la carte, via le circuit R1C4. La rinitialisation du P consiste en la remise zro des contenus de tous ses registres internes, lexception du compteur-programme. Le bus dadresses est positionn pendant cette rinitialisation la valeur: %1111111111111110 soit $FFFE. On appelle les deux premires adresses accessibles ($FFFE-$FFFF) vecteur RESET du P. De fait, il doit correspondre aux adresses de la premire instruction du programme contenu dans lEPROM.
- 16 - cf RIVALIN Georges 2005-2006-

4- Valeurs extrmes des adresses: Notation binaire: (de A15 A0) Notation hexadcimale: => => => => % 0000000000000000 % 1111111111111111 $ 0000 $ FFFF

5- Le bus de donnes: Lensemble des 8 variables de donnes (de D7 D0) est appel bus bidirectionnel de donnes, et peut tre reprsent comme tel pour simplifier les schmas. Les donnes de mme dnomination de chaque boitier sont relies entre elles.

6- La variable de synchronisation:

Le signal prsent sur la borne E est de frquence 1MHz, avec un rapport cyclique de 0,5. A ltat haut il permettra la slection par le microprocesseur dune autre fonction. A ltat bas, tout accs une fonction sera invalid, vitant ainsi tout risque de court-circuit sur le bus de donnes.

B- La mmoire vive, ou mmoire RAM:

1- Capacit totale de la mmoire: Nombre dadresses: de A10 A0 => 11 variables dadressage => 211 adresses = 2048 = 2k Nombre de donnes: de D7 D0 => 1 mot de 8 bits Soit 2048 mots de 8 bits ou 2 koctets.

2- Les conditions de fonctionnement de cette mmoire: Validation de la fonction: Validation des sorties: Mode criture: Mode lecture: CE doit tre ltat 0. OE doit tre ltat 0. WE doit tre ltat 0. WE doit tre ltat 1.

Remarque: dans le cadre de cette carte, la slection criture lecture est faite directement par le P (sortie R/W), selon le instructions excutes.
- 17 - cf RIVALIN Georges 2005-2006-

3- Conditions daccs cette mmoire: Les variables dadressage de la mmoire RAM sont relies au bus dadresses du P. Les variables CE et OE sont relies la sortie Y0 de CI5, active elle-mme ltat bas. De sorte que CE et OE soient actives, il faut que les entres C et B de CI5 soient ltat bas. Ces deux variables correspondent respectivement aux adresses A15 et A14 du P. Les variables inutilises sont considres ltat bas (voir en italique).
A0 A0 0 1

Ainsi les adresses de la RAM, vues du P sont comprises entre: => %0000000000000000 => %0000011111111111 soit $0000 soit $07FF.

A1

A1

et
A2 A2 0 0 0 0 0 0 0 0 0 0 0 de CI5 0 0 0 Adresse la plus basse: C et B Bus dadreeses de la RAM: 1 Adresse le plus haute: 0 0 0 0 0 1 1 1 1 1 1 1 1

A3 A4 A5 A6 A7 A8 A9 A10 Bus dadresses du P: A15 A14 A13 A12 A11

A10

A9

A8

A7

A6

A5

A4

A3

- 18 -

- cf RIVALIN Georges 2005-2006-

C- La mmoire morte, ou mmoire EPROM:

1- Capacit totale de la mmoire: Nombre dadresses: de A13 A0 => 14 variables dadressage => 214 adresses = 16384 = 16k Nombre de donnes: de D7 D0 => 1 mot de 8 bits Soit 16384 mots de 8 bits ou 16 koctets.

2- Les conditions de fonctionnement de cette mmoire:

Validation de la fonction: Validation des sorties: Mode lecture:

CE doit tre ltat 0. OE doit tre ltat 0. PGM doit tre ltat 1, et la borne Vpp doit tre fixe au potentiel 5V.

Remarque: Cette mmoire positionne sur la carte minimale est automatiquement cable en lecture seulement. En effet, la tension applique sur la borne Vpp (+5V) est trs loigne de celle ncessaire pour sa programmation (de 12.5V 21V). Il ny a ainsi aucun risque lorsque cette mmoire est la carte minimale, quil y ait destruction de son contenu par tentative de reprogrammation.

3- Conditions daccs cette mmoire:

Les variables dadressage de la mmoire EPROM sont relies au bus dadresses du P. La variable CE est relie en permanence la masse. La variable OE est relie la sortie Y6 de CI5, active elle-mme ltat bas. De sorte que OE soit active, il faut que les entres C et B de CI5 soient ltat haut. Ces deux variables correspondent respectivement aux adresses A15 et A14 du P. Ainsi les adresses de lEPROM, vues du P sont comprises entre:

et

=> %1100000000000000 => %1111111111111111

soit $C000 soit $FFFF.


- 19 - cf RIVALIN Georges 2005-2006-

A0

A0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 Adresse la plus basse:

A1

A1

A2

A2

A3

A3

A4

A4

A5

A5

A6

A6

A7

A7

A8

A8

A9

A9

A10

A10

A11

A11

A12

A12

A13

A13

A14

C et B de CI5 1 1 Bus dadreeses de la RAM:

A15

Bus dadresses du P:

Remarque: les adresses de la mmoire EPROM, pour elles-mmes, sont dfinies en fonction des variables dadressages de A13 A0. Ainsi nous obtenons des adresses comprises entre: => % 00000000000000 => % 11111111111111 soit $0000 soit $3FFF.

Le vecteur RESET du P correspond donc aux deux adresses hautes de lEPROM.


- 20 - cf RIVALIN Georges 2005-2006-

Adresse le plus haute:

et

D- Le gestionnaire de priphrique PIA 6821:

1- Constitution interne:

Le PIA est constitu de six registres essentiellement: - deux registres de donnes ou sorties: - deux registres de direction: - deux registres de contrle: ORA et ORB DDRA et DDRB CRA et CRB

Le suffixe A est attribu aux registres du port A, et le suffixe B ceux du port B. Les registres de donnes (ou sorties) sont des mmoires 8 bits contenant les donnes prsentes sur les ports. Les registres de direction sont des mmoires 8 bits permettant de fixer le sens de transition des donnes sur chacun des ports (soit en entres, soit en sorties, bit par bit). Les registres de contrle sont des mmoires 8 bits permettent entre-autres, par positionnement du bit n 2, dadresser soit le registre de direction, soit le registre de donnes du port contrl.

2- Conditions de slection du PIA:

Trois variables de slection permettent au P de commander le PIA: CS2, CS1 et CS0. Deux variables de slection supplmentaires permettent dadresser les registres internes: RS1 et RS0. Ces variables de slection sont relies au bus dadresses du P ou la sortie du dcodeurdmultiplexeur de la faon suivante: CS2 du PIA => (actif niveau bas) CS1 du PIA => (actif niveau haut) RS1 du PIA RS0 du PIA=> => Y4 de CI5 (actif niveau bas) A2 = 1 A0 du P => => C=1 A15 = 1 et et B=0 A14 = 0

A1 du P

Compte-tenu des tableaux de fonctionnement indiqus sur le document-constructeur, les adresses des diffrents registres du PIA, vues du P, sont dfinies par le tableau suivant:
- 21 - cf RIVALIN Georges 2005-2006-

Bus dadresses du P: Broches du PIA

A15

A14

A13

A12

A11

A10

A9

A8

A7

A6

A5

A4

A3

A2 CS1

A1 RS0 0 0 1 0 0 1

A0 RS1 0 0 0 1 1 1

Adresse de ORA Adresse de DDRA Adresse de CRA Adresse de ORB Adresse de DDRB Adresse de CRB

C et B de CI5 1 0 1 1 1 1 1 0 0 0 0 0

Les adresses des diffrents registres du PIA sont, en hexadcimal les suivantes:

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

1 1 1 1 1 1

- CRA: $ 8006
- 22 -

- DDRA: $ 8004 - DDRB: $ 8005

- ORA: $ 8004

- CRB: $ 8007
- cf RIVALIN Georges 2005-2006-

- ORB: $ 8005

3- Programmation du registre de contrle:

Le bit n2 de CRx doit tre programm de sorte que ladresse pointe par le P soit prise comme celle de ORx ou celle de DDRx, de la faon suivante: CRx2 = 1 CRx2 = 0 => => accs ORx accs DDRx

4- Contenu du registre de direction fixant le sens de transition des donnes:

Lorsquun bit du registre de direction est ltat 0, le bit correspondant du registre de donnes est positionn en entre.

Lorsquun bit du registre de direction est ltat 1, le bit correspondant du registre de donnes est positionn en sortie.

5- Mthode de programmation du PIA, port A en entre, port B en sortie:

Registre CRA

Adresse $ 8006

Contenu $ 00 CRA2 = 0 $ 00

Effet Ouverture accs DDRA

DDRA

$ 8004

Port A en entre

CRA

$ 8006

$ 04 CRA2 = 1 $ 00 CRB2 = 0 $ FF

Fermeture accs DDRA Ouverture accs ORA Ouverture accs DDRB

CRB

$ 8007

DDRB

$ 8005

Port B en sortie

CRB

$ 8007

$ 04 CRB2 = 1

Fermeture accs DDRB Ouverture accs ORB

- 23 -

- cf RIVALIN Georges 2005-2006-

6- Autres broches caractristiques du fonctionnement du PIA: a- Lentre de rinitialisation: RST

Elle est relie lentre RESET du P; ainsi la mise sous tension ou par action manuelle sur le bouton-poussoir BP1, les registres internes du PIA sont rinitialiss. b- Lentre de synchronisation: E

Elle est relie la borne E du P; ainsi le fonctionnement interne du PIA est synchronis sur celui du P.

c- Lentre de slection criture/lecture: R/W Elle est relie la borne R/W du P qui, selon les instructions excuter, commandera criture ou lecture dans les registres PIA.

E- Synchronisation gnrale partir du dcodeur/dmultiplexeur: Lentre E3 de CI5 est relie la borne E du P. Quand la borne E3 est active (tat haut) lune des sorties du dcodeur est active (tat bas). Par contre, quand lentre E3 est ltat bas, aucune sortie nest active (toutes ltat haut), et aucun boitier ne peut donc tre accessible au P. Ceci se produit pendant 0,5s toutes les 1s.

F- Les registres internes au microproceseur:

1- Lunit logique et arithmtique (ALU): Elle contient toutes les oprations logiques et arithmtiques excutables par le P, et correspondant une instruction. Le premier octet dune instruction est le code opratoire (code permettant laccs cette instruction). 2- Les accumulateurs A et B: Les accumulateurs A et B sont deux mmoires ou registres 8 bits sur lesquels peuvent tre excutes les fonctions de lALU: on les dit registres de calcul. Par concatnation (enchainement), ces deux registres permettent de ralis un accumulateur 16 bits appel D.
- 24 - cf RIVALIN Georges 2005-2006-

3- Les registres dindex X et Y: Les registres dindex X et Y sont deux mmoires ou registres 16 bits qui permettent donc de stocker la valeur dune adresse. Ils sont disponibles sans limitation pour lutilisateur. 4- Les registres ou pointeurs de piles U et S: Ce sont des registres 16 bits qui contiendront une adresse partir de laquelle une pile (un empilement) de donnes sauvegardes doivent tre rcupres. La pile systme (S) utilise 12 adresses pour sauvegarder les donnes lors dun accs un sous-programme: on utilisera les adresses $07FF $07F4 (haut de la RAM) cet effet. 5- Le Compteur-Programme: PC Cest un registre 16 bits qui contient la valeur du bus dadresses. 6- Le registre de page: DP Il comporte les 8 bits de poids les plus forts du bus dadresses. 7- Le registre CCR: Cest une mmoire 8bits qui contient, bit par bit, des rsultats doprations diverses.

- 25 -

- cf RIVALIN Georges 2005-2006-

QUATRIEME PARTIE:

ETUDE LOGICIELLE AVEC LA CARTE A P 6809

Plan de ltude:

A -Premier exemple de programme

page 26

B- Programme avec sous-programme de temporisation

page 31

A- Premier exemple de programme:

1- Enonc du problme: Le programme doit permettre dobtenir le mme fonctionnement que la carte Bruiteur oubliclairage, soit rpondre lquation logique: Bz = A . B . ( C + D + E ) A cet effet, le port A est utilis comme port dentre, et le port B comme port de sortie d e la faon suivante: PA7: PA6: PA5: PA4: masse masse masse borne A PA3: PA2: PA1: PA0: borne B borne C borne D borne E PB7: Non connect PB6: Non connect PB5: Non connect PB4: Non connect
- 26 -

PB3: Non connect PB2: Non connect PB1: Non connect PB0: Bz
- cf RIVALIN Georges 2005-2006-

2- Directives et instructions: Dans le programme on distingue: - les instructions qui aboutissent la mmorisation dans une adresse de lEPROM de codes opratoires et doprandes, - les directives dassemblage ncessaires au logiciel dassemblage pour transformer les mnmoniques dinstruction en codes hexadcimaux (voir en italique). 3- Algorigramme de fonctionnement et programme:

- 27 -

- cf RIVALIN Georges 2005-2006-

Adresses P: EPROM:

Donnes:

Directives et instructions

Signification:

cpu hof

6809.tbl mot8

Central Process Unit: le logiciel dassemblage utilise la table de conversion du P 6809. Hexadecimal Output Format: les donnes sont au format hexadcimal Motorola 8 bits.

cra: equ crb: equ ora: equ


- 28 - cf RIVALIN Georges 2005-2006-

$8006 $8007 $8004 $8004 $8005 $8005

EQUate: ltiquette du registre CRA correspond ladresse $8006. EQUate: ltiquette du registre CRB correspond ladresse $8007. EQUate: ltiquette du registre ORA correspond ladresse $8004. EQUate: ltiquette du registre DDRA correspond ladresse $8004. EQUate: ltiquette du registre ORB correspond ladresse $8005. EQUate: ltiquette du registre DDRB correspond ladresse $8005.

ddra: equ orb: equ ddrb: equ

org FFFE 3FFE 2080 bra

$3ffe $3f80

ORiGine: le programme dbute ladresse EPROM $3FFE, soit ladresse P $FFFE. BRanch Always: branchement inconditionnel ladresse EPROM $3F80 (P: $FF80) Mode relatif: loprande $80 est obtenu par la diffrence entre ladresse pointe et ladresse qui devrait suivre: $FF80 - $0000 = $FF80 ; seul loctet le plus faible est pris en compte.

FF80

3F80

7EC000

org jmp

$3f80 $c000

La suite du programme dbute ladresse EPROM $3F80 (P: $FF80) JuMP: saut ladresse P $C000 (EPROM: $0000). Mode tendu: loprande est une adresse, ici $C000, et occupe donc donc 2 octets. Nouvelle origine ladresse EPROM $0000, adresse P $C000. Charger laccu. A avec la valeur $80 (mode immdiat: loprande est la valeur charger) Transfrer le contenu de laccu. A dans le registre de page (adresses hautes du registre PC, cest dire du bus dadresses). Charger laccu. D avec la valeur $0000 (mode immdiat): laccu. A contient loctet suprieur, soit $00, et laccu. B loctet infrieur, soir $00. Stocker le contenu de laccu. D ladresse basse $06 (adressage direct), soit ladresse PC = DP + $06 = $8006, adresse de CRA; ainsi le 1er octet de D ($00) est stock ladresse $8006 (CRA) et le 2nd ($00) ladresse suivante $8007 (CRB); les accs aux registres DDRA et DDRB sont ouverts. Ajouter au contenu de D la valeur $ff; le nouveau contenu de D est $00FF. Stocker le contenu de laccu. D ladresse basse $04 (adressage direct), soit ladresse PC = DP + $04 = $8004, adresse de DDRA; ainsi le 1er octet de D ($00) est stock ladresse $8004 (DDRA) et le 2nd ($FF) ladresse suivante $8005 (DDRB); le port A est configur en entre, le port B est configur en sortie. Ajouter au contenu de D la valeur $0305; le nouveau contenu de D est $0404. Stocker le contenu de laccu. D ladresse basse $06 (adressage direct), soit ladresse PC = DP + $06 = $8006, adresse de CRA; ainsi le 1er octet de D ($04) est stock ladresse $8006 (CRA) et le 2nd ($04) ladresse suivante $8007 (CRB); les accs aux registres DDRA et DDRB sont ferms, les accs aux registres ORA et ORB sont ouverts. Remise zro de ORB, soit PB0=0; Vibreur inactiv.

C000 C002 C004 C007

0000 0002 0004 0007

8680 1F8B CC0000 DD06

org lda tfr ldd std

$0000 #$80 a,dp #$0000 $06

- 29 - cf RIVALIN Georges 2005-2006-

C009 0009 C00C 000C

C300FF DD04

addd std

#$ff $04

C00E C011

000E 0011

C30305 DD06

addd std

#$0305 $06

C013

0013

7F8005 bcl1:

clr

orb

C0016 0016 C019 0019 C01B 001B C01D 001D C01F C022 C024 C026
- 30 - cf RIVALIN Georges 2005-2006-

B68004 bcl2: lda 8410 anda 8110 27F4 B68004 8408 8108 27EB B68004 8407 8101 25E2 cmpa beq lda anda cmpa beq lda anda cmpa blo

ora #$10 #$10 bcl1 ora #$08 #$08 bcl1 ora #$07 #$01 bcl1

Charger le contenu du port dentre dans laccu. A. Accu. A = 000ABCDE. ET logique entre le contenu de laccu. A et la valeur %00010000. le nouveau contenu de laccu. A est: $000A0000. Comparer le contenu de laccu. A avec la valeur $00010000; la variable A est-elle 1 ? Branchement si gal 1, ltiquette BCL1, cest dire si lentre A nest pas ltat 0. Charger le contenu du port dentre dans laccu. A. Accu. A = 000ABCDE. ET logique entre le contenu de laccu. A et la valeur %00001000. le nouveau contenu de laccu. A est: $0000B000. Comparer le contenu de laccu. A avec la valeur $00001000; la variable B est-elle 1 ? Branchement si gal 1, ltiquette BCL1, cest dire si lentre B nest pas ltat 0. Charger le contenu du port dentre dans laccu. A. Accu. A = 000ABCDE. ET logique entre le contenu de laccu. A et la valeur %00000111. le nouveau contenu de laccu. A est: $00000CDE. Comparer le contenu de laccu. A avec la valeur $00000001; lune des variable C, D ou E est-elle 1 ? Branchement si infrieur 1, ltiquette BCL1, cest dire si aucune des entres C, D ou E nest ltat 1. Charger laccu. A avec la valeur $01, soit %00000001. Stocker le contenu de laccu. A dans le registre ORB; mise ltat 1 de PB0, cest dire de la variable de sortie Bz. Branchement inconditionnel ltiquette BCL2 Fin du programme.

001F 0022 0024 0026

C028 0028 C02B 002B C02D 002D C02F 002F

C031 C033

0031 0033

8601 B78005 20DE

lda sta bra end

#$01 orb bcl2

C0036 0036

B- Programme avec sous-programme de temporisation: 1- Enonc du problme: Le programme doit permettre dobtenir le mme fonctionnement que le Retardateur de dclenchement de lave-glaces, soit satisfaire lalgorigramme suivant. A cet effet, le port A est utilis comme port dentre, et le port B comme port de sortie de la faon suivante: PA7: masse PA3: masse PB7: Non connect PB3: Non connect PA6: masse PA2: masse PB6: Non connect PB2: Non connect PA5: masse PA1: masse PB5: Non connect PB1: Non connect PA4: masse PA0: ENTREE PB4: Non connect PB0: SORTIE 2- Algorigramme de fonctionnement et programme:

- 31 -

- cf RIVALIN Georges 2005-2006-

Adresses P: EPROM:

Donnes

Directives et instructions CPU HOF CRA: CRB: DDRA: ORA: DDRB: ORB: RAM0: RAM1: 6809.TBL MOT8 EQU EQU EQU EQU EQU EQU EQU EQU $8006 $8007 $8004 $8004 $8005 $8005 $0000 $0001

Ltiquette RAM0 correspond la 1re adresse de la mmoire RAM. Ltiquette RAM1 correspond la 2me adresse de la mmoire RAM.

FFFE FF80 C000 C001 C004 C007 C00A C00B C00E C010 C013 C016

3FFE 3F80 0000 0001 0004 0007 000A 000B 000E 0010 0013 0016

2080 7EC000 4F B78006 B78004 B78007 4A B78005 8B05 B78006 B78007

ORG $3FFE BRA $3F80 ORG $3F80 JMP $C000 ORG $0000 CLRA STA CRA STA DDRA STA CRB DECA STA DDRB ADDA #$05 STA CRA STA CRB #$07FF

- 32 - cf RIVALIN Georges 2005-2006-

A[$ 00] CRA[$ 00] DDRA[$ 00] CRB[$ 00] [A] = $FF DDRB[$ FF] [A] = $04 CRA[$ 04] CRB[$ 04] S[$ 07FF]

=> ouverture accs DDRA. => Port A en entre. => ouverture accs DDRB. => Port B en sortie. => ouverture accs ORA. => ouverture accs ORB. => le pointeur de pile vise ladresse $07FF, adresse o seront sauvegards les contenus des diffrents registres lors de lappel dun sous-programme (adresse haute de la RAM).

10CE07FF LDS

C01A C01D C020 C022 C024 C026 C029 C02B C02D C02F C032

001A 7F8005 001D B68004 0020 8101 0022 26F6 0024 8D0E

BCL1: CLR ORB LDA ORA CMPA #$01 BNE BCL1 BSR TEMPO ORA #$01 BCL1 #$01 ORB BCL2

ORB[$ 00] => SORTIE = 0. A[ORA] => lecture tat de lentre. [A]=[$ 01] ? => lentre est-elle ltat 1. si non retour BCL1, si oui on continue. Branchement au sous-programme temporisation. A[ORA] => lecture tat de lentre. [A]=[$ 01] ? => lentre est-elle ltat 1. si non retour BCL1, si oui on continue. B[$01] ORB[$01] => mise ltat 1 de la sortie. retour ltiquette BCL2.

0026 B68004 BCL2: LDA 0029 8101 CMPA 002B 26ED BNE 002D C601 LDB 002F F78005 STB 0032 20F2 BRA

- 33 - cf RIVALIN Georges 2005-2006-

C034 C036

0034 86FF TEMPO: LDA 0036 9700 STA LDA STA DEC BNE DEC BNE RTS

#$FF RAM0 #$C2 RAM1 RAM1 BCL3 RAM0 BCL4

A[$FF] RAM0[$FF] A[$C2] RAM1[$C2] RAM1=[RAM1] 1 si [RAM1] 0 retour BCL3 RAM0=[RAM0] 1 si [RAM0] 0 retour BCL4 3s retour au programme principal. 5s

2s 4s 2s 4s 6s 3s 6s 1761s x 255 =449055s

C038 0038 86C2 BCL4: C03A 003A 9701 C03C 003C 0A01 BCL3: C03E 003E 26FC C040 C042 C044 0040 0A00 0042 26F4 0044 39

9s x 194 = 1746s

END

soit au total 449066s.