cours motorola

Upload: mahmoud-moundir

Post on 22-Jul-2015

289 views

Category:

Documents


7 download

TRANSCRIPT

1 Structure dun systme microprocesseur Logique cble : C`estunetechniquequipermetderealiserunsystemelogiqueenchoisissantles composantsappropriesetenadaptantlecblage .Larealisationd`unsystemecble oblige a trouver d`abord une solution theorique au probleme pose. DiIIerentes methodes permettent d`y parvenir : -algebre de Boole ; -tableau de Karnaugh ; -matrice des etats ; -diagramme des phases ; -reseau de Petri ; A partir de celles-ci, on elabore un schema de principe deIinissant le Ionctionnement du systeme, puis un schema de cblage. Apartird`uncertaindegredecomplexite,lesrealisationsdessystemescbles necessitent l`emploi d`un personnel qualiIie ainsi qu`un temps de realisation important. Deplus,cegenredesystemeestIigepouruneapplicationparticuliereettoute modiIication du systeme impose une modiIication du cblage., voir un changement des composants. Lessystemeselectroniquescblespresententdeuxavantages :ilssonttresrapides ; compacts et peu onereux en materiel. Logique programme :Contrairement aux systemes cbles dans lesquels le Ionctionnement est determine par le cblage,lessystemesprogrammesIonctionnentindependammentducblagequireste toujours le mme. Ils sont determines par une suite d`instructions appelee programme ; celui-ci peut tre modiIiable en Ionction de l`application. Il existe divers types de logiques programmees : -Les calculateurs industriels ; -Les microsystemes ; -Les microprocesseurs; -L`automate programmable. 2Dans ce cours, nous nous limiterons aux microprocesseurs. Architecture gnrale dun systme microprocesseur Unmicroprocesseurpresentepeud`utiliteIonctionnelleparlui-mme.EneIIet,ilne represente qu`un element du systeme a microprocesseur dont il gere le Ionctionnement. Il importe donc de savoir comment le systeme est organise et quelles sont les Ionctions speciIiques assignees a chacun des elements qui le composent. LaIiguren1nousmontrel`architecturesimpliIieed`unsystemestandardabased`un microprocesseur. Nous y distinguons le p, la ROM, la RAM et les PIO. ROMRAMPIO p Port A Port B Bus de donnes Bus dadresse Bus de contrle 3 Le microprocesseurLe p est un circuit integre avec lequel on peut realiser des operations tres complexes. Il remplit les Ionctions d`une unite centrale (CPU, Central Processing Unit) ; il comprend uneunitearithmetiqueetlogique(ALU,ArithmeticandLogicUnit),desregistres internes et une unite de commande (CU, Control Unit).

La ROM La ROM (Read Only Memory) est la memoire a lecture seule ; elle presente l`avantage d`tre permanente (son contenu ne disparat pas quand le systeme n`est plus alimente). Elle contient le programme moniteur pour permettre le Ionctionnement du systeme. La RAM La RAM (Random Access Memory) est la memoire a lecture et a ecriture du systeme ; elle est volatile (son contenu est perdu lorsque l`on coupe l`alimentation). Elle contient : -Les programmes lors de leur mise au point. -Les donnees necessaires a l`execution des programmes. Les dispositifs dentre-sortie Le systeme comporte un ou plusieurs botiers d`interIace aIin de pouvoir communiquer avec le monde exterieur. Le botier le plus utilise est l`interIace d`entree-sortie parallele. Nousyvoyonsegalementtroisbusquiassurentlescommunicationsentrelepet autres elements du systeme : -Le bus de donnees qui achemine les donnees echangees par les diIIerents elements du systeme. Le bus de donnees est un bus bidirectionnel (il peut tre utilise dans les deux sens).-Lebusd`adresseemanedumicroprocesseurettransportedesadressesverstousles dispositiIsbranchessurlebusdesdonnees.Uneadresseenvoyeeparlepserta selectionner un dispositiI ou un registre du dispositiI. - Le bus de commande transporte les signaux de synchronisation entre le p et tous les dispositiIsbranchessurlebusdedonnees.Cessignauxsontgeneralementlessignaux de lecture, d`ecriture, de remise a zero, d`interruption, . 4Microprocesseur 89 Prsentation gnrale Le6809estleplusevoluedesmicroprocesseursa8bitsdelaIamilleMotorola (6800,6802,6805).Ilestdoted`unearchitectureamelioreequidisposedeplusieurs registressupplementaires,desnouvellesinstructionsetdesmodesd`adressage supplementaires. Il est compatible avec tous les circuits peripheriques de la Iamille 6800 (PIA6821,ACIA6850,.)etilestoptimisepourl`executiondeprogrammesen langages evolues (Pascal, C, Forthran, .). Le microprocesseur 6809 est Iabrique en technologie MOS a canal N et se presente sous la Iorme d`un botier DIL 40 broches. On peut l`utiliser avec trois horloges internes :1 MHz pour le 6809 ; 1,5 MHz pour le 68A09 et 2 MHz pour le 68B09. Architecture interne du 6809 Le microprocesseur possede 3 bus independants (non multiplexes) : - Un bus de donnees bidirectionnel de 8 bits, - Un bus dadresse de 16 bits - Un bus de controle de 10 bits. LebusdedonnesacheminelesdonneesechangeesparlesdiIIerentsdispositiIsdu systemeabasedumicroprocesseur.Pourle6809,lebusdedonneesestunbus bidirectionnelde8bits(ilpeuttreutilisedanslesdeuxsens).C`estunbusa3etats (logique a trois etats), ce qui lui permet d`tre utilise pour realiser un acces DMA (voir plus loin). Lebusd`adresseemanedumicroprocesseurettransportedesadressesverstousles dispositiIsbranchessurlebusdesdonnees.C`estunbusde16bits,cequipermetau 6809 d`adresser un espace memoire de 64 K (216). Une adresse envoyee par le 6809 sert a selectionner un dispositiI ou un registre du dispositiI. 5 Lebusdecommandetransportelessignauxdesynchronisationentrele6809ettous lesdispositiIsbranchessurlebusdedonnees.Cessignauxsontgeneralementles signaux de lecture, d`ecriture, de remise a zero, d`interruption, . L`unitearithmetiqueetlogique(UAL)contienttouslescircuitselectroniquesqui realisenteIIectivementlesoperationsdesirees.Cesoperationssontprincipalementles operations arithmetiques (,-,x,.) et les operations logiques (ET, OU , XOR, .). L`unitedecommandes`occupedegererl`executiondesinstructionsd`unprogramme. Les principaux dispositiIs de l`unite de commande sont : - Le registre instruction (RI) qui reoit l`instruction qui doit tre executee. -Ledecodeurducodeoperation,quideterminequelleoperationdoittreeIIectuee, parmi toutes les operations possibles ; -Le sequenceur quigenere les signaux necessaires a l`execution de chaque instruction d`un programme. Cette unite a besoin d`une horloge pour enchaner les commandes. 6Registres internes du 6809 Lemicroprocesseur6809disposedeneuIregistresinternesaccessiblesal`utilisateur (Iigure n2).

Figure n2 Les registres sont les suivants : Accumulateurs A,B,D Le6809possededeuxaccumulateursindependantsAetBdelongueur8bitsqui peuvent tre associes pour constituer un seul accumulateur 16 bits nomme D. Le registre A constitue l`octet de poids Iort de D, le registre B celui de poids Iaible. LesaccumulateursA,B,Dsontutilisespourlescalculsarithmetiquesetles manipulations de donnees. Registres dindex X et Y Lesregistresd`indexXetYsontutilisespourlesmodesd`adressageindexelorsde rangement de donnees en memoire sous Iorme de table. Pointeur de Pile utilisateur U Accumulateur B Pointeur de Pile Systme S Compteur-Programme PC Registre dindex X Registre dindex Y Registre de page DP Registre dtat CC Accumulateur A 7 Pointeurs de pile S et U Le 6809 dispose de deux pointeurs de pile S et U sur 16 bits.Le pointeur de pile S (hardware Stack Pointer) est utilise par le processeur pour gerer lasauvegardedesesregistresinterneslorsdesappelsdessous-programmesetdes demandesd`interruptions.Ilcontientuneadressea16bitsquipointelesommetdela pile.Cettedernierepeuttreimplanteen`importeoudansl`espacememoireRAM adresse par le processeur (voir plus loin).

LepointeurdepileU(UserStackPointer)estlaisseentierementaladispositionde l`utilisateur pour transIerer ses propres arguments lors de l`appel des sous programmes.Les pointeurs de pile S et U peuvent tre utilises comme registres d`index au mme titre que X et Y. Compteur programme PC LecompteurprogrammePCestunregistrea16bitsquicontientl`adressedela prochaine instruction a executer (qu`il Iautallerchercher en memoire).Ils`incremente automatiquementachaquelectured`unoctetenmemoireamoinsqu`unbranchement ou un saut ne l`oblige a prendre une autre valeur particuliere. Registre de page DP LeregistredepageDPestunregistrea8bits.Le6809s`ensertpourlemode d`adressage direct. Aucousdel`executiond`uneinstructionenmoded`adressagedirect,leregistreDP Iournit l`octet de poids Iort de l`adresse. Celui de poids Iaible suit le code operation de l`instruction. Ainsi, le programmeur peut explorer une zone memoire de 256 octets sans changer le contenu du registreDP. Pour atteindre une autre zone, le programmeur doit redeIinir le registre DP. PourrestercompatibleaveclaIamille6800,leDPestmisa0al`initialisationdup (Reset).8 Registre dtat CCR (Condition Code Register) Leregistred`etatCCRestunregistrea8bitsquicontientles8indicateursdup.Il deIinitapreschaqueoperationarithmetiqueoulogiquel`etatdupetl`aideaprendre des decisions lors de l`executiondes instructions de branchement. Bit C (Retenue) L`indicateurderetenueCestpositionnea1chaqueIoisqu`uneretenueestgeneree. Voici des illustrations : Exemple: AdditionADDA #$20Additionavecretenueducontenudel`accumulateurAet de la valeur hexadecimale $20 On suppose que le contenu de A est : $F0 1111 0000 +0010 0000 C=11 0001 0000 Dans le cas d`une addition, l`indicateur C est la retenue de poids 28. Retenue Depassement Zero Negatif Masque dinterruption IRQ Demi-retenue Masque dinterruption FIRQ Etat de Sauvegarde CCR 9

L`indicateurCestutilisepourrealiserdesoperationsarithmetiquessurdesnombres superieurs a 8 bits. Exemple : soit a eIIectuer N1 N2, N1 et N2 etant des nombres de 16 bits.

Le p commence par additionner les deux octets de poids le plus Iaible de N1 et N2 (N1L et N2L), ce qui donne une somme SL (octet) et une retenue eventuelle C. On additionne ensuite les deux octets de poids le plus Iaible N1H et N2H en tenant compte de la retenue C. Ceci est automatiquement eIIectue par l`instruction ADC (addition avec retenue). Bit V (Overflow dbordement en complment 2) Ce bit est positionne a 1 si le resultat d`une operation arithmetique entre deux nombres representesencomplementa2deborde ;c`estadiresileresultatexcedel`intervalle-128 a 127. Les instructions de chargement, de stockage et les operations logiques positionnent V a 0. Bit Z (Zro) Ce bit est positionne a 1 quand une operation quelconque produit un resultat nul. Il est mis a 0 dans le cas contraire. Bit N (Ngative) CebitestsigniIicatiIseulementquandlepmanipuledesnombressignes.Ilrecopie l`etat du bit de signe du resultat de l`operation eIIectuee. Quand le resultat est negatiI, le bit N est positionne a 1 ; si le resultat est positiI, N est positionne a 0. N1L N2L N1H N2H 10 Bit H (Demi-retenue) Ce bit n`a de signiIication que quand le p manipule des nombres representes en DCB.Rappelonsqu`encodeDCB,onIaitcorrespondreachaquechiIIredecimalson equivalent binaire code sur4 bits.Il est possible, avec quatre bits, de representer tous les nombres allant de 0 a 15. Or dans le code DCB, il ne nous est pas permis de depasser 9. Le code DCB n`utilise donc que 10 quartets parmi 16 qui servent a coder les chiIIres decimaux allant de 0 a 9. Les quartets interdits sont : 1010,1011,1100,1101,1110,1111. Sil`undesquartetsinterditssemaniIestelorsd`uneaddition,ilIauteIIectuerune correction en y ajoutant 6(0110)2. Cette operation supplementaire s`appelle ajustement decimal.CeciestautomatiquementeIIectueparl`instructionDAAquiutilisecet indicateur pour corriger le resultat apres une addition ADDA ou ADCA. Exemples : 6 + 560110 50101 1010 Leresultatdel`addition1011estunquartetinterdit.Donc,unecorrectionest necessaire. On ajoute 6 au resultat, ce qui donnera : 1011 0110 0001 0001 11 Le resultat est bien 11. Bit I (Interrupt Mask Masque dinterruption) Cebit,lorsqu`ilesta1,masquel`interruptionmaterielleIRQ.Ontraiteraendetailles interruptions (Voir Chap. : Les interruptions). Bit F (Fast Interrupt Mask Masque dinterruption rapide) Cebit,lorsqu`ilesta1,masquel`interruptionmaterielleFIRQ.LesdeuxbitsIetF peuvent tre mis en place par le programmeur a l`aide des instructions de type ANDCC 11ouORCC(VoirChap. :LeJeud`Instructions).Ainsi,lepnetientpascomptedes demandes d`interruption provenant de la ligne correspondante (ou les deux). Bit E (sauvegarde des registres internes dans la pile) Quand une demande d`interruptionIRQ a lieu, le bit E se positionnea 1. Dans ce cas, tous les registres internes sont sauvegardes dans la pile. Quand il s`agit de la demande d`interruptionFIRQ, le bit E se positionne a 0. Dansce cas, seuls les registres PC et CCR sont sauvegardes dans la pile. Ainsi, l`indicateur E diIIerencie entre les deux mode d`interruptionet indique aup le nombrederegistresadepilerlorsquecedernieraIinid`executerleprogramme d`interruption. 12Les modes dadressage Le6809esttrescompletauniveaudesmodesd`adressage.Onappellemode d`adressagelaIaondontlesinstructionsaccedentauxoperandes(donneessitueesen memoire). La plupart des instructions du 6809 supportent plusieurs types d`adressage. 1. Adressage inhrent (ou implicite) Adressage inhrent simple Danslemoded`adressageinherentsimple,lecodeoperationcontienttoute l`inIormation necessaire a l`execution de l`instruction.Exemple : CLRA,CLRB,INCA,INCB,LSRA,LSRB Adressage inhrent paramtr L`instructioncomporteunoctetsupplementairequipreciselesregistresinternes intervenant dans l`instruction. Exemples : TFR A,DPtransIert de A dans DP PSHS A,B,Xsauvegarde dans la pile de A,B,X 2. Adressage immdiat Danscemoded`adressage,lecodeoperationestsuividirectementdel`operande.Ce typed`adressagepermetdechargerlesregistresinternesdumicroprocesseuravecla valeur de l`operande. Exemple : registre 8 bits LDA #$12charger la valeur $10 dans l`accumulateur A Le symbole #` signiIie immediat dans la syntaxe assembleur. Exemple : registre 16 bits LDX #$E000charger la valeur $E000 dans le registre d`index X 13Remarque :lechargementimmediatestvalablepourtouslesregistresinternesa l`exception du registre de page DP.Pour charger la donnee $E0, a titre d`exemple, dans DP : LDA #$E0 TFR A,DP Transfrer le contenu de A vers DP 3. Adressage direct Dans ce mode d`adressage, le code operation est suivi des 8 LSB de l`adresse dont les 8 MSBsetrouventdansleregistredepageDP.Cemoded`adressageestutilisepour adresser des pages en memoire. Le registre DP speciIie le numero de page.IlsuIIitdoncd`initialiserleregistredepageDPpourpouvoirtravaillerenadressage direct sur les 256 octets de la page choisie. A la mise sous tension, DP est mis a zero. Exemple :LDA $00;chargerl`accumulateurAaveclecontenudel`adressememoire$1000 (On suppose que le contenu de DP est $10). 4. Adressage tendu Danscemoded`adressage,lecodeoperationestsuivilesdeuxoctetsconstituant l`adresse de l`operande proprement dit. Exemple :LDA $E000charger l`accumulateur A avec le contenu de $E000 5. Adressage tendu indirect L`operandespeciIienonpasladonneemaisl`adressedecettedonnee.Onparle d`indirection.L`assembleurreconnatlapresenced`unadressageetenduindirectpar mise entre [ ] de l`adresse operande. Exemple :LDA [ $E000]charger l`accumulateur A avec le contenu dont l`adresse se trouve en $E000 et $E001 146. Adressage relatif court Ce mode d`adressage est utilise par les instructions de branchement qui requierent deux octets :lepremierestlecodeoperationetlesecondspeciIieledeplacementquipeut tre positiI ou negatiI. On pourra donc se deplacer de 128 ($80) octets en arriere et de 127($7F)enavant,parrapportalavaleurducompteurordinal(PC)alaIindu traitement de l`instruction de branchement. Exemple :Langage machineLangage assembleur AdresseContenuEtiquetteCode op.OprandeCommentaires $8000B6 E0 00LDA$E000 $800347ASRA $800424 03 BCCPAIRSi la retenue est 0, un branchement est effectu Ltiquette PAIR. On se dplace de +3. $8006B7E00ASTA$E00A $8009B7E00BPAIR :STA$E00B $800C3FSWI 7. Adressage relatif long Cemoded`adressageestreserveluiaussiauxinstructionsdebranchement.CetteIois, lesinstructionssontcodeessur4octets :Lesdeuxpremiersrepresententlecode operatoireetlesdeuxautresspeciIientledeplacementquipeuttrepositiIounegatiI. On pourra donc se deplacer de 32768 ($8000) octets en arriere et de 32767 ($7FFF) enavant,parrapportalavaleurducompteurordinal(PC)alaIindutraitementde l`instruction de branchement. Exemple :LBCCPAIR; Si le bit de retenue esta 0, un branchement relatiI long al`etiquette estalors execute. 158. Adressage index Le principe de l`adressage indexe est que l`instruction speciIie une base (index) plus un deplacement par rapport a cette base. On peut donc ecrire : Adresse effective base + dplacement La base peut tre soit : -un des deux registres d`index X ou Y; -un des deux pointeurs de pile U ou S; -le compteur programme PC (cas particulier de l`adressage relatiI). Quant au deplacement, il peut tre soit : -nul; -code sur 5 bits (-16 a 15); -code sur 8 bits (-32768 a 32767);-variable dans le cas de l`utilisation d`un accumulateur A, B ou D.

Adressage index avec dplacement nul : Ce mode est le mode indexe le plus rapide. Un registre (X,Y,U ou S) contient l`adresse eIIective de la donnee utilisee par l`instruction. Il existe deux types d`instruction : Instructions sur deux octets : le premier octet deIinit le code operatoire, le seconddesigne le post octet (1RR00100). RR Registre de base : X00 Registre de base : Y01 Registre de base : U10 Registre de base : S11 Exemple :16Langage machineLangage assembleur AdresseContenuCode op.OperandeCommentaires A684LDA,XCharger l`accumulateur A avec le contenu dont l`adressese trouve dans X Instructions sur trois octets : le code operatoire est deIini par deux octets. Le troisieme constitue le post octet Exemple :Langage machineLangage assembleur Adresse ContenuCode op.OperandeCommentaires 10AE 84 LDY,XCharger l`accumulateur Y avec le contenu dont l`adresse Se trouve dans X. Adressage index avec dplacement constant Danslemoded`adressageindexe,ledeplacement(encomplementa2)estajouteau contenuduregistredebasepourIormerl`adresseeIIectivedeladonnee.Lecontenu initial du registre de base n`est pas modiIie par l`addition. 1)Dplacement sur 5 bits Ledeplacementsur5bits(encomplementa2)estcomprisdanslepostoctet (RRnnnnn),cequiestavantageuxdepointdevueplacememoireetvitesse d`execution. Exemple : 17Langage machineLangage assembleur AdresseContenuCode op.OperandeCommentaires A6FDLDA$03,XCharger laccu. A par le contenu de ladresse .(X) 3 2) Dplacement sur 8 bits Le deplacement sur 8 bits (en complement a 2) est compris dans l`octet suivant le post octet (1RR1). Exemple : Langage machineLangage assembleur AdresseContenuCode op.OperandeCommentaires A68814LDA$20,XCharger laccu. A par le contenu de ladresse .(X) $20 3) Dplacement sur 16 bitsLedeplacementsur16bits,endeuxoctets,suitimmediatementlepostoctet (1RR11). Exemple : Langage machineLangage assembleur AdresseContenuCode op.OprandeCommentaires A891LDA$1,XChargerl'accu.Aparlecontenudel'adresse:(X)+$1AdressageindexAuto-incrmentation/dcrmentationCemodeestutilispourgrerunetablededonnes. L'auto-incrmentation/dcrmentationpermetd'accderrapidementauxdonnessuccessives.leregistredebasecontientl'adresseeffectivedeladonnedel'instruction.Danslemodeauto-incrmentation,leregistredebaseestincrmentdeun:+'oudedeux:++'aprslerecherchedel'instructionsuivante.Danslemodeauto-dcrmentation,leregistredebaseestdcrmentdeun:-'oudedeux:--'avantlerecherchedel'instructionsuivante.Exemple:18Langage machineLangage assembleur AdresseContenuCode op.OperandeCommentaires A6 80LDA,Xcharger l`accumulateur A avec le contenu dont l`adresse se trouve dans X. Incrementation par Un de X. A681LDA,Xcharger l`accumulateur A avec le contenu dont l`adresse se trouve dans X. Incrementation par deux de X. A682LDA,-Xcharger l`accumulateur A avec le contenu dont l`adresse se trouve dans X. Decrementation par Un de X. A683LDA,--Xcharger l`accumulateur A avec le contenu dont l`adresse se trouve dans X. Decrementation par deux de X. Adressage index avec Dplacement accumulateur ((A,R), (B,R), (D,R)) Cemoded`adressageestsemblableauprecedantsauIquecetteIois-ciledeplacement estcontenudansl`undesaccumulateursA,BouDdu6809.L`adresseeIIectivedela donnee est la somme du contenu du registre de base et celui de l`accumulateur speciIiee dans l`instruction. Le contenu initial du registre de base n`est pas modiIie par l`addition. lesinstructionssontcodeessur2octets :lepremierrepresentelecodeoperatoireetle second speciIie le post octet. 19Post octet Accumulateur A1RR00110 Accumulateur B1RR00101 Accumulateur D1RR01011 Exemple :Langage machineLangage assembleur AdresseContenuCode op.OperandeCommentaires A685LDAB,XCharger l`accu. A par le contenu de l`adresse :(X) (B) Adressage index avec comme registre de base : Compteur Programme (PC) Dans ce mode d`adressage, un deplacement en complement a deux de 8 ou 16 bits est ajoute au contenu du PC pour obtenir l`adresse eIIective de la donnee. Exemple : LDA$F0,PCCharger laccu. A par le contenu de ladresse : (PC) + $F020 21Jeu dinstructions du 6809 On peut classer les instructions du 60809 en six categories principales : - Instructions de transIert de donnees - Instructions de traitement de donnees- Instructions de pointeurs de donnees- Instructions de tests et branchements - Instructions d`entrees-sorties - Instructions de commandes 1. - Instructions de transfert de donnes Les instructions de transIert de donnees transmettent des donnees entre : - les registres internes du 6809; - les registres internes et la memoire; - les pointeurs. 1.1. Instructions de transfert sur les registres internes LesinstructionsEXGetTFRpermettentletransIertdedonneesentrelesregistres internes. Le transIert ne peut se Iaire que sur des registres de mme taille. EXG R1,R2Les contenus des registres R1 et R2 sont echanges. Exemple : EXG A,DP TFR R1,R2Le contenu du registre R1 est transIere dans le registre R2. Exemple : TFR D,X 1.2. Instructions de transfert sur les registres internes et la mmoire Les instructions LD (LOAD : charger) et ST (Store : stocker)permettent le transIert de donnees entre les registres internes et la memoire. 22InstructionFonction LDla donne en mmoire est charge dans le registre spcifie STLe contenu du registre interne spcifi dans linstruction est transfr dans lemplacement mmoire indiqu. Exemple : LDA $1000charger l`accumulateur A avec le contenu de l`adr. $1000 STA $2000 Stocker le contenu de l`Acc. A a l`adresse memoire $2000 1.3. Instructions de transfert sur les pointeurs LesinstructionsPUSH(empiler)etPULL(dpiler)permettentletransIertdes registres internes dans la pile en memoire. Les registres a empiler/dpiler sont indiques dansl`octet(postoctet)quisuitimmediatementlecodeoperationdel`instruction PUSH/ PULL. Chaque bit du post octet indique un registre interne b7b6b5b4b3b2b1b0 PCU ou SYXDPBACC Ordre d`empilement Ordre de depilement Quand un de ces bits vaut 1, le registre correspondant est empile/depile. Le pointeur de pile speciIie dans l`instruction ne peut tre empile/depile. Chaque Iois qu`un octetest mis dans une pile, le pointeur de pile est decremente de 1. Pourunregistrede16bits,onempiled`abordl`octetdepoidsIaibledanslapile.Le depilement est identique excepte qu`il incremente le pointeur de pile. 23InstructionFonction PSHEmpilement de(s) registre(s) dans la pile. PULDpilement de(s) registre(s) de la pile. Exemple : PSHS#$FF 24 ssss - CCC ssss - BA ssss -AB ssss - 9DP ssss - 8X-haut ssss - 7X-bas ssss - 6Y-haut ssss - 5Y-bas ssss - 4U-haut ssss - 3U-bas ssss - 2PC-haut ssss - 1PC-bas ssss 2. - Instructions de traitement de donnes Les instructions de traitement de donnees peuvent tre classees en quatre categories : 25- les instructions arithmetiques; - les instructions logiques; - les instructions de deplacements (rotation et de decalage); - Les instructions d`incrementation/decrementation, mise a zero, complementation 2.1. Instructions arithmtiques Les instructions arithmetiques sont listees dans le tableau suivant : InstructionFonction ADDAddition du contenu mmoire un accumulateur ADCAddition du contenu mmoire un accumulateur avec retenue ABXAddition de laccumulateur B X DAAAjustement dcimal de lacc. A MULMultiplication de A par B (non signe) SUBSoustraction du contenu mmoire un accumulateur SBCSoustraction du contenu mmoire un accumulateur avec retenue SEXExtension de signe de laccu. B lacc. A 2.2. Instructions logiques Les instructions logiques sont listees dans le tableau suivant : Instruction Fonction ANDET logique entre mmoire et registre interne EORXOR entre mmoire et registre interne OROU logique entre mmoire et registre interne 26L`instruction AND est utile pour mettre a 0 ou masquer un ou plusieurs bits dans un mot. L`instruction XOR est utile pour des comparaisons. On peut l`utiliser aussi pour complementer un mot (EORA #$FF). 2.3. Instructions de dplacement (rotation et dcalage) IlIauttoutd`aborddistinguerentreuneoperationdedecalageetuneoperationde rotation. Dans une operation de decalage, tous les bits sont decales d`une position vers la droite ou vers la gauche. Le bit qui sort du registre va dans le bit de retenue C ; le bit qui entre est un zero. Dans une operation de rotation, le bit entrant dans le registre est celui qui provient de la retenue C. InstructionFonction ASRDcalage arithmtique droite. Les bits sont dcals vers la droite. b0 est transfr vers C et b7 reste inchang LSL ou ASLDcalage logique ou arithmtique gauche. Les bits sont dcals vers la gauche. b7 est transfr vers C et b0 est mis 0. LSRDcalage logique droite.Les bits sont dcals vers la droite. b0 est transfr vers C et b7 est mis 0. ROLRotation gauche Les bits subissent une rotation vers la gauche. b7 est transfr vers C et la valeur dorigine de celui-ci est transfre vers b0. RORRotation droite Les bits subissent une rotation vers la droite. b0 est transfr vers C et la valeur dorigine de celui-ci est transfre vers b7. Exemple : RORA ; ROLB ; LSRA ; LSRB 2.4. Instructions d`incrmentation/dcrmentation, mise zro, complmentation 27Ces instructions sont listees dans le tableau suivant : InstructionFonction CLRRemise a 0 du contenu memoire ou de l`accumulateur DECDecrementation du contenu memoire ou de l`accumulateur INCIncrementation du contenu memoire ou de l`accumulateur COMComplement a 1 du contenu memoire ou de l`accumulateur NEGComplement a 2 du contenu memoire ou de l`accumulateur NOPPas d`operation. Incrementation du compteur programme 3. Instructions de tests et branchement Les instructions de tests et branchements peuvent tre classees en trois categories : - les instructions de tests et de comparaison;- les instructions de test et de branchement; - les instructions de test et branchement 3.1. Instructions de test et de comparaison Cesinstructionssontutiliseespourrealiserdestestsdebitsd`etatetdes comparaisonsaIindepouvoirprendredesdecisionsaucoursduderoulementd`un programmedependantdelavaleurdecesindicateurs.Seulleregistred`etatest modiIie ;nileregistrespeciIienil`operandeenmemoirenesontchanges.Aucun branchement n`est eIIectue. Ces instructions sont listees dans le tableau suivant : 28InstructionFonction BITTest de bitsBITA M , BITB M L`acc. (A ou B) spcifi et l`oprande en mmoire font l`objet d`un ET logique. CMPComparaison d`un contenu mmoire avec un accumulateurCMPA , CMPB ACCXM TSTTest du contenu mmoire ou d`un accumulateurTSTA , TSTB , TST M ACCX0 , M0 3.2. Instructions de test et branchement Ces instructions eIIectuent des tests sur 4 indicateurs du registre d`etat (C, N, Z, V) aIin de realiser des branchements au cours du deroulement d`un programme dependant de la valeur de ces indicateurs. Deux types de branchement existent : - Un branchement cours :deplacement entre 128 et 127- Un branchement long :deplacement entre 32768 et 32767. LesinstructionsutilisantunbranchementlongontunelettreL`quiprecedeleurs mnemoniques.Ces instructions sont listees dans le tableau suivant : 29InstructionFonction BCC ou BHSBranchement si pas de retenueBCCN ; LBCCNN Si C=0, alors : PC PC + N(ou)PCPC + NN BCS ou BLOBranchement si retenueBCSN ; LBCSNN BEQBranchement si gal zroBNEBranchement si diffrent de zro BGEBranchement si suprieur ou gal zro (sign) Si (N V)=0 alors : PC PC + N(ou)PCPC + NN BLTBranchement si infrieur (sign) BGTBranchement si suprieur (sign) BLEBranchement si infrieur ou gal (sign) BHIBranchement si suprieur (non sign) BLSBranchement si infrieur ou gal (non sign) BMIBranchement si ngatif BPLBranchement si positif BVCBranchement si pas de dbordement BVSBranchement si dbordement 5. Instructions de traitement des interruptions Le tableau suivant illustre ces instructions : 30InstructionFonction CWAIMise zro dindicateurs dtat et attente dinterruption CWAI #N CC = CC and N. Ceci peut mettre 0 certains bits donc dmasquer les interruptions. SYNCSynchronisation avec une ligne dinterruptionSYNC RTIRetour de sous-programme dinterruption RTI SWI/SWI2/SWI3Interruptions logiciellesLtat complet est sauvegard dans la pile systme. 31Les interruptions Quand un organe d`entree-sortie a besoin d`un service, il envoie une impulsion sur laligned`interruptiondumicroprocesseur.Cedernierterminel`instructionencours, ensuiteilsebrancheaunsous-programmed`interruption.Cecientranelasauvegarde de l`etat partiel ou total du p. PourIaciliterlacomprehensiond`uneinterruptiond`unp,imaginezatitre d`exemplequ`aucoursdutravail,voustesappeleautelephone ;vousrepondezau telephoneenconsultanteventuellementd`autresdossiers,puisvousrevenezreprendre votre tche exactement au point ou vous l`aviez laissee. Une interruption peut survenir a n`importe quel instant par rapport au deroulement du programme. On dit qu`elle asynchrone au programme. Interruptions matrielles Le6809possedetroisinterruptionsmateriellesexecutables(NMI,IRQ,FIRQ) pendantlederoulementd`unprogrammeplusuneentreed`initialisation(RESET)qui est traitee comme l`interruption la plus prioritaire du systeme. Interruption NMI (Interruption Non Masquable) L`interruptionNMInepeutpastremasqueeparleprogrammeur.Elleest employeeencasd`urgencecommeparexemple,unedeIaillanced`alimentation (sauvegarde dans une memoire CMOS alimentee par pile). Cette interruption est la plus prioritaire des interruptions materielles du 6809.Un Iront descendant surl`entreeNMI provoqueunesequenced`interruptionnonmasquable.LaIiguren1montreles diIIerentes phases de cette sequence. L`adressededepartdusous-programmedetraitementdeNMIdoittrelogeaux adresses memoires $FFFC : $FFFD (octet haut dans $FFFC, octet bas dans $FFFD) Lorsd`unereconnaissancedeNMI,l`etatcompletdupestsauvegardedanslapile systemeal`exceptiondupointeurS.L`instructionderetourd`interruption(RTI)doit treexecuteealaIindusous-programmedetraitement.Cetteinstructionextraitle registre d`etat de la pile systeme. Si le bit E est egal a 1, l`etat complet du p est alors depile; dans le cas contraire, seuls le PC et le registre d`etat sont depiles. 32

Espace Mmoire Contenu de S CC ssss - C A ssss - B B ssss -A DP ssss - 9 X-haut ssss - 8 X-bas ssss - 7 Y-haut ssss - 6 Y-bas ssss - 5 U-haut ssss - 4 U-bas ssss - 3 PC-haut ssss - 2 PC-basssss - 1 ssss 1 : Un front descendant de AMI est pris en compte la fin de l'instruction en cours. 2 : Le processeur positionne le bit E 1 pour indiquer qu'il va faire une sauvegarde totale de l'tat du 89 dans la pile systme. NMI 1 E 1 I 1 F Sauvegarde des registres dans la pile Systme Recherche du vecteur NMI contenu dans FFFD : FFFC 0BS Excution du sous-programmede NMI 0 BA 1 BS 333 : 1ous les registres du 89 sont sauvegards partir de l'adresse contenue dans S moins un (ssss - 1) dans l'ordre indiqu la figure.4 : Les interruptions matrielles sont masques. Les signaux IRQ et FIRQ n'ont plus d'influence. 5 : Le processeur indique l'environnement externe qu'il recherche un vecteur d'interruption : Le contenu des adresses FFFC et FFFD est pris en compte par le 89 7 : Le fonctionnement redevient normal. Le PC contient l'adresse du sous-programme de AMI. 8 : Le 89 excute le sous programme de AMI Interruption IRQ (Interruption normale) L`interruption IRQ est une interruption masquable. Quand une IRQ survient et que le bit I est a zero (interruption IRQ non masquee), tous les registres internes (excepte S) sont empiles dans la pile systeme.L`adresse de depart du sous-programme de traitement de IRQestchercheeauxemplacementsmemoires$FFF8 :$FFF9(octethautdans$FFF8, octet bas dans $FFF9). Le sous-programme de traitement se termine par l`instruction RTI qui depile le registre d`etatdelapilesysteme.SilebitEestegala1,l`etatcompletdupestalorsdepile; dans le cas contraire, seuls le PC et le registre d`etat sont depiles. LaIiguresuivantemontrelesequencementdesoperationsinternesdu6809lorsd`une detectiond`un niveau bas sur l`entree IRQ. 34 oui Espace MmoireContenu de S CC ssss - C A ssss - B B ssss -A DP ssss - 9 X-haut ssss - 8 X-bas ssss - 7 Y-haut ssss - 6 Y-bas ssss - 5 U-haut ssss - 4 U-bas ssss - 3 PC-haut ssss - 2 PC-basssss - 1 ssss IRQ I = 0 1 I Sauvegarde des registres dans la pile Systme 1 E Recherche du vecteur IRQ contenu dans FFF8 : FFF9 0BS Excution du sous-programmede IRQ 0 BA 1 BS Continue lexcutiondu programme en cours 35 1 . Un niveau bas sur IRQ est pris en compte a la fin de linstruction en cours. 2 . Le processeur teste le bit I du registre detat. Si I1, linterruption IRQ est masquee, le processeur continue lexecution du programme. Si I0, le programme est arrtee, le processeur traite linterruption IRQ. 3 . Le bit E a 1 pour indiquer quil va faire une sauvegarde totale de letat du 6809 dans la pile svsteme. 4 . Tous les registres du 6809 (sauf S) sont sauvegardes partir de ladresse contenue dans S. 5 . Les autresinterruptions materielles IRQ sont masquees. FIRQ est toufours valide puisque prioritaire sur IRQ. 6 . Le processeur indique a lenvironnement externe (BA0 et BS1) quil recherche un vecteur dinterruption 7 . Le contenu des adresses FFF8 et FFF9 est pris en compte par le 6809 8 . Le fonctionnement redevient normal (BS0) Le PC contient ladresse du sous-programme de IRQ. 9 . Le 6809 execute le sous programme de IRQ Interruption FIRQ (Interruption rapide) Le Ionctionnement de l`interruption FIRQ est identique a celui de IRQ sauI qu`elle plus rapide car elle ne sauvegarde que 3 octets : PC (deux octets) et CCR (1 octet) au lieu de 12.D`ouungaindetempsdeneuIcyclesd`horloge(1cycled`horlogeparcycle sauvegarde).L`interruptionFIRQestplusprioritairequeIRQ.QuanduneFIRQ survientetquelebitFestazero(interruptionFIRQnonmasquee),seulsPCetCCR sont empiles dans la pile systeme. L`adresse de depart du sous-programme de traitement deFIRQestchercheeauxemplacementsmemoires$FFF6 :$FFF7(octethautdans $FFF6, octet bas dans $FFF7). L`instruction RTI restaure le registre d`etat et le PC du programme interrompu. LaIigurenmontrelesequencementdesoperationsinternesdu6809lorsd`une detectiond`un niveau bas sur l`entree FIRQ. 36 oui Espace Mmoire Contenu de S CC ssss - 3 PC-haut ssss - 2 PC-basssss - 1 ssss 1 : Un niveau bas sur FIRQ est pris en compte la fin de l'instruction en cours. FIRQ F = 0 1 I1 F Sauvegarde des PC et CCR dans la pile Systme 0 E Recherche du vecteur FIRQ contenu dans FFF6 : FFF7 0BS Excution du sous-programmede FIRQ 0 BA 1 BS Continue lexcutiondu programme en cours 372 : Le processeur teste le bit F du registre d'tat. Si F1, l'interruption FIRQ est masque, le processeur continue l'excution du programme. Si F, le programme est arrte, le processeur traite l'interruption IRQ. 3 : Le bit E pour indiquer qu'il va faire une sauvegarde partielle de l'tat du 89 (PC,CCR) dans la pile systme. 4 : Le compteur programme PC et le registre CCR sont sauvegards partir de l'adresse contenue dans S. 5 : Les autresinterruptions matrielles sont masques. : Le processeur indique l'environnement externe (BA et BS1) qu'il recherche un vecteur d'interruption 7 : Le contenu des adresses FFF et FFF7 est pris en compte par le 89 8 : Le fonctionnement redevient normal (BS) Le PC contient l'adresse du sous-programme de FIRQ. 9 : Le 89 excute le sous programme de FIRQ Interruptions logicielles Miseapartlesinterruptionsmaterielles,le6809possededesinterruptions logiciellesquiviennentduprogrammeluimme.Cesinterruptionsserventaarrterle programme, executer le programme instruction par instruction, lecture ou ecriture sur un organe peripherique ... Le 6809 possede 3 interruptions logicielles : SWI, SWI2, SWI3 Interruption SWI (Software Interrupt) L`interruptionSWIprovoquel`arrtduel`executiond`unprogramme.LaIigure suivante montre le sequencement des operations internes du 6809 lors de l`execution de l`instruction SWI. 38

Espace Mmoire Contenu de S CC ssss - C A ssss - B B ssss -A DP ssss - 9 X-haut ssss - 8 X-bas ssss - 7 Y-haut ssss - 6 Y-bas ssss - 5 U-haut ssss - 4 U-bas ssss - 3 PC-haut ssss - 2 PC-basssss - 1 ssss 1 . SWI entraine larrt du programme en cours. 2 . Le processeur positionne le bit E a 1 pour indiquer quil va faire une sauvegarde totale de letat du 6809 dans la pile svsteme. 3 . Tous les registres du 6809 dans la pile 4 . Les interruptions materielles IRQ et FIRQ sont masquees.5 . Le processeur indique a lenvironnement externe quil recherche un vecteur dinterruption 6 . Le contenu des adresses FFFA et FFFB est pris en compte par le 6809 7 . Le fonctionnement redevient normal. Le PC contient ladresse du sous-programme de SWI 8 . Le 6809 execute le sous programme de SWI Interruption SWI2/SWI3(Software Interrupt) SWI 1 E 1 I 1 F Sauvegarde des registres internes dans la pile Systme Recherche du vecteur NMI contenu dans FFFA : FFFB 0BS Excution du sous programmede SWI 0 BA 1 BS 39LesinterruptionsSWI2/SWI3sontlesmoinsprioritaires.EllesontunIonctionnement identique a SWI. La Iigure n montre le sequencement des operations internes du 6809 lors de l`execution de l`instruction SWI. 40

Espace Mmoire Contenu de S CC ssss - C A ssss - B B ssss -A DP ssss - 9 X-haut ssss - 8 X-bas ssss - 7 Y-haut ssss - 6 Y-bas ssss - 5 U-haut ssss - 4 U-bas ssss - 3 PC-haut ssss - 2 PC-basssss - 1 ssss SWI2 1 E 1 I1 F Sauvegarde des registres internes dans la pile Systme Recherche du vecteur SWI2 contenu dans FFF5 : FFF4 0 BA 1 BS 0BS SWI3 Recherche du vecteur SWI3 contenu dans FFF3 : FFF2 Excution du sousprogrammede SWI2 Excution du sousprogrammede SWI3 41Interface d'entres-sorties parallles : PIA 821 PIAvientdePeripheral-InterfaceAdapter(Adaptateurd'Interfacedepriphrique). Le PIA 821 est un dispositif programmable qui permet de raliser la liaison parallle entre le 89 et ses priphriques. Il communique au p par l'intermdiaire du bus de donnes,dubusd'adresseetdubusdecontrle.Ilcommuniqueavecles priphriquespardeuxports8bidirectionnelsetquatrelignesdecontrlequi assurent la synchronisation des transferts (figure n1). Figure n1 Mmoire PIA 680X Port A (8 bits) Port B (8 bits) Bus de donnes Bus dadresse Bus de contrle Contrle A Contrle B Priphriques : - imprimante - CAN/CNA - Relais - Claviers - .. 42Structure interne du PIA 6821 La structure interne du PIA est donnee en Iigure n2. Le PIA est divisee en deux parties A et B independantes ayant strictement les mmes caracteristiques. Chacune des parties disposed`unport8bitsbidirectionnelsetdeuxlignesdecontrleainsiquetrois registres internes de 8 bits : Registre de sortie (ORA,ORB : Output Register) Cesregistres,accessiblesenlectureetecriture,permettentdememoriserlesdonnees destinees a la sortie.Les donnees destinees a l`entree sur les ports ont prises en compte parunelectureduregistreORAouORBmaisnesontpasmemoriseesdansces derniers. Registre de direction des donnes (DDRA,DDRB : Data Direction Register) ChaqueligneduportAouBpeuttreprogrammeeindividuellementenentreeouen sortie. Pour cela, chaque port dispose d`un registre de direction des donnees. Un 0 dans un bit du registre de direction indique une entree. Un 1 speciIie une sortie. Ainsi, apres initialisation (RESET) ou tous les registres sont mis normalement a 0, toutes les lignes d`entree-sortie du PIA sont programmees en entrees.

Registre de contrle (CRA,CRB : Control Register) Ces deux registres oIIrent un certain nombre de modes de Ionctionnement. On donnera par la suite une description complete de ces possibilites. 43 Structure externe du PIA 6821 Liaisons avec le microprocesseurBus de donnes D0-D7 : Les lignes D0-D7 sont directement liees au bus de donnees du p . Elles permettent le transIert de donnees entre le p et le PIA. Ces lignes sont dans l`etat haute impedance` si elles ne sont pas utilisees. Bus d`adresse : CS0,CS1,CS2 : ces trois entrees permettent de selectionner le botier PIA.Celui-ci est selectionne si : CS0,CS1,CS2 sont generalement des fonctions booleennes des entrees A2-A15. RS0,RS1 :cesdeuxlignesenliaisonavecunbitduregistredecontrleinterne (CRA2,CRB2) permettent de selectionner l`un des six registres internes du PIA. Generalement RS0 est liee au Iil d`adresse A0 et RS1 au Iil d`adresse A1. Port APort BCA1CA2CB2CB1 Bus de donnes Slection de registres IRQAIRQB ORA DDRA CRA ORB DDRB CRB 0 1 121 0. . . . = CS CS CS44

Signal de validation E : ce signal permet la synchronisation des echanges. Cette entree correspond a la sortie E du 6809. Lecture-Ecriture R/W : ce signal est produit par le p pour contrler le sens de transfert de donnes sur le bus de donnes. RESET (Initialisation du PIA) : un tat bas sur cette entre met tous les registres internes du PIA . IRQAetIRQB:cessorties,siellessontrelieesaIRQ,FIRQouNMIdup, permettentd`interromprel`executiond`unprogrammepourtraiterunsous-programme speciIique au peripherique ayant active IRQA ou IRQB. Liaisons avec la priphrie LePIAs`interIaceaveclescircuitsperipheriquespardeuxportsbidirectionnelsde8 bits et quatre lignes de contrle. PA0-PA7 :ceshuitbrochespermettentdetransmettreouderecevoirunedonneede8 bits. Chacune de ces lignes programmables peut tre utilisee soit comme une entree ou une sortie. Ceci est Iait par l`intermediaire du registre DDRA. PB0-PB7 : mmes possibilites de programmation PA0-PA7 selon le registre DDRB. Entres de demande d`interruption CA1-CB1 : ces entrees permettent de positionner lesindicateursd`interruptiondesregistresdecontrle(CRA7-CRB7).Ellespeuvent treactiveespardesIrontsmontantsoudescendantsselonlecontenudesregistrede contrle correspondant. CA2-CB2 : ces lignes bidirectionnelles peuvent tre programmees en entree ou en sortie dans un mode deIini par les bits 3,4 et 5 du registre de contrle correspondant. En sortie, ces lignes servent au dialogue avec laperipherie. Enentree, elles permettent de positionner les indicateurs d`interruption des registres de contrle (CRA6-CRB6). 45 CS0 CS1 /CS2 RS0 RS1 RS2 R/W E RESET IRQB D0-D7 PA0-PA7 PB0-PB7 CA1 CA2 CB1 CB2 IRQA Ampli. Bus de Donnes Registre dentre du bus Slect. de Botier Slect. De registres Registre de Contrle A (CRA) Registre de Sortie A (ORA) Registre de Sortie B (ORB) Registre de Contrle B (CRB) Contrle Dinterrup.Port A Registre de Sens de transfert (DDRA) Interface Avec la Priphrie Port A Interface Avec la Priphrie Port B Registre de Sens de transfert (DDRB) Contrle Dinterrup.Port B 46Fonctionnement du PIA Slection des registres internes LePIAoccupe4octetsenmemoirepourlesregistresinternes.LesregistresCRAet CRBsontaccessiblesdirectementparle6809,l`accesauxquatreautresregistrestient compte de l`etat du CRA2 ou CRB2. Le tableau suivant resume l`adressage des registres internes du PIA.

Bus A15 Logique ... De A2 Decodage A1 A0 D

adresse PIA CS0 CS1 CS2 RS1 RS0 CRA2 CRB2 Adresses RCRA 11001XXAdr.

471 EADDRA 110000XAdr. GORA 110001XAdr. ICRB 11011XXAdr. 3 SBDDRB 11010X0Adr. 2 T. ORB 11010X1Adr. 2 481ableau n1 : Slection des registres internes Les lignes A2-A15 sont reliees a une logique de decodage qui determine l`adresse de base du PIA (Adr.). ORA,DDRA: Adr. CRA: Adr.+1 ORB,DDRB: Adr.+2 CRB: Adr.+3 Registres de contrle CRA et CRB b7 b6 b5 b4 b3 b2 b1 b0 IRQA1 IRQA2 Contrle CA2 Accs DDRA Contrle CA1 b7 b6 b5 b4 b3 b2 b1 b0 IRQB1 IRQB2 Contrle CB2 Accs DDRB Contrle CB1 49 a)Contrle des lignes CA1 et CB1 Les bits CRA0 et CRB0 sont utilises pour valider les lignes de demande d`interruption CA1 et CB1. Les bits CRA1 et CRB1 determinent la transition active des entrees CA1 et CB1 (tableau n2). CRA1 (CRB1) CRA0 (CRB0) CA1

(CB1) Drapeau dinterruption CRA7 CRB7) Demande dinterruption IRQA (IRQB) 00 Actif Mise a 1 au de CA1 (CB1) Non validee. IRQA (IRQB) toufours a1 01 Actif Mise a 1 au de CA1 (CB1) Mise a 0 si le drapeau dinterruption CRA7(CRB7) est mis a 1 10 Actif Mise a 1 au de CA1 (CB1) Non validee. IRQA (IRQB) toufours a1 11 MiseMise a 0 si le 50 Actif a 1 au de CA1 (CB1) drapeau dinterruption CRA7(CRB7) est mis a 1

1ableau n2 : contrle des lignes CA1 et CB1 Remarques : -le drapeau d`interruptionCRA7 (CRB7) estmis a 0 au cours d`un cycle de lectureCPU du registre de sortie ORA (ORB). -SiunIrontactiIestappliqueesurCA1(CB1)alorsquelademanded`interruptionestnonvalidee (CRA00ouCRB00),laligneCPUIRQA(IRQB)seraactiveeaumomentou,parlogiciel,on mettra le bit CRA0 (CRB0) a l`etat 1. b) CRX2 Le bit CRX2 (XA ou B) est associe aux lignes d`adresse RS0 et RS1 pour acceder aux registres DDRX (CRX20) et ORX (CRX21) (voir tableau n1). c)Contrle des lignes CA2 et CB2 Le bit CRX5 (XA ou B) deIinit le sens de Ionctionnement de la ligne CX2. - CRX50mode entree (interruption) - CRX51mode sortie (contrle) c.1.) Mode entre (CRX50) CA2 et CB2 sont alors des lignes de demande d`interruption. Les bits CRA3 et CRB3 sont utilises pour valider les demandes d`interruption IRQA et IRQB. LesbitsCRA4etCRB1determinentlatransitionactivedesentreesdedemande d`interruption CA2 et CB2 (tableau n3). CRA4 (CRA3 (CA2

(Drapeau dinterruption Demande dinterruption IRQA (IRQB) 51CRB4) CRB3) CB2) CRA6 (CRB6) 00 Actif Mise a 1 au de CA2 (CB2) Non validee. IRQA (IRQB) toufours a1 01 Actif Mise a 1 au de CA2 (CB2) Mise a 0 si le drapeau dinterruption CRA6 (CRB6) est mis a 1 10 Actif Mise a 1 au de CA2 (CB2) Non validee. IRQA (IRQB) toufours a1 11 Actif Mise a 1 au de CA2 (CB2) Mise a 0 si le drapeau dinterruption CRA6 (CRB6) est mis a 1

1ableau n3 : contrle des lignes CA2 et CB2 Remarques : -le drapeau d`interruptionCRA6 (CRB6) estmis a 0 au cours d`un cycle de lectureCPU du registre de sortie ORA (ORB). 52-SiunIrontactiIestappliqueesurCA2(CB2)alorsquelademanded`interruptionestnonvalidee (CRA30ouCRB30),laligneCPUIRQA(IRQB)seraactiveeaumomentou,parlogiciel,on mettra le bit CRA3 (CRB3) a l`etat 1. c.1.) Mode sortie (CRX51) Deux sous-modes de Ionctionnement sont possibles : - CRX41mode programme - CRX40mode dialogue Mode programme (CRX41) LeslignesCA2ouCB2prennentletatdubit3duregistredecontrolecorrespondant (CRA3ouCRB3).LeslignesCX2sontdoncdessortiesdontletatestmodifiepar logiciel au mme titre que les ports A ou B programmes en sortie. Mode dialogue (CRX40) Dans ce mode, il est necessaire de programmer le port A en entree et le port B en sortie. Le port A permet d`acquerir l`inIormation Iournie par le peripherique et le port B permet au CPU de repondre. AIin de rythmer les echanges : -CA2indiqueauperipheriquequeladonneeappliqueesurleportAaetelueparle CPU. -CB2indiqueauperipheriquequeleCPUvientd`ecrireunenouvelledonneedansle registre se sortie du port B. - Le bit CRX3 deIinit le type de reponse des sorties CA2 et CB2. CRX30 CX2 reste a l`etat actiI (0) jusqu`a ce que le peripherique ait repondu en activant une entree de demande d`interruption (CA1 ou CB1). - CRX31 reponse de type impulsion. CX2 ne reste a l`etat actiI (0) que pendant une periode CPU quelque soit la reponse du peripherique. Contrle de CA2 en sortie (CRA51) en mode dialogue (CRA40) CRA5 CRA4 CRA3 CA2 Misa0 Mis a 1 53100AuIront de la1ere impulsion E qui suituncycle CPUd`ecriture dans ORA Quand le drapeau d`interruption CRA7 est mis a 1 paractionsur l`entree CA1 101AuIront de la1ere impulsion E qui suituncycle CPUd`ecriture dans ORA Aupremierde ElorsquelePIA n`estpas selectionne par le CPU Contrle de CB2 en sortie (CRB51) en mode dialogue (CRB40) CRB5 CRB4 CRB3 CB2 Misa0 Mis a 1 100AuIront de la1ere impulsion E qui suituncycle CPUd`ecriture dans ORB Quand le drapeau d`interruption CRB7 est mis a 1 paractionsur l`entree CB1 101AuIront de la1ere impulsion E qui suituncycle CPUd`ecriture dans ORB Au2eme deE lorsquelePIA n`estpas selectionne par le CPU 54Programmation d'un PIA 821 - Charger le registre de commande par la valeur approprie. Ce chargement s'effectue en principe une fois seulement au dbut du programme.

- Charger le registre de direction pour spcifier dans quelle direction on dsire utiliser les lignes d'entre-sortie.. - A ce stade, la configuration est dfinie et il est donc prt tre utilis. On teste le contenu du registre de commande pour dterminer l'tat du dispositif. - Le CPU lit les donnes en provenance du dispositif. On peut prsent rpter les phases 3 et 4 indfiniment. - 55Interface srie programmable : ACIA 85 L`ACIA est l`interIace serie asynchrone entre le 6809 et ses peripheriques (clavier serie, imprimante serie, modem, terminal de visualisation, teletype, ...). L`ACIA communique au p par l`intermediaire : - du bus de donnees (8 bits),- du bus d`adresse (4 lignes), - du bus de contrle. Les echanges avec la peripherie se Iont par : - une ligne de transmission de donnees : TxData, - une ligne de reception de donnees : RxData, - 3 lignes de contrle paripherique/modem. Figure n1 Mmoire ACIA 6850 680X Bus de donnes Bus dadresse Bus de contrle Transmission Reception Priphriques : - imprimante - Clavier - Modem - Teletvpe - .. Contrle 56 Structure interne de lACIA 6850 Lastructureinternedel`ACIAestdonneeenIiguren2.LePIAcomprend essentiellement quatre registres dont deux a ecriture seule et deux a lecture seule : Registre de contrle (CR : Controm Register) Ce registre, accessible seulement en ecriture, contient les parametres de Ionctionnement en transmission et en reception. On donnera par la suite une description complete de ces possibilites. Registre de transmission de donnes (1DR : 1ransmit Data Register) Ce registre, accessible seulement en ecriture, contient le mot a emettre.

Registre de rception de donnes (RDR : Receive Data Register) Ceregistre,accessibleseulementenlecture,reoitlemotenprovenancedela peripherie. Registre d'tat (SR : Statut Register) Ce registre, a lecture seule, contient le mot d`etat qui renseigne le p sur les operations en cours. TDR CR SR RDR Transmission Reception Controle Horloge de transmission Horloge de reception IRQ CS0 CS1 CS2 RS D0-D7 R/W E TxD RTS CTS DCD RxD 57 Structure externe du LACIA 6850 Liaisons avec le microprocesseur Bus de donnes D0-D7 Les lignes D0-D7 sont directement liees au bus de donnees du p . Elles permettent le transIertdedonneesentrelepetl`ACIA.Ceslignessontdansl`etathaute impedance` si elles ne sont pas utilisees. Slection du botier CS0,CS1,CS2 (Chip Select)CestroisentreespermettentdeselectionnerlebotierACIA.Celui-ciestselectionne si : CS0,CS1,CS2 sont generalement des fonctions booleennes des entrees A0-A15. Slection des registres RS (Register Select) Cette ligne en liaison avec le signal R/W permet de selectionner l`un des quatre registres internes de l`ACIA. Un niveau haut pour selectionner les registres de transmission ou de reception et un niveau bas pour selectionner les registres de contrle ou d`etat. Generalement RS0 est liee auIil d`adresse A0.Le signal R/W est utilise avec le signal RSpourselectionner,danschaquepaire,leregistrealectureseuleouleregistrea ecriture seule. Signal de validation E Ce signal permet la synchronisation des echanges. Cette entree correspond a la sortie E du 6809. 0 1 121 0. . . . = CS CS CS58 Lecture-Ecriture R/W Ce signal est produit par le p pour contrler le sens de transIert de donnees sur le bus de donnees. Demande d`interruption IRQ Ccettesortie,sielleestrelieeaIRQ ;FIRQouNMIdup,permetd`interrompre l`execution d`un programme pour traiter un sous-programme speciIique au peripherique ayant activeIRQ.Le bit IRQ du registre d`etat, quand il est a un, indique que la sortie IRQ est active. Liaisons avec la priphrie Lignes de transIert : -TxD(lignedetransmissiondedonnees) :cettesortieassurelatransmissiondes donnees en serie. -RxD (ligne de reception de donnees) : cette entree receptionne les donnees serie en provenance de la peripherie. Lignes de contrle d`un peripherique ou d`un modem L`ACIAcomprendplusieursIonctionsquipermettentlecontrled`unperipheriqueou d`unmodem.CesIonctionssontinhibitiondel`emission(CTS :ClearToSend), demande d`emission (RTS : Request To Send), perte de la porteuse de donnees (DCD : Data Carrier Detect). Demande d'mission R1S (Request 1o Send) Cette sortie permet au p d`interroger le Modem (ou le peripherique) pour savoir s`il est prt a recevoir les donnees transmises par l`ACIA. Le Modem repond generalement par l`activation de l`entree CTS. Inhibition de l'metteur C1S (Clear 1o Send) CetteentreepermetlecontrleautomatiquedelaIindetransmissionparunmodem. Non utilisee, elle doit tre au niveau bas. 59Perte de la porteuse de donnes DCD (Data Carrier Detect) Cette entree permet le contrle du recepteur de donnees par un modem. Elle est utilisee parleModempourindiqueraupquelesdonneesreuessontIaussesacaused`une perte de la porteuse. Non utilisee, elle doit tre au niveau bas. Lignes horloges : -Txclk (horloge de transmission) Cette entree sert pour rythmer la cadence de transmission. Les donnees sont transmises sur le Iront descendant de cette horloge. - Rxclk (horloge de reception) Cetteentreesertpourrythmerlacadencedereception.Lesdonneessontprisesen compte sur le Iront montant de l`horloge. 60 CS0 CS1 /CS2 RS0 RS1 RS2 R/W E RESET IRQB D0-D7 PA0-PA7 PB0-PB7 CA1 CA2 CB1 CB2 IRQA Ampli. Bus de Donnes Registre dentre du bus Slect. de Botier Slect. De registres Registre de Contrle A (CRA) Registre de Sortie A (ORA) Registre de Sortie B (ORB) Registre de Contrle B (CRB) Contrle Dinterrup.Port A Registre de Sens de transfert (DDRA) Interface Avec la Priphrie Port A Interface Avec la Priphrie Port B Registre de Sens de transfert (DDRB) Contrle Dinterrup.Port B 61Fonctionnement de l'ACIA Le diagramme Ionctionnel de l`ACIA (Iigure n3) nous montre le rle des diIIerents registres accessibles a l`utilisateur. a) 1ransmission La sequence de transmission commence par la lecture du registre d`etat de l`ACIA soit apres une interruption soit pendant une boucle de test. Un caractere peut tre ecrit dans leregistredetransmissionsilalectureduregistred`etatindiquequeleregistrede transmissionestvide(bitTDREa1).LecaractereesttransIeredansunregistrea decalagepuisilesttransmisenserie,parlaligneTxD,precedeparunbitSTARTet suivideunoudeuxbitsSTOP.Unbitdeparite(paireouimpaire)peuttre optionnellement ajoute au caractere et sera transmis entre le dernier bit de donnee et le premier bit STOP. Apres l`ecriture du premier caractere dans le registre de transmission, le registre d`etat peut tre lu a nouveau pour tester le bit TDRE, indiquant si le registre de transmission est vide ou non, et l`etat courant du peripherique. Si le registre est vide, unautrecaracterepeuttreecritmmesilepremiercaractereestencoursde transmission(grceaudoubleregistre).Lesecondcaractereseraautomatiquement transIeredansleregistreadecalage,pourtretransmis,quandlatransmissiondu premier caractere sera termine. b) Rception Lesdonneesdelaperipheriesontreuesenserieparl`entreereceptionde donnees (RxD). La sequence de reception commence par la lecture du registre d`etat de l`ACIApourtestersiuncaractereaetereu.Sileregistredereceptionestplein(bit RDRF a un), il peut tre lu par le p. Quand l`ACIA Ionctionne sur des mots de 8 bits comprenant un bit de parite, le bit de parite n`est pas transIere dans le p ; ainsi seule la donneeestlueparlep.CeciIacilitelaprogrammationdup.Lasequencecontinue par une nouvelle lecture du registre d`etat pour determiner quand un nouveau caractere sera disponible dans le registre de reception. Le recepteur a aussi un double registre de sortequ`uncaracterepeuttreludansleregistrededonneestandisqu`unautreest transmisdansleregistreadecalage.Cettesequencecontinuejusqu`acequetousles caracteres soient reus. 62 Slection des registres internes L`ACIAoccupe2octetsenmemoirepourlesregistresinternes.l`accesauxquatre registres tient compte de l`etat du signal R/W. Le tableau suivant resume l`adressage des registres internes de l`ACIA

Bus CPU A15 Logique ... De A1 Decodage A0 R/W ACIA CS0 CS1 CS2 RS0 R/W Adresses CR 11000Adr. RegiSR 11001Adr. 63stres TDR 11010Adr.1 RDR 11011Adr.1 1ableau n1 : Slection des registres internes Les lignes A2-A15 sont reliees a une logique de decodage qui determine l`adresse de base de l`ACIA (Adr.). CR/SR: Adr. TDR/RDR: Adr.+1 Programmation de l'ACIA LaprogrammationseIaitparl`ecritured`unmotdecommandedansleregistrede commande apres un Master Reset` prealable qui se Iait en ecrivant 03 dans le registre de commande. 64a)Master Reset LacombinaisonCR0.CR11.1etantutiliseepourl`initialisationprogrammeedu registredecontrle(MASTERRESET).L`ACIAnepossedepasunebrocheRESET permettant une initialisation hardware. LDA #$03; Master Reset STA CR b)Ecriture du mot de commande dans le registre de commande L`ACIAestutiliseenemissionet/ouenreception.Lemotdecommandepermetde deIinir le nombre de bits utiles, le nombre de bits STOP, la presence ou l`absence d`un contrledepariteouimparite,lavalidationounond`unmodeinterruptible(IRQ),la valeur du Iacteur du rythme. Le mot de commande est determine a partir du tableau de la Iigure n. Registre de contrle CR CR7 CR6 CR5 CR4 CR3 CR2 CR1 CR0

Le registre de contrle de l'ACIA est un registre de 8 bits criture seule, quiestslectionnquandRSetR/W.Ceregistrecontrlele fonctionnementdurcepteuretdutransmetteur,lesautorisations d'interruption et la sortie R1S de contrle du priphrique ou du Modem. Bits de slection du rapport de division (CR et CR1) Cesdeuxbitspermettentd`indiquerlerapportdedivision,pourl`emetteuretle recepteur, entre la Irequence d`horloge et la Irequence de transIert serie des donnees. De plus, ces deux bits peuvent tre utilises pour l`initialisation programmee de l`ACIA. Les fonctions de ces bits sont les suivantes : CR1 CR0 Controle en 65transmission et en reception 001/1 011/16 101/64 11Master Reset Bits de slection du format des mots (CR2,CR3 et CR4) Ces trois bits determinent le Iormat du mot transmis (ou reu) : longueur du mot, parite, nombre de bits STOP. Les Iormats possibles sont les suivants : CR4 CR3 CR2 Longueur du Parite Nombre de bi66mot ts stop 0007 bits Paire 2 0017 bits Impaire 2 0107 bits Paire 1 0117 bits Impaire 1 1008 bits Sans 2 1018 S 1 67 bits ans 1108 bits Paire 1 1118 bits Impaire 1 Bits de contrle du transmetteur (CR5 et CR) Cesdeuxbitspermettentlecontrledesinterruptionsentransmissionpouvanttre genereesparlaconditionregistredetransmissionvide,parlasortieRTSetparla transmission d`un BREAK (niveau bas) sur la ligne de transmission serie. Les Ionctions possibles sont les suivantes :Controle en transmissionCR6 CR5 RTS0, Interruptions du transmetteur inhibees00 RTS0, Interruptions du transmetteur validees01 RTS1, Interruptions du transmetteur inhibees10 RTS0, Interruptions du transmetteur inhibees etEmission d`un break sur la ligne (niveau bas) 11 68 L`ACIA met automatiquement CR6.CR51.0 a la mise sous tension pour eviter l`envoi d`inIormations aleatoires. Bit d'autorisation des interruptions du rcepteur (CR7)

Les interruptions generees par le recepteur sont autorisees si Cr71 et sont masquees si CR70 .Lesinterruptionsdurecepteursontgenereesparlesconditionssuivantes : registre de reception plain, une transition montante sur l`entree DCD. Controle en reception CR7 Interru0 69ptions du recepteur masquees Interruption1 70s du recepteur validees Registre detat SR Le registre d`etat (8 bits) permet de contrler en permanence le transIert des inIormations. Il indique les etats du registre de transmission, du registre de reception et des erreurs logiques, ainsi que l`etat des entrees CTS et DCD. SR0 : RDRF (Receive Data Ragister Full : Registre de Reception des donnees plein) Un test sur ce bit permet de connatre l`etat du registre de reception. Il indique (quand il est a 1) qu`une donnee reue a ete transIeree dans le registre de reception RDRF. Quand il est a 0, ce bit indique que le registre de reception ne contient pas de nouvelle donnee. La lecture du registre de reception par le p reinitialise RDRF a 0. SR1 : TDRE (Transmit Data Ragister Empty : Registre de Transmission des donnees vide) 71Ce bit indique, quand il est a 1, que le contenu du registre de transmission a ete transIere dans le registre a decalage et qu`une nouvelle donnee peut y tre ecrite. Le p doit tester l`etat de cet indicateur avant d`ecrire une nouvelle inIormation dans le registre de transmission TDR. L`ecriture dans ce dernier Iait passer le bit SR1 de 1 a 0. L`activation du bit SR1 peut entraner une demande d`interruption si CR6.CR50.1.

SR2 : DCD (Data Carrier Detect : Detection de la perte de la porteuse) Ce bit passe a un quand le signal d`entree DCD, provenant d`un Modem, passe a l`etat haut pour indiquer l`absence de la porteuse de donnees. L`activation du bit SR2 peut entraner une demande d`interruption si CR71. SR3 : CTS (Clear To Send : Inhibition de l`emetteur) Le bit CTS indique l`etat de l`entree CTS reliee a un modem. Quand il est a 0, il indique que le modem est prt a emettre. Quand il est a un, le bit TDRE est inhibe (la transmission n`est pas possible).

SR4 : FE (Framing Error : Erreur de trame) Ce bit indique une erreur de Iormat, sur le caractere reu, detectee par l`absence du premier bit d`arrt. Cette erreur correspond a une perte de synchronisation caractere, une reception deIectueuse ou un break sur la ligne. Ce drapeau reste positionne tant que le deIaut subsiste. SR5 : OVRN (Receveur Overrun : surcharge su recepteur) Ce bit positionne a 1indique que certains caracteres reus n`ont pas tre lus par le p. Ce genre d`erreur se produit si la Irequence de reception est plus elevee que la vitesse des donnees appliquees sur l`entree RxD. SR6 : PE (Parity Error : Erreur de parite) Ce bit indique que le nombre de 1` dans le caractere reu ne correspond avec la parite impaire ou paire preselectionnee. SR7 : IRQ (Interrupt Request : Demande d`interruption) Cet indicateur indique l`etat de la sortie IRQ. Tant que la sortie IRQ est a l`etat bas, le bit IRQ reste a 1` pour indiquer au la source de l`interruption. Le bit IRQ est remis a 0` par une lecture du registre de reception ou par une lecture du registre de transmission.

7273 Exercices - PIA 821 Exercice n1 : Ecrire un programme permettant d'afficher successivement $F et $ sur le port A du PIA (allumer puis teindre les quatre leds). Chaque valeur est affiche pendant environ ,5 sec. Initialiser le PIA (seul le port A est utilis, CA1, CA2 ne le sont pas). PA PA3 : sorties connectes aux 4 LEDS. Considrerledlai(,5sec)etl'initialisationduPIAcommedessousprogrammes placs en : $E1 pour l'initialisation (IAI1) $E2 pour le dlai (DELAI) Le programme principal est en $E. Adresses du PIA : DDRA/CRA: $E48 CRA: $E481 Exercice n2 : CeprogrammedoitpermettredelireunedonnesurleportA(4MSB)etdela recopier aprs un dlai de ,5 sec sur le port A (4 LSB). Il boucle sur lui-mme.- Considrer le dlai (,5 sec) et l'initialisation du PIA comme des sous programmes placs en : $E1 pour l'initialisation (IAI1) $E2 pour le dlai (DELAI) - Adresses du PIA : DDRA/CRA: $E48 CRA: $E481 - Ecrire Le programme principal est en $E2. Connecter les quatre interrupteurs PA4 - P A7, les quatre LEDS PA - P A3. Exercice n3 : 74Ceprogrammepermetd'afficherunbit1(allum)surleportAetdeledcaler droitedefaoncontinue,avecundlaid'environ,tsecentredeuxpositions successives..- Le dlai (,5 sec) et l'initialisation du PIA sont des sous programmes en : $E1 pour l'initialisation (IAI1) $E2 pour le dlai (DELAI) - Adresses du PIA : DDRA/CRA: $E48 CRA: $E481 - Ecrire Le programme principal est en $E4. Connecter les lignes du port A (sorties) l'afficheur 7 segments et une LED. Exercice n4 : Ecrireunprogrammepermettantdedcalerdroiteunbit1surleportAsile premierinterrupteur(PA7)estgal1,etdeledcalergauchesilepremier interrupteur (PA7) est gal . Il y a un dlai de ,5 sec entre 2 positions successives du bit. Les sous programmes d'initialisation et de dlai sont en : $E1 pour l'initialisation (IAI1) $E2 pour le dlai (DELAI) Le programme principal est en $E5. Adresses du PIA : DDRA/CRA: $E48 CRA: $E481PA7 connecte un interrupteur. PA - PA connectes l'afficheur 7 segments. Exercice n5 : 1)Ce programme doit permettre d'afficher un bit 1 (allum) sur le port A avec un dcalage droite avec dlai. Ce dcalage doit s'interrompre en appuyant sur le bouton poussoir connect sur CA1 (commande sur CA1 active)..- Le dlai (,5 sec) et l'initialisation du PIA sont des sous programmes en : $E1 pour l'initialisation (IAI1) $E2 pour le dlai (DELAI) - Adresses du PIA : DDRA/CRA: $E48 75CRA: $E481 - Ecrire Le programme principal est en $E. 2)CA1 active. 3)En appuvant sur le bouton poussoir connecte sur CA2 (commande sur CA2 active). 4)Commande sur CA2 active. Connecter les lignes CA aux sorties de fronts (en fonction de la question). Connecter les lignes du port A l'afficheur 7 segments et une LED. Exercice n : 1)Un bit du port A clignote, soit b soit b1. ChaquepressionsurleboutonconnectCA1faitpasserd'unbitl'autre(b,b1 alternativement)..- Le dlai (,5 sec) et l'initialisation du PIA sont des sous programmes en : $E1 pour l'initialisation (IAI1) $E2 pour le dlai (DELAI) - Adresses du PIA : DDRA/CRA: $E48 CRA: $E481 - Ecrire Le programme principal est en $E9. 2)Chaque action sur CA1 est acquitee par un front denviron 0,5 sec3)Sur la ligne CA2 en sortie (connecter CA2 sur le segment a pour visualiser). Connecter CA1 (front). Connecter PA, PA1 des afficheurs. Exercice n7 : 1)Les4ledsduportAclignotentenpermanence(utiliserPIA1commesous-programme). 2) Quand l'utilisateur appuie sur CA1 , l'tat des interrupteurs est maintenu environ 2 s sur les leds du port A (utiliser PIA 2 comme sous-programme). 3) Quand l'utilisateur appuie sur CA2 puis sur CA1 , l'tat des interrupteurs reste affich en permanence. Seul RESE1 arrtera l'affichage. 76Utiliser IAI1 et DELAI Origine : $EE PA0PA3 connectees aux LEDS PA4PA7 connectees aux interrupteurs CA1 , CA2 connectees aux generateurs de fronts. 771P1 : Programme de maintenance d'un PIA Exercice : UnedesmethodescourammentutiliseepourtesteruneinterIaceparalleleestle rebouclage, par exemple :Connecter les 8 lignes PA0PA7 aux 8 lignes PB0-PB7. 1)Envoyertouteslesvaleursde0aFpuisveriIierqu`ellessontegalesenreception une a une. s`il n`y a pas d`erreur, le programme reboucle. s`il y a erreur, le programme s`arrte. Le programme principal MPIA est en $E19. 2)Reboucler CB2 CA1 CA2 CB1 VeriIier par programme le rebouclage. Le programme principal MPIAC est en $E1C7. Le dlai (,5 sec) et l'initialisation du PIA sont des sous programmes en : $E1 pour l'initialisation (IAI1) $E2 pour le dlai (DELAI) PA0 PA1 PA2 PIA PCA1 CA2 CB1 CB2 78A7 PB0 PB1 PB2 PB7 1P2 : Jisualisation Le PIA est utilise pour eIIectuer une visualisation sur aIIicheur 7 segments. Exercice n1: Commande du PIA utilisateurcompteur hexadecimal Ce programme permet l`aIIichage sur un aIIicheur 7 segments de valeurs hexadecimales successives, de $0 a $F, et de repartir ensuite de $0. La valeur codee en 7 segments est envoyee par le port B du PIA. Tous les codes 7 segments sont places dans une table a remplir a partir de l`adresse $E2A0. Chaque valeur est aIIichee pendant 0,5 sec. - Position des segments : abcdefg - Correspondent : Les CA1 sont en entree Les CA2 sont en sortie 79gfedcba b7 B6 b5 b4 b3 b2 b1 b0 MSB LSB - Un bit a 1 allume le segment correspondant. - Sous programme d`initialisation : en $E10D (port B seulement). - Sous programme de delai : en $E200 - Adresses du PIA : DDRA/CRA: $E48 CRA: $E481 DDRB/CRB: $E482 CRB: $E483 Ecrire le programme principal en $E280. Exercice n2: Commande du PIA utilisateurtranscodeur Ce programme permet de transcoder une valeur binaire en sa valeur hexadecimale (de 0 a F) aIIichee sur 7 segments. La valeur binaire est lue sur le port A (quatre interrupteurs) (PA0-PA3). Le code 7 segments est obtenu a partir d`une table cree a partir de l`adresse $E2A0, il est aIIiche a partir du port B. - Sous programme d`initialisation : en $E100 (completer avec Init A) - Sous programme de delai : en $E200 Programme principal en $E2C0 - Position des segments : abcdefg - Correspondent : 80 gfedcba b7 B6 b5 b4 b3 b2 b1 b0 MSB LSB - Un bit a 1 allume le segment correspondant. - Adresses du PIA : DDRA/CRA: $E48 CRA: $E481 DDRB/CRB: $E482 CRB: $E483 811P3 : PIA en mode interruptif Exercice n1: PIA en mode interruptiI Ce programme permet d`utiliser le vecteur IRQ du Kit. Il est en trois parties : 1)Un programme principal : compteur hexadecimal (PIAT8) et d`attente de la demande d`interruption du PIA (utiliser CA1). Adresse de depart $E0E0 Sortie sur PB0-PB6. 2)Un programme d`interruption : lecture des interrupteurs et copie de son contenu sur les LEDS avec delai PIAT2. Interrupteurs: PA4-PA7 LEDS: PA0-PA3 3)Un sous-programme d`aIIichage et un sous-programme de delai. - Commande du PIA : pour CA1 actiI - Adresses du PIA : DDRA/CRA: $E48 CRA: $E481 DDRB/CRB: $E482 CRB: $E483 82TP4 : Transmission parallle asynchrone 83TP 5 : Gnration de tensions continues (N/A) TP 6 : Voltmtre - affichage sur LED (A/N) 841P 1 : 1ransmission de donnes 1) Introduction La transmission d`un caractere puis d`une serie de caracteres va permettre de visualiser les diIIerentes possibilites de transmission : - caracteres - parites - bit(s) d`arrt(s) Pour ceci vous ecrivez un programme qui comportera trois sous programmes : - ACIAINIT : sous programme d`initialisation d`un ACIA - DELAI : sous-programme qui permettra d`introduire un delai entre la transmission des caracteres. -OUTCH :sous-programmequipermettradetransmettreuncaracterecontenudans l`ACIA. 2) Donnes techniques Le MC09B comporte un ACIA utilisateur avec les disponibilites suivantes : - Ligne de transmission des donnes : 1x - Ligne de rception des donnes : Rx - Ligne de contrle : R1S - C1S DCD (quand les entres ne sont pas connectes, elles sont l'tat inactif). - Horloge de transmission (commune en mission et rception). Lafrquencedetransmissionpeuttrergleaveclerotacteurdubaudrate generator et les cavaliers 11. Les registres internes de l'ACIA ont les adresses suivantes : -Rception : $E71 en lecture (R/W1) -1ransmission: $E71 en lecture (R/W) -Contrle: $E7 en lecture (R/W) -Etat: $E7 en lecture (R/W1)85 3.Sous-programmes 3.1. Introduction Un sous-programme peut tre utilise plusieurs Iois dans un programme, ou tre utilise dans des programmes, ou tre utilise dans des programmes diIIerents a condition de donner les parametres suivants : - Conditions d`entre : les donnees qui doivent tre indiquees pour que le sous-programme Ionctionne avant son appel. -Rle - Conditions de sortie : les modiIications que le sous-programme a introsuites dans le processus apres le retour de sous-programme. - Emplacement en memoire. 3.2. Dlai - Conditions d`entre : charger dans le registre d`index une donnee comprise entre $0001 et $FFFF. -Rle : la duree du delai sera lineairement proportionnelle a la valeur du contenu de X. Variation de 8 us a 0,5 seconde environ pour 21 MHz. - Conditions de sortie : Le registre d`index est a zero. -Emplacement en memoire : Adresse de depart: $E203 Adresse de Iin : $E206 Dans quel rle le registre d`index sera-t-il utilise ? Ecrire et tester DELAI Remarque . Pour tester DELAI comme programme, utiliser SWI comme point darrt. 863.3. IAI1ACIA - Conditions d`entre : neant -Rle :ce sous-programme eIIectuera : - la remise a zero de l`ACIA, - l`envoi du mot de contrle -Conditions de sortie :(ACCA) mot de contrle Emplacement en memoire : Adresse de depart: $E120 Adresse de Iin : $E12A (A noter apres l`ecriture de INITACIA) Ecrire INITACIA 3.4. OU1CH -Conditions d`entre :(ACCA) donnee a transmettre -Rle :transmettre un caractere -Conditions de sortie :(ACCA) donnee transmise (ACCB) donnee detruite Adresse de depart : $E220 Ecrire OUTCH 4.Programme AIin d`avoir les meilleures conditions de synchronisation de l`oscilloscope, quel rythme en BAUD choisir ? Quelle division d`horloge ? 87 4.1. Mise au point Ecrire et tester le programme : (Rx) 01FF 7 bits parite paire 2 bits d`arrt Donnee 0101011 4.2. Changement de caractres Dessiner le caractere visualise sur l`ecran et noter D (bit de depart), A (pour le premier bit d`arrt) pour les exemples suivants (caractere ASCII).

4.3. Changement de parit Completer en dessinant les octets transmis. Mot de contrle : 00011000 et 00011000 4.4. Bit d'arrt Prendre le delai minimum Transmettre $00110011 Dessiner la visualisation de deux caracteres qui se suivent : - avec un bit d`arrt - avec 2 bits d`arrt 8889 Exercices Exercice : 1) Examinez le programme source suivant et pour chaque instruction etudiez les modiIications des registres (A, PC, CC). ORG$0100 LDA#20 ADDA #$A0 INCA STA$20 END 2) En deduire le programme objet. Exercice : 1)Etudiez les modes d`adressage utilises et donnez les contenus des registres ou de la memoire apres chaque instruction. ORG$0100 LDA#$0C STA$1000 LDA#$10 TFRA,DP LDA#$A7 STA$01 LDB128 STB[ [[ [$1000] ]] ] LDY$1000 LDA#$41 CLRB STAB,Y INCB INCA STA,Y+ END 90 2) En deduire le programme objet. Exercice : Soit une memoire de programmes. Trouver le rle de ce programme. Exercice : Addition sur 8 bits (SA+M) 1)Ecrireunprogrammesourceenlangageassembleurdu6809quisertaadditionner deuxnombresbinairesA`etM`situesrespectivementauxadressesmemoires (8040)Het(8041)H.Leresultatdel`additionS`serarangeenmemoireal`adresse (8050)H. On suppose qu`il peut y avoir une retenue Iinale C`. Dans ce cas placer la retenue a l`adresse (804F)H. a) en mode d`adressage etendub) en mode d`adressage directc) en mode d`adressage indexe (X : registre d`index) 2) Donner pour chaque mode d`adressage le code objet (listage en code machine). Le Programme residera a l`adresse $8000 en memoire. 91 $84 N $841 M $84F C

octet 1 $85 S octet 0 Exercice : transfert de donnes 92MettreaupointunprogrammesourceeIIectuantletransIertd`unetablede$E000- $E00F a $E020$E02F.a) en mode d`adressage etendub) en mode d`adressage directc) en mode d`adressage indexe (X : registre d`index) 2) Donner pour chaque mode d`adressage le code objet (listage en code machine). Le Programme residera a l`adresse $8000 en memoire. Exercice : transfert de donnes MettreaupointunprogrammesourceeIIectuantletransIertd`unetablede$E020 $E02F a $E000 - $E00F.a) en mode d`adressage etendub) en mode d`adressage directc) en mode d`adressage indexe (X : registre d`index) 2) Donner pour chaque mode d`adressage le code objet (listage en code machine). Le Programme residera a l`adresse $8000 en memoire. 93Exercice : Une table est localisee entre $E000 et $E00F. Mettre au point un programme comptant le nombre d`octets pairs de cette table (le resultat etant place en $0000) et le nombre d`octets impaires (le resultat etant place en $00001). Exercice : Ecrire un programme de multiplications par additions successives successives de 2 nombres binaires a et b. -a est a l`adresse $0000. -b est a l`adresse $0001. -a x b sera place a l`adresse$0002. Exercice : Addition sur 1 bits (SA+M) Ecrire un programme source en langage assembleur du 6809 qui sert a additionner deux nombres binaires sur 16 bits : NNHNL et MMHML situes respectivement aux adresses memoires(8030)Het(8040)H.Leresultatdel`additionserarangeenmemoirea l`adresse(8050)H.Onsupposequ`ilpeutyavoiruneretenueIinaleC`.Danscecas placer la retenue a l`adresse (804F)H. a) en mode d`adressage etendub) en mode d`adressage directc) en mode d`adressage indexe (Y : registre d`index) 2) Donner pour chaque mode d`adressage le code objet (listage en code machine). Le Programme residera a l`adresse $8000 en memoire. 94 $83 NH $831 NL $84 MH $841 ML $84F C

octet 2 $8SH 955 octet 1 $84F SL octet 0 Feuille de programmation Titre du programme : Langage machinLangage assembleur 96e Adresse Contenu Etiquette Code op. Operande Commentaires 97 98Exercices (modes d'adressage) Exercice : Mettre au point un programme qui permet d`additionner element par element, deux blocs qui debutent, respectivement, aux adresses BLK1 et BLK2 et qui ont le mme nombre d`elements (COMPT contient ce nombre). Page 218 livre Exercice : 2)Etudiez les modes d`adressage utilises et donnez les contenus des registres ou de la memoire apres chaque instruction. ORG$0100 LDA#$0C STA$1000 LDA#$10 TFRA,DP LDA#$A7 STA$01 LDB128 STB[ [[ [$1000] ]] ] LDY$1000 LDA#$41 CLRB STAB,Y INCB INCA STA,Y+ END 99 Instruction A trois octets Code opration Donne ou adresse ventuelle Donne ou adresse ventuelle Instruction A deux octets Instruction A un octet 100 PCBAYXSUDP RIDcodeurSquenceur Bus de donnes interne (8bits) CCR D Unit de commande Horloge 101Accumulateur B Pointeur de Pile Systme S Compteur-Programme PC Registre dindex X Registre dindex Y Registre de page DP Registre dtat CC Accumulateur AAccumulateur B Pointeur de PileUtilisateurU Compteur-Programme PC Registre dindex X Registre dindex Y Registre de page DP Registre dtat CC Accumulateur A 102 Tout microprocesseur opere en trois cycles : - Rechercher la prochaine instruction (Fetch) - Decoder l`instruction (Decode) - Executer l`instruction (Execute) Cycle de recherche : Le contenu du compteur de programme (PC) est depose sur le bus d`adresse et envoye vers la memoire.Lorsqu`elle reoit le signal de lecture, la memoire depose sur le bus de donnees les 8 bits correspondantau code operation de l`instruction en cours (on suppose une instruction d`un seul octet). Alors le p lit le bus de donnees et depose son contenu dans le registre interne IR qui sert a conserver le code operation de l`instruction que l`on vient de rechercher. Le cycle de recherche est maintenant termine. Cycle de decodage : Une Iois le code operation se trouve dans IR, l`unite de commande du p va la decoder et produire lasequence appropriee de signaux permettant l`executionde l`instruction speciIiee. Il y a donc un court delai de decodage suivi par une phase d`execution dont la longueur depend de la nature de l`instruction consideree. Certaines instructions s`executent a l`interieur du p. D`autres recherchent ou envoient des donnees en memoire. C`est pourquoi les diIIerentes instructions du V ont des durees d`execution diIIerentes. Cette duree est exprimee en cycles d`horloge.

Fetch Decode Execute 103ABX - additionne l'accumulateur B au registre d'index X Mnmonique . ABX Fonction . X X B Description . Afoute au registre dindex le contenu non signe de laccumulateur B. Le resultat est dans X. Registre d'tat . EFHINZJC Modes d'adressage . inherent Exemple . ABX Avant .Apres . B$10B$10 X$E000X$E010 ADC - additionne le contenu mmoire un accumulateur avec retenue Mnmonique . ADCA M , ADCB M Fonction . ACCX ACCXMC Description . Afoute le contenu de ladresse memoire ou la valeur suivant linstruction a laccumulateur choisi puis la retenue C. Le resultat est dans laccumulateur. Registre d'tat . EFHINZJC Modes d'adressage . immediat, etendu, direct, indexe Exemple . ADCA =$20 Avant .Apres . A$10A$31 C1C0 ADD - additionne le contenu mmoire un accumulateur Mnmonique . ADDA M , ADDB M , ADDD M Fonction . ACCX ACCXM Description . Afoute le contenu de ladresse memoire ou la valeur suivant linstruction a laccumulateur choisi. Le resultat est dans laccumulateur. Registre d'tat . EFHINZJC Modes d'adressage . immediat, etendu, direct, indexe 104Exemple . ADDA =$20 Avant .Apres . A$10A$30 AAD - E1 Logique entre mmoire et registre interne Mnmonique . ANDA M , ANDB M , ANDCC =N Fonction . R R . Donnee Description . Effectue un AND entre le contenu de ladresse memoire ou la valeur suivant linstruction et le registre choisi. Le resultat est dans laccumulateur. Registre d'tat .ANDA/ANDBANDCC EFHINZJCEFHINZJC 0 Modes d'adressage . immediat, etendu, direct, indexe Exemple . ANDA =$0F Avant .Apres . A$12A$02 ASL - Dcalage arithmtique vers la gauche Mnmonique . ASLA , ASLB , ASL M Fonction .Operande (A,B,M) b7 b0 C

0 Description .Decalelecontenudeladressememoireoudelaccumulateurchoisidunbitversla gauche. Le bit b7 va dans la retenue C, le b0 est mis a 0.resultat est dans laccumulateur. Registre d'tat . EFHINZJC 0 Modes d'adressage . inherent, etendu, direct, indexe Exemple . ASLA Avant .Apres . A$12A$24 C0 , N0 , Z0 , JNZ0 105 ASR - Dcalage arithmtique vers la droite Mnmonique . ASLA , ASLB , ASL M Fonction .Operande (A,B,M) b7 b0 C Description . Decale le contenu de ladresse memoire ou de laccumulateur choisi dun bit vers la droite. Le bit b0 va dans la retenue C, le b7 reste inchange (ceci permet de decaler des nombres signes). Registre d'tat . EFHINZJC Modes d'adressage . inherent, etendu, direct, indexe Exemple . ASLA Avant .Apres . A$80A$C0 C0 , N1 , Z0 BCC - Branchement si retenue (pas de retenue) Mnmonique . BCC N , LBCC NN BCC 24 LBCC 1.24 Fonction . Si C0 , alors . PC PC Nou PC PC NN

106Description .SilebitCesta0,unbranchementrelatifauPCestalorsexecute.Lebranchementcourt permetdaccederatouteinstructionsitueeentre128et127octetsparrapportaloctetquisuit linstructiondebranchement.Lebranchementlongpermetdaccederanimportequelleinstructionde lespace memoire 64 K.. Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif Exemple .A$20 CMPA =$10C0 ($20~$10) BCC ETIQ LDA =$02 ....... Etiq .ldb =$F0 BCS - Branchement si retenue 1 Mnmonique . BCS N , LBCS NN BCS 25 LBCS 1.25 Fonction . Si C1 , alors . PC PC Nou PC PC NN

Description . Si le bit C est a 1, un branchement relatif au PC est alors execute. Le deplacement est code sur 8 bits ou 16 bits en complement a 2.

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif 107Exemple .A$10 CMPA =$20C1 ($10$20) BCS ETIQ LDA =$02 ....... Etiq .ldb =$F0 BEQ - Branchement si gal Mnmonique . BEQ N , LBEQ NN BEQ 27 LBEQ 1.27 Fonction . Si Z1 , alors . PC PC Nou PC PC NN

Description .Sileresultatdeloperationprecedantlinstructiondebranchementestnul(Z1),onse branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif Exemple .A$10 CMPA =$10Z1 ($10$10) BEQ ETIQ LDA =$02 ....... Etiq .ldb =$F0 BCE - Branchement si suprieur ou gal (sign) Mnmonique . BGEN , LBGE NN 108BCE 2C LBCE 1.2C Fonction . Si (N J) 0, alors . PC PC Nou PC PC NN

Description .Sileresultatdeloperationprecedantlinstructiondebranchementdonneunresultat valide et positif ou nul, on se branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif Exemple .A$20 CMPA =$10N J0 ($20~$10) BGE ETIQ LDA =$02 ....... Etiq .ldb =$F0 BC1 - Branchement si suprieur (sign) Mnmonique . BGTN , LBGT NN BC1 2E LBC1 1.2E Fonction . Si Z(N J) 0, alors . PC PC Nou PC PC NN 109

Description .Sileresultatdeloperationprecedantlinstructiondebranchementdonneunresultat valide et strictement positif, on se branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif Exemple .A$20 CMPA =$10Z(N J)0 ($20~$10) BGE ETIQ LDA =$02 ....... Etiq .ldb =$F0 BHI - Branchement si suprieur (non sign) Mnmonique . BHIN , LBHI NN BHI 22 LBHI 1.22 Fonction . Si ZC 0, alors . PC PC Nou PC PC NN

Description . Si le resultat de loperation precedant nentraine ni retenue ni resultat nul, on se branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif 110 BHS - Branchement si suprieur ou gal (non sign) Mnmonique . BHSN , LBHS NN BHI 24 LBHI 1.24 Fonction . Si C 0, alors . PC PC Nou PC PC NN

Description . identique a BCC

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif BI1 - 1est de bits Mnmonique . BITAM , BITB M Immediat Direct Etendu Indexe BIT85 95 B5 A5 111A BITB C5 D5 F5 E5 Fonction . ACCX.M

Description .LaccumulateurspecifieetloperandeenmemoirefontlobfetdunANDetleresultatest mis de cote. Seul le registre CCR est modifie, aucun des operandes ne lest.

Registre d'tat . EFHINZJC 0 Modes d'adressage . immediat, etendu, direct, indexe Exemple . linstruction BIT precede generalement les branchements conditionnels. A$C5BITA =$91A$C5 N1, Z0 BLE - Branchement si infrieur ou gal (sign) Mnmonique . BLEN , LBLE NN BLE 2F LBLE 1.2F Fonction . Si Z(N J) 1, alors . PC PC Nou PC PC NN

Description .Sileresultatdeloperationprecedantlinstructiondebranchementdonneunresultat valide et negatif ou nul, on se branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

112Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif Exemple .A$10 CMPA =$20Z(N J)1 ($10$20) BLE ETIQ LDA =$02 ....... Etiq .ldb =$F0 BLO - Branchement si infrieur (non sign) Mnmonique . BHIN , LBHI NN BLO 25 LBLO 1.25 Fonction . Si Z 1, alors . PC PC Nou PC PC NN

Description . identique a BCS

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif 113BLS - Branchement si infrieur ou gal (non sign) Mnmonique . BLSN , LBLS NN BLS 23 LBLS 1.23 Fonction . Si CZ 1, alors . PC PC Nou PC PC NN

Description .Sileresultatdeloperationprecedantentraineuneretenueouunresultatnul,onse branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif BL1 - Branchement si infrieur (sign) Mnmonique . BLTN , LBLT NN BL1 2D LBL1 1.2D Fonction . Si N J 1, alors . PC PC Nou PC PC NN

Description .Sileresultatdeloperationprecedantestvalideetnegatif,onsebranchealadresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

114Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif BMI - Branchement si ngatif Mnmonique . BMIN , LBMI NN BMI 2B LBMI 1.2B Fonction . Si N 1, alors . PC PC Nou PC PC NN

Description . Si le resultat de loperation precedant est negatif, on se branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif BAE - Branchement si diffrent Mnmonique . BNE N , LBNE NN BAE 2 LBAE 1.2 115 Fonction . Si Z0 , alors . PC PC Nou PC PC NN

Description .Sileresultatdeloperationprecedantlinstructiondebranchementestdifferentde0 (Z0), on se branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif Exemple .A$10 CMPA =$20Z0 ($10 $20) BNE ETIQ LDA =$02 ....... Etiq .ldb =$F0 BPL - Branchement si positif Mnmonique . BPLN , LBPLNN BPL 2A LBPL 1.2A Fonction . Si N 0, alors . PC PC Nou PC PC NN

Description . Si leresultat de loperation precedant est positif, on se branche a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchange116EFHINZJC Modes d'adressage . relatif BRA - Branchement inconditionnel Mnmonique . BRAN , LBRA NN BRA 2 LBRA 1.2 Fonction . PC PC Nou PC PC NN

Description .unbranchementinconditionnelaladressecouranteledeplacement(codesur8bitsou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif BRA - AOA BranchementMnmonique . BRNN , LBRN NN BRA 21 LBRA 1.21171 Fonction . Non operation

Description . Aucun branchement nest execute Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif BSR - Branchement un sous-programme Mnmonique . BSRN , LBSR NN BSR 8D LBSR 17 Fonction . PCLS-1 PCHS-2 PC PC Nou PC PC NN

Description .lecompteurdeprogrammeestmisdanslapilesvstemeetunbranchementrelatifest execute a ladresse courante le deplacement (code sur 8 bits ou 16 bits en complement a 2).

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif BJC - Branchement si pas de dbordement Mnmonique . BJCN , LBJC NN BJ28 118C LBJC 1.28 Fonction . Si J0 , alorsPC PC Nou PC PC NN

Description . effectue un branchement si loperation precedante en complement a deux etait valide.

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif BJC - Branchement si dbordement Mnmonique . BJCN , LBJC NN BJS 29 LBJS 1.29 Fonction . Si J1 , alorsPC PC Nou PC PC NN

Description . effectue un branchement si loperation precedante en complement a deux netait pas valide.

Registre d'tat . inchangeEFHINZJC Modes d'adressage . relatif 119CLR - Mise zro Mnmonique . CLRA , CLRB , CLRM Inherent Direct Etendu Indexe CLR M 0F 7F 6F CLRA 4F CLRB 5F Fonction . ACCX0 (ou) M0

Description . Laccumulateur specifie ou loperande en memoire est mis a .

Registre d'tat . EFHINZJC 0100 Modes d'adressage . inherent, etendu, direct, indexe CMP - Comparaison du contenu mmoire avec un accumulateur 120Mnmonique . CMPAM , CMPBM , CMPDMM , CMPXMM , CMPYMM , CMPUMM, , CMPSM Immediat Direct Etendu Indexe CMPA 81 91 B1 A1 CMPB C1 D1 F1 E1 CMPD 10.83 10.93 10.B3 10.A3 CMPS 11.8C 10.9C 11.BC 11.AC CMPU 11.83 11.