Citation for published version (APA):
van Tintelen, T. B. W. (1981). Monoselector t.b.v. gehandicapten op basis van een single-chip microcomputer met infrarood afstandsbediening. Technische Hogeschool Eindhoven.
Document status and date: Gepubliceerd: 01/01/1981 Document Version:
Uitgevers PDF, ook bekend als Version of Record Please check the document version of this publication:
• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website.
• The final author version and the galley proof are versions of the publication after peer review.
• The final published version features the final layout of the paper including the volume, issue and page numbers.
Link to publication
General rights
Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain
• You may freely distribute the URL identifying the publication in the public portal.
If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:
www.tue.nl/taverne Take down policy
If you believe that this document breaches copyright please contact us at: openaccess@tue.nl
providing details and we will investigate your claim.
Vakgroep rv'~dische Elektrotechnlek
MONOSELEC10R
rsv.
GEHANDrCAPTENop basis v.
e.
singie-ch'lp micro computermet infrarood afstandsbedlemng
door T. B.W. van Tintel en
Rapport van de afstudeeropdracht voor de H.T.S. te Eindhoven
uitgevoerd van sept/eo
tIm
meila'
In opdracht van ir: W.H. Leliveld
onder I eidlng van ing. R. So kk~r
gehandicapt persoon die d.m.v. dit apparaat een aantal funkties in zijn omgeving via een enkele drukknop kan bedienen. Op deze wijze kan de gehandicapte een grotere onafhankelijkheid van zijn omgeving realiseren, hij is nu in staat een aantal beslissingen zelfstandig te nemen.
De hier beschreven monoselector is opgebouwd rond een single-chip microcomputer en is voorzien van een infrarood afstandsbediening. Er kunnen totaal 56 funkties op afstand worden bediend met de nieuwe monoselector. Door toepassing van de single-chip microcomputer was het mogelijk de monoselector als een klein handzaam apparaatje te realiseren.
geweest binnen de groep gehandicaptenzorg van de onderafdeling Medische Elektrotechniek. Bij deze wilik dan ook mijn directe begeleiders:
lr. W.H.Lelieveld, lng. R.Bakker en Dhr. H.Ossevoort hartelijk danken voor de geboden ondersteuning tijdens mijn afstudeerperiode.
Aan de lezers van dit rapport wil ik tenslotte nog mededelen dat er geen verslag is gedaan van de ontvangerschakelingen van de afstands-bediening voor de monoselector. Ten tijde van het afronden van dit verslag waren de daarvoor bestelde onderdelen nog niet binnengekomen.
Voorwoord Inhoudsopgave
Hoofdstuk 1: Inleiding
Hoofdstuk 2: Principebeschrijving van de Monoselector
Hoofdstuk 3: De 8748 Single Chip Microcomputer 3.1 Inleiding
3.2 De architectuur van de 8748 3.2.1 De rekenkundige sectie 3.2.2 Het programma geheugen 3.2.3 Het datageheugen
3.2.4 Input/Output
3.2.5 De programma-teller en stack 3.2.6 Het programma status woord 3.2.7 De conditionele spronglogica 3.2.8 Interrupt
3.2.9 De Timer/Event Counter 3.2.10 De klok en timing circuits 3.2.11 De Reset
3.2.12 De Single Step Mode 3.2.13 De External Access Mode 3.3 Penbeschrijving van de 8748
3.4 Programmeren, controleren en wissen van de EPROM 3.4.1 Programmeren en controleren van de EPROM 3.4.2 Wissen van het EPROM-geheugen
3.5 Test- en controlemogelijkheden van de 8748 3.5.1 De Single Step Mode
3.5.2 De Exrernal Access Mode
3.5.3 Lezen van het programmageheugen
2 3 5 6 8 8 8 :3 10 11 12 15 17 1~ 18 20 22 24 24 26 1~ ~g ~g 2.cr 30 31 31
3.6.4 Vlag instructies 3.6.5 Sprong instructies 3.6.6 Subroutine instructies
3.6.7 Timer/Event counter instructies 3.6.8 Controle instructies
3.6.9 Input/Output instructies Hoofdstuk 4: De Infrarood afstandsbesturing
4.1 Inleiding 4.2 De Informatie overdracht 4.3 De zender 4.4 De ontvanger 4.4.1 De voorversterker 4.4.2 De SAB 3271 ontvanger 4.4.3 De selectieschakeling
Hoofdstuk 5: Beschri.iving van de t-1onoselectorschakeling
5.1 Inleiding 5.2 Blokschema Monoselectorschakeling 5.3 De Monoselector schakeling 5.4 Ulterlijk t-1onoselector 34 34 35 35 35 35 36 36 36 3e 40 40 41 44 46 46 46 4~
54
Hoofdstuk 6: De oro;;rammabeschrijving 55 6 . 1 Inleiding 556.2 Blokschema voor het Monoselector/zender programma 55
6.3 Ret Monoselector/zender programma 58
6.4 De Zendcode tabel 67
Literatuurli,ist
Bijlage I De instructieset van den 8748
Bijlage II : De print lay-out + componenten
Bijlage III: Data-sheets
69
84
rood afstandbediening. De reden dat de monoselector met een single-chip microcomputer moest worden opgebouwd lag in het feit dat men een handzaam apparaatje wilde. De software van de microcomputer zou de meeste funkties van de monoselector moeten realiseren. Door de infrarood afstandsbediening zou het apparaat mobiel worden en minder installatieproblemen opleveren. De bestaande monoseJector heeft nl. als nadelen dat hij niet als hand-apparaat te gebruiken is en veel installatiewerkzaamheden, met bijbehorende kosten, met zich meebrengt. De nieuwe monoselector zou, indien mogelijk, ook meerdere funkties moeten kunnen bedienen omdat de 16 funktiemogelijkheden van de bestaande monoselector niet toereikend worden gevonden. Yet principe van de oude monoselector is overgenomen in deze nieuwe versie.
Het rapport wordt begonnen met een uitgebreidere principe-beschrijving, waarbij ook het principe van de vorige monoselector wordt aangegeven. Daar de single-chip microcomputer centraal staat in de mono-selector wordt deze in hoofdstuk 3 uitgebreid beschreven. In hoofdstuk 4 komt de infrarood afstandsbediening aan de orde, waarbij nader wordt
ingegaan op de zender, de ontvanger en de wijze van informatie~overdracht.
De realisatie van de monoselector met infrarood zender komt in hoofdstuk 5 aan de orde. In hoofdstuk 6 wordt tenslotte de software in de microcomputer beschreven.
schakelen van deze monoselector worden de kanalen, met een tussentijd van ongeveer 2 sec., cyclisch doorlopen. De selectieprocedure van.een bepaald kanaal verloopt nu als voIgt: na het inschakelen van het kanaal wordt er op de drukknop gedrukt ten teken dat men het kanaal wil selec-teren. Er gaat dan een wachttijd in waarbinnen een bevestiging van de selectie moet worden gegeven door nogmaals de drukknop te bedienen.
Is dit gebeurd dan wordt de aan het geselecteerde kanaal verbonden funktie uitgevoerd. In het andere geval wordt na het einde van de wachttijd het volgende kanaal ingeschakeld. Deze seleetieprocedure wordt overgenomen in de hier beschreven monoselector.
Met de nieuwe monoselector zullen, zoals zal blijken uit dit rapport, 56 kanalen worden gerealiseerd. De methode van het cyclisch door-lopen is dan niet erg efficient meer, zodat we overgaan op een indeling van de kanalen in groepen. Er is daarbij gekozen voor een indeling van
8 groepen met ieder
7
kanalen. De ingeschakelde groep wordt aangegeven dooreen
7
segment-display en de kanalen worden aangegeven d.m.v.7
LED's.Na het inschakelen van de monoselector komt deze in een rust-toestand die wordt aangegeven als groep 1. Na net bedienen van de drukknop
worden de groepen 1 maal cyclisch doorlopen. Iede~e groep kan dan
geselec-teerd owrden volgens de aangegeven selectieprocedure. Na selectie van een bepaalde groep worden de bijbehorende kanalen eenmaal cyclisch doorlopen, ook ieder kanaal kan op de aangegeven wijze worden geselecteerd. Na het doorlopen van de kanalen wordt de volgende groep ingeschakeld. Als alle groepen zijn doorlopen komt de monoselector weer in de rusttoestand.
Na het definitief selecteren van een bepaald kanaal uit een van de groepen wordt door de infrarood zender de, bij dit kan3al behorende,
code uitgezonden. De ontvanger die is afgesteld op deze code zal dan reageren en de bijbehorende funktie uitvoeren. De monoselector kan dan in het totaal 56 ontvangers aansturen.
de kanalen van groep 1 zeer snel bereikbaar zijn zodat hier de rneest urgente funkties kunnen worden ondergebracht.
Tenslotte nog enkele oprnerkingen. In de vorige rnonoselector worden op voorzijde de geselecteerde kanalen aangegeven. Djt is bij de nieuwe
rnonoselector niet rnogelijk orndat er geen terugkoppeling is tussen zender en ontvanger. Daarorn wordt er op iedere ontvanger een indicatie aange-bracht die aangeeft of de ontvanger het infrarood commando heeft opge-vangen. Verder kan opgernerkt worden dat de bediening van de drukknop ook op andere wijze kan plaatsvinden bijv. d.rn.v. een akoustisch sjgnaal of door het opwekken van een drukverschil (blazen of zuigenl.
Tenslotte kan opgernerkt worden dat de te verrichten funkties niet uit~
sluitend van elektrische aard hoeven te zijn. Ook andere funkties die bijv. door een elektrornotor of -rnagneet te bedienen zijn, kunnen door de rnonoselector gestuurd worden.
Door het toepassen van nieuwe ontwikkelingen in de ~10S-tec~!olo
gie is men er bij Intel in geslaagd een single-chip microcomputer te ont-wikkelen die alle functies, nodig in een digitaal processing systeem, in zich heeft. De hieruit voortgekomen set single-chip microcomputers met bij-behorende peripherie wordt de MCS-48 microcomputer-familie genoemd.
Het hoofd van de familie, de 8048 microcomputer, is behuisd in een 40 pen's package en bevat de volgende functies:
1) 8 bit Cpp
2) 1 K x 8 ROM programmageheugen 3) 64 x 8 RAM datageheugen
4) 27 I/O-lijnen
5) 8 bit Timer/Event Counter.
Met een minimum machine-cyclustijd van 2.5~sec. en een repertoire van meer
dan 90 instructies, die alle 1 of 2 machine-cycli omvatten, is de 8048 in prestatie te vergelijken met de laatste multi-chip NMOS microprocessor.
Omdat de 8048, door toepassing van ROM programmageheugen, 21echt toepasbaar is voor systeemontwikkeling, heeft men ook een EPROM-versie, de 8748, op de markt gebracht. Deze versie is vooral bedoeld voor het ontwikke-len van prototypes, vandaar dat hij hier wordt toegepast voor de
mono-selector.
In dit hoofdstuk wordt verder ingegaan op de 8748 microcomputer. Allereerst wordt in3.2 aan de hand van het blokschema de architectuur van de 8748 besproken. Daarna wordt in3.3 een penbeschrijving van het IC gege-Yen. In3.4 wordt ingegaan op de behandeling van de EPROM waarna in3.5 de test- en controlemogelijkheden van de 8748 worden aangegeven. Tenslotte wordt in3.6 ingegaan op de instructieset van de 8748.
3.2 De architectuur van de 8748
In deze paragraaf wordt de 8748 onderverdeeld in een aantal functionele blokken, die dan in detail worden beschreven. Deze onderverde-ling is gemaakt aan de hand van het blokschema van de 8748 dat in fig. 3. 1 wordt weergegeven.
~ES'OENT ~AMARFIAY 54, • )7 MUL TIPLEXER I FlEGISTEFI
,
i ~EGISTER I I FlEGISTER 2 : QEGISTER J , QEGISTER • ! REGISTER 5 FlEGISTER • REGISTER , "- 8 lEVEL STACK / (VARIABl.e LENGTH! OPTIONAL SECONO REGISTER SA-Nit OATASTO~E I I II
IL
TEST , TEST ()ACC BITTeST TIMERFLAG ACC CARRY INT FLA.GO FlAG 1 '---./'1'CONOITIONAl BRANCH LOGIC y j
SINGLE READ WRITE
SUP STROBES CONTROL AND TIMING
E.... XTA.ll XTAL1 ALE ! I I i , INT ~ ~oo l ~ t ! I~HI;'l'lE· ; ! •
INTfRFH,JPT PROMI CPU, O$CllLArOft ADORESS PROGR,l.M EXPANDER. MEMORY (TAL LATCH "'EMORY
STR08£ S(PARATE'- STROBE EHA8llE CYCLE CLOCk . il.
U
~. r, I i ij L ~. l' V<!
V ~; ,,/ PORT' . --"'-- ::.L ...::.::._:- .;;L -::._L ~ ---'" aus B! c---....".-~,/1 a~~;R LArCH [~GNO FlJ~~V Ylfiguur 3.1: Het blokschema van de 8748 3.2.1 De rekenkundige sectie
De rekenkundige sectie bevat de fundarnentele datarnanipulatie-functies van de 8748 en kan onderverdeeld worden in de volgende blokken:
Arithmetic Logic Unit (ALU) Accumulator
Carry-vlag
Instructie-decoder.
In een typische operatie wordt data, opgeslagen in de accumulator, in de ALU gecombineerd met data van een andere bron, die eveneens is aangesloten op de interne bus (zoals een register of een I/O-poortJ. Het resultaat wordt opgeborgen in de accumulator of in een ander register. In het onderstaande worden de genoemde blokken in detail besproken.
*
Instructie Decoder: Het opcode-gedeelte van iedere programma-instructie wordt opgeslagen in de instructie-decoder en geconverteerd naar een aantal lijnen die de functies van de afzonderlijke blokken van de rekenkundige sectie sturen. Deze lijnen sturen de bron van de data, het bestemmingsregister en de functie uitgevoerd in de ALU.*
Arithmetic Logic Unit: De ALU accepteert 8 bit data-woorden van 1 of 2bronnen en genereert, onder controle van de instructie-decoder, een 8 bit resultaat. De ALU kan de volgende functies uitvoeren:
- optellen met of zonder carry - And, Or, Exclusive Or
- 1 verhogen of verlagen - een bit inverteren
- naar links en rechts schuiven - omwisselen van nibble's (4 bit) - omzetten in BCD-code.
*
Carry-vlag: Als het resultaat van een operatie, uitgevoerd in de ALU,wordt gepresenteerd door een woord van meer dan 8 bit, wordt de carry-vlag geset in het programma status woord.
*
Accumulator: De accumulator is het belangrijkste dataregister in depro-cessor. De accumulator is een van de databronnen voor de ALU en vaak de be stemming van het resultaat van de, in de ALU uitgevoerde opdracht. Data-transporten van en naar de I/O-poorten en het geheu-gen gaan in het norrnale geval ook via de accumulator.
3.2.2 Het programmageheugen
Het programrnageheugen bestaat uit 1024 woorden, 8 bit breed, die
geadresseerd worden door de programma-teller. In de 8748 bestaat dit
geheu-gen uit een, door de gebruiverprogrammeerbare en uitwisbare EPROM.
In het programmageheugen is aan drie locaties een speciale bete-kenis gegeven, deze locaties, met hun speciale betebete-kenis, zijn:
*
Locatie 0: Het activeren van de reset-lijn van de processorheeft tot gevolg dat de eerste instructie wordt op-gehaald in locatie O.
Daarom moet de eerste instructie, die na initiali-satie moet worden uitgevoerd, opgeborgen worden in locatie O.
*
Locatie 3: Het activeren van de interrupt-ingangslijn van deprocessor veroorzaakt een sprong naar locatie 3. Daarom moet het eerste woord van de externe interrupt service routine worden opgeborgen in locatie 3.
*
Locatie 7: Ee~ Timer/Counter interrupt, voortvloeiende uit eenoverflow, veroorzaakt een sprong naar locatie
7.
Daarom moet het eerste woord van de Timer/Counter
service routine worden opgeborgen in locatie
7.
De sprongen naar locaties 3 of 7 vinden aileen plaats als de betreffende
interrupts zijn toegestaan. 3.2.3 Het datageheugen
Het datageheugen bestaat uit 64 woorden van 8 bit breedte. Aile geheugenlocaties zijn indirect adresseerbaar door een van de twee
RAM Pointer registers, RO en R1, die zich bevinden in locaties 0 en 1 va~
het datageheugen.
De eerste 8 locaties (0 tim 7) ZlJn bestemd als werkregisters,
deze zijn door verscheidene instructies direct adresseerbaar. Om deze reden worden ze vaak gebruikt voor tijdelijke opslag van tussenresultaten die her-haald in het programma nodig zijn.
Door het verwerken van een Register Bank Switch instructie
(SEL RB) worden de locaties 24 tim 31 aangewezen als werkregisters in plaats
van locaties 0 tim 7. Deze tweede registerbank is ook door verscheidene
instructies direct adresseerbaar en kan gebruikt worden als uitbreiding van de eerste bank. Ook kan men deze t,veede bank reserveren voor gebruik tijdens een interrupt service routine, zodat de registers van bank 0, die worden gebruikt in het hoofdprogramma, ongeschonden blijven. Indien geen gebruik
wordt gemaakt van de tweede bank zijn de locaties 24 tim 31 normaal
adres-seerbaar door de RAM pointer registers. Omdat de twee RAM pointer registers deel uitmaken van de registerbank worden, door invoering van de tweede bank, twee extra pointer registers gecreeerd. Op deze wijze zijn 4 RAM-locaties gemakkelijk bereikbaar.
I I
A~~~~~:LEj WHENBA~K1I IS SELECTED , i ---J ADDRESSED INOIAECll \' THROUGH HIORRO IRO'DRRI"'~I
I I OIRECTl y l ADDRESSABLEI WHEN BANK 0j IS SHECTED :--lJ
USER RAM J2.8 SANK 1 WORKING REGISTERS 8.8 - - - -RT" - - - -- - - -Rii' - - -8lEVEl S1ACl( OH USER RA'04 ~IiJlY BANK 0 WORKING REGISTERS &.8 ----Ri--- ----iiQ---32 31 6J 24 23programma- en data-geheugen wordt in
LOCATION 3 - E>CTERNA' IN l''f,RRUPT VECTORS !'ROOAAY. HERS
LOCA. nUN] - TIMER INTERRUPT VECTQP5 PROGRAM HERE itE:SE'T VECTORS ..- - PROGRAM HERE ~
-I 'lsls1413121'l o 8 7 8 5 AOOHESS 1023 o figuur 3.2: Het programma- en data-geheugenDe RAM locaties 8 tim 23 vervullen eveneens een dubbele rol omdat zij de programmateller stack bevatten (zie3.2.6). Deze locaties worden bij het aanroepen van een subroutine geadresseerd door de stack-pointer, zij kunnen echter ook gewoon door de RAM pointer registers worden geadresseerd. Indien er minder dan 8 niveaus diep genest wordt, zijn niet alle stackregisters nodig, deze kunnen dan als gewone RAM locaties worden
gebruikt. Per niveau dat minder diep genest wordt, komen _e~ 2 RAM
loca-ties vrij.
De configuratie van het figuur 3.2 nogmaals weergegeven.
3.2.4 Input/Output
De 8748 heeft 27 lijnen die gebruikt kunnen worden voor input-of outputfuncties. Deze lijnen zijn verdeeld in drie poorten (P1, P2 en BUS) met 8 lijnen, die kunnen dienen als ingangen, uitgangen of bidirectionele lijnen, en 3 testingangen (TO, T1 en INT) die het programmaverloop kunnen beinvloeden wanneer ze getest worden door conditionele spronginstructies. In het onderstaande worden de I/O-mogelijkheden van de 8748 meer in detail besproken.
Poort 1 en 2
Poort 1 en 2 zijn beide 8 bit breed en hebben identieke eigen-schappen. Data, weggeschreven naar deze poorten, worden aldaar opgeslagen en blijven onveranderd totdat ze overschreven worden door nieuwe data. Als input-poorten bezitten deze lijnen geen opslagmogelijkheid voor data, dit houdt in dat de input-data op de poort aanwezig rnoeten blijven totdat
ze gelezen worden door een input-inst~~ctie.
De lijnen van poort 1 en 2 worden quasi-bidirectioneel genoernd vanwege de speciale uitgangscircuit-structuur waarrnee iedere lijn kan dienen als ingang , uitgang of beide. Deze poortstructuur wordt in figuur 3.3 weergegeven. ORl. ANl <-5V +5V a 0 .. SOK 0 I/O FLIP PIN FLOP PQRT 1 AND2 elK a -INTERNAL BUS -+----1 WRITE- t - - - . - . . - - - . . . J PULSE IN
Zoals blijkt uit de figuur, wordt iedere lijn continue opge-trokken naar +5V door een relatief hoge impedantie van 50 k.n.. Deze "pullup" is voldoende voor het leveren van de stroom voor een hoog TTL-niveau maar kan tevens laag getrokken worden door een standaard TTL-gate. Op deze wijze wordt de mogelijkheid geschapen voor input en output op dezelfde pin.
Hanneer een "1" wordt weggeschreven naar de I/O-pin, wordt
gedure~de de Write-puts (! 500 ns) de bovenste FET opengestuurd.Deze FET
vertegenwoordigt een relatief hoge impedantie
(!
5 ~), waardoor een snelle0-1 overgang mogelijk wordt. Bij het wegschrijven van een "0" wordt de
onderste FET, die een impedantie vertegenwoordigt van + 300JL ,
openge-stuurd zodat de uitgang naar "0" wordt getrokken. Omdat de onderste FET een relatief lage impedantie heeft moet er, voordat een I/O-pin als
input kan worden gebruikt, een "1" naar deze lijn worden geschreven om de onderste FET dicht te sturen. Door een systeem-reset worden aIle lijnen ...leer in de hoog-impedante "1 "-status gebracht, beide FET' s zijn dan dichtgestuurd.
De hierboven geschetste poort-structuur geeft de mogelijkheid tot input en output op dezelfde I/O-pin en een mix van input- en output-lijnen op dezelfde poort. De quasi-bidirectionele poorten, in combinatie met de ANL en ORL-instructies, geven voldoende mogelijkheden aan de proces-sor voor het verwerken van input en output op afzonderlijke lijnen.
BUS
BUS is een 8 bit bidirectionele poort met daarbij behorende input- en output-pulsen. Indien de bidirectionele eigenschap van BUS niet benodigd wordt, kan deze dienen als output-poort met en input-poort zonder data-opslagmogelijkheid. Een combinatie van input- en output-lijnen is bij deze poort niet mogelijk.
Bij gebruik van BUS als statische poort worden data weggeschreven en opgeslagen d.m.v. een OUTL-instructie, het binnenhalen van data geschiedt d.m.v. een INS-instructie. Deze INS- en OUTL-instructies genereren pulsen
op de corresponderende
RD-
en WR-outputlijnen, echter bij gebruik van BUSBij gebruik als bidirectionele poort worden de MOVX-instructies toegepast voor het lezen van en schrijven naar de poort. Bij het wegschrij-ven van data naar BUS wordt er een puls gegenereerd op de WR-outputlijn, deze outputdata zijn geldig voor het externe systeem op de stijgende flank van WR. Bij het uitlezen van BUS wordt er een pUls gegenereerd op de RD-outputlijn, inputdata moe ten op de BUS-lijnen aanwezig zijn op de stijgende flank van RD. Wanneer er niet gelezen of geschreven wordt zijn de lijnen
van BUS in de hoog impedante "1" status.
Test en OO-inputs
Drie I/O-pennen, TO, T1 en INT, dienen als inputs en kunnen ge-test worden d.m.v. conditionele'spronginstructies.-Deze pennen creeren de mogelijkheid om sprongen in het programma te maken op grond van input-waarden, die niet eerst via een input-poort in de accumulator gehaald moeten worden.
De TO, T1 en INT pennen kunnen ook nog andere funkties hebben, maar deze
worden beschreven in de pen-beschrijving (zie 3.3). 3.2.5 De programma-teller en de stack
De programma-teller is een onafhankelijke teller, terwijl de
programma-teller stack is aangewezen op het gebruik van registerparen in het
datageheugen. Slechts 10 bit's van de programma-teller worden gebruikt voor
het adresseren van de 1024 woorden van het eigen programmageheugen. De 2
meest signifikante bit's van de 12 bit's pro'gramma-teller' worden gebruikt
voor het adresseren van extra extern programmageheugen. Bij een systeem-reset wordt de programma-teller op nul gezet.
Bij een interrupt of een subroutine-CALL wordt de inhoud van de teller opgeborgen in een van de 8 registerparen van de programma-teller stack. Het registerpaar dat hiervoor gebruikt moet worden, wordt aangeduid door een 3 bit's stack-pointer, deze stack-pointer is een deel
van het programma status woord (PSW). Locaties 8 tim 23 van het datageheugen
zijn beschikbaar als stackregisters en worden gebruikt voor het opbergen va~
de programma-teller en 4 bit's van het progr~ma status woord. In figuur
101 100 011 010 001 000
·
·
• • • •·
·
·
". •" • PSW PCs_" PC4-7 • PCGJ 18 17 16 15 14 13 12 11 10 9 A8 MSB lSBfiguur 3.4: de programma-teller stack
Wanneer de stackpointer, bij de systeem-reset, op 000 wordt gezet
wijst hij de RAM-locaties 8 en
9
aan. De eerste interrupt of sprong naareen subroutine resulteert in het opbergen van de programma-teller in
locaties 8 en 9. De stack-pointer wordt dan met 1 verhoogd en wijst naar
locaties 10 en 11 in afwachting van een volgende subroutine-CALL. Het nesten van de subroutines binnen subroutines kan maximaal 8 niveaus diep gaan voordat er een stack-overflow optreedt. Indien er een overflow
optreedt wordt het eerste opgeborgen terugkeeradres overschreven (locaties
8 en 9) omdat de stack-pointer overgaat van 111 naar 000. Een underflow
van 000 naar 111 is ook mogelijk.
Aan het einde van een subroutine, dat aangegeven wordt door een return-instructie (RET of RETR) wordt de stack-pointer met 1 verminderd
en de inhoud van het dan aangeduidde registerpaar wordt overgebracht
3.2.6 Het programma status woord
Het programma status woord is in feite een verzarneling van een
aantal FF's uit de machine, die zijn sarnengebracht in een 8 bit'~ woord.
Het programma status woord kan naar de accumulator worden overgebracht, waar getest en veranderd kan worden, en daarna weer worden teruggezet. Dit geeft een mogelijkheid voor een snel en gemakkelijk herstel van de
machine-status na een storing in de voedingsspanning.
In
figuur3.5 wordtde sarnenstelling van het programma status woord weergegeven. SAVED IN STACK
! STACK POINTER(
~I-'
_cV--,-i_A_C_ _FO_~
lSB
figuur 3.5: het programma status woord
De 4 meest signifikante bit's van het programma status woord worden bij iedere interrupt en bij iedere subroutine-CALL opgeborgen in de programma-teller stack. Bij terugkeer uit de subroutine met een RETR-instructie worden deze 4 bit's weer in het programma status woord terugge-zet, bij terugkeer d.m.v. een RET-instructie is dit niet het geval.
De bit's van het programma status woord zijn als volgt gedefinieerd:
bit 0-2: de stack-pointer (SO, S1, S2)
bit 3 niet gebruikt (niveau "1" bij lezen)
bit 4 werkregister bank aanduiding~ 0
=
bank 0; 1=
bank 1bit 5 vlag 0 (FO), .dit is een door de gebruiker controleerbare vlag, die
getest kan worden d.m.v. een conditionele spronginstructie (JFO).
bit 6 auxiliary carry (AC), deze carry wordt gegenereerd door een
ADD-instructie en wordt gebruikt bij het omzetten van een binaire code in BCD-code.
bit 7 carry (CY), deze carry geeft aan dat de voorgaande operatie
3.2.7 De conditionele sprong logica
De conditionele sprong logica binnen de processor brengt ver-schillende interne en externe condities naar de processor alwaar ze getest kunnen worden door het gebruikersprogramma. Door gebruik te maken van con-ditionele spronginstructies kunnen de volgende condities een verandering teweeg brengen in de volgorde van de programma-executie.
Testbaar onderdeel Sprongcondities
Accumulator
=
0 f- 0Accumulator-bit
-
1Carry-vlag 0 1
Gebruikers-vlaggen
-
1(FO, F1)
Timer overflow vlag
-
1Test inputs (TO,T1) 0 1
Interrupt-input (INT) 0
-3.2.8 Interrupt
Een interrupt-routine wordt gestart door het aanbrengen van een "0" niveau op de INT input-pin. Een interrupt wordt gedetecteerd op een niveau en is laag actief om de gebruiker de mogelijkheid te geven meerdere interruptbronnen via een OR-funktie aan de lNT-pin te hangen. De interrupt-lijn wordt iedere machine-cyclus gecontroleerd en wanneer een interrupt wordt gedetecteerd veroorzaakt dit, nadat aIle cycli van de lopende instruc-tie zijn afgewerkt, een sprong naar de subroutine op locainstruc-tie 3 van het
programmageheugen. Zoals bij iedere sprong naar een subroutine worden de programma-teller en het programma status woord opgeborgen in de progrmrrna-teller stack. Geheugenlocatie 3 van het prpgrammageheugen bevat meestal een niet-conditionele jump naar een interrupt service routine elders in het programma-geheugen.
Het einde van de interrupt service routine wordt aangegeven door een
RETR-instructie, de progra~a-teller en het programma status woord worden dan
Het interrupt-systeern heeft slechts niveau, dit houdt in dat na het optreden van een interrupt alle daarop volgende interrupts worden genegeerd totdat een RETR-instructie de interrupt input logica weer vrij-geeft. Dit geldt eveneens voor een interne tLmer/counter-interrupt gegene-reerd door een timer-overflow. Indien een interne timer/counter interrupt en een externe interrupt gelijktijdig optreden wordt alleen de externe bron erkend. Indien noodzakelijk, kan een tweede externe interrupt worden gecreeerd door de timer/counter-interrupt toe te staan, de timer/counter te laden met FF en deze te gebruiken als event-counter. Een 1-0 overgang
op de T1 input veroorzaakt dan een sprong naar locatie
7
van hetprogramma-geheugen. In figuur 3.6 wordt de interrupt-logica van de 8748 weergegeven.
TIMER TERHurl COGNIZED XTERNAL Te'tRUpT COGNIZED - S CONDITIONAL JUMP LOGIC TIMER FLAG INTERRUPT
J '
R EXECUTEDCALLI
--'
CLR0r-~
D RE S 0 TIMERCi~'N
OVERFLOW'Jf
FF CLK 1 HE R:
,-
1
]-
"'
J J ')-
S a-
INTERRUPT IN PROGRESS S 0 FF - R 1 TIMER INT ENABLE ]"
R at--.J-A
~ D I INT i RESF FF !"lETR a-
EXECUTED-
CLK U-LE ]"'
y LE J -EN I S 0 -EXECUTEO INT ENABLEJ )
R -DIS I EXECUTED RESET RESET DIS TCNTI EXECUTED A LAST CYC OF INST. TIMER OVERFLOW iNT PIN RESET EN TCNTI EXECUTED TIMER INT RECOGNIZ EXECUTED JTF EXECUTED RESETmoet ongedaan gemaakt worden voordat de RETR-instructie verwerkt wordt, omdat anders de service-routine direkt na terugkeer in het hoofdprograrnma opnieuw wordt aangeroepen. Dit kan men o.a. realiseren door een van de uitgangslijnen van de 8748 te bestemmen als interrupt-aanvraag bevestiging, deze lijn wordt geactiveerd door de service-routine en maakt de externe interrupt-aanvraag ongedaan.
De INT-pin kan ook getest worden m.b.v. een conditionele sprong-instructie(jNI). Deze instructie kan worden gebruikt voor het detecteren van een aanwezige interrupt als interrupts nog niet door het gebruikers-porgramma worden toegestaan. Indien interrupts in het geheel niet worden toegestaan of niet benodigd zijn, kan de INT-pin als testingang worden gebruikt zoals de TO- en de T1-pin.
3.2.9 De Timer/Event Counter
De 8748 bevat een teller die de gebruiker in staat stelt externe gebeurtenissen te tellen (Event Counter mode) en precise tijdsintervallen te genereren (Timer mode) zonder daarmee de processor te belasten. De funktie van de teller is in beide modes hetzelfde, het verschil ligt in de bron van input.
De omhoogtellende 8 bit binaire teller kan geladen en gelezen worden d.m.v. twee MOV-instructies die de accumulator-inhoud naar de teller overbrengen en omgekeerd. De tellerinhoud wordt niet belnvloed door een systeem-reset en kan alleen veranderd worden door een MOV T,A-instructie.
De teller wordt gestopt bij een systeern-rest of door een STOP TC~T instructie,
hij kan daarna opnieuw opgestart worden als Timer, door een STRT T-instructie of als Event Counter, door een STRT CNT-instructie. Na het starten van de teller wordt deze steeds met 1 verhoogd tot het maximum FF, waarna een overflow optreedt naar 0 terwijl de teller gewoon doorloopt.
Bij een overflow van FF naar 0 wordt de overflow vlag FF geset en er wordt een interrupt-aanvraag gegenereerd. Deze overflow vlag kan getest worden met een conditionele spronginstructie, na deze test wordt de over-flow flag gereset, dit laatste gebeurt ook na een systeem-rest. De inter-rupt-aanvraag wordt opgeslagen in een FF en in een OR-poort gestopt tezamen met de ext erne interrupt-input.
Een Timer-interrupt wordt, onafhankelijk van de externe interrupt, al of niet toegestaan door het gebruikersprogramma door de EN TONTI en DIS TCNTI instructies. Indien een Timer-interrupt is toegestaan zal een over-flow van de teller resulteren in een sprong naar locatie 7 van het programma-geheugen, alwaar de eerste instructie van de Timer/Counter service routine is opgeslagen. Indien de Timer/Counter interrupt en de externe interrupt gelijktijdig verschijnen zal de externe bron erkend worden met als resultaat een sprong naar locatie 3 van het programmageheugen. Omdat-de
rimer-inter-rupt wordt vastgehouden, blijft deze geldig tot het externe apparaat
ver-zorgd is en zal, na terugkeer u~t de interrupt service routine, direkt
erkend worden zodat dan direkt naar locatie 7 van het programmageheugen wordt gesprongen. De Timer interrupt FF wordt gereset na een sprong naar locatie 7 van het programmageheugen of door het verwerken van een DIS TCNTI instructie.
De teller kan in de Event Counter-mode of in de Timer-mode worden gebruj.kt. Beide modes worden nu nader bekeken, het bijbehorende blokschema wordt weergegeven in figuur 3.7.
PRESCALER
X T A L , 1 5 - 32
ENABLE
o
STOP T NOT CLEARED ON RESET
JUMP ON TIMER FLAG LOAD OR READ
I
B BIT TIMER! EVENT COUNTER START TIMER EDGE DETECTOR . . . . - - - - -... START COUNTER CLEARED ON START TIMERwaarmee dit kan gebeuren is een maal per drie instructie-cycli en zodoende afhankelijk van de kristalfrequentie, er is geen minimum snelheid. De T1-input moet bij gebruik van een 6 MHz-kristal minstens 500 nsec. hoog blijven. De Timer Mode
Door een STRT T instructie wordt een interne klok met de teller verbonden, tevens wordt de teller vrijgegeven. Deze interne klok wordt
af-geleid van de machine cyclusklok ALE (ALE
=
kristalfrequentie:15) die dooreen 32-deler wordt gevoerd. De uitgang van deze deler wordt aan de teller wlJze
gekoppeld die op dezevsteeds verhoogd wordt met een frequentie gelijk aan
de kristalfrequentie:480. De 32-deler wordt gereset bij het starten van de Timer.
De verschillende tijdvertragingen worden gerealiseerd door
tel-pulsen tussen 0 en 256 te tellen • Grote tijdvertragingen 0~nnen worden
gerealiseerd door het tellen van Timer-overflows in een van de werkregisters onder controle van het gebruikersprogramma. Voor zeer korte tijdsintervallen kan een externe klok op de T1-pin worden aangeboden terwijl de teller gebruikt wordt in de Event Counter Mode, de machine cyclusklbk (ALE) kan hiervoor
gebruikt worden. Zeer kleine tijdsvertragingen kunnen eveneens gerealiseerd worden d.m.v. software vertragingslussen.
3.2.10 De klok en timing circuits
De timing van de 8748 microcomputer wordt geheel intern verzorgd met uitzondering van een frequentie-referentie die kan bestaan uit een kristal, een spoel of een externe klok. De klok en timing circuits kunnen onderverdeeld worden in de volgende funktionele blokken.
Oscillator
De interne oscillator is een haag kwalitatief serie resonantie
circuit met een frequentiebereik van 1 tat 6 MHz. De X1-pin is de ingang
Een kristal of spoel, bevestigd tussen
Xl
enX2,
zorgt voor de terugkoppe-ling en fase-verschuiving nodig voor oscillatie. Bij gebruik van een spoelligt het frequentiebereik van de interne oscillator tussen 3 en
5
MHz, denauwkeurigheid van de frequentiereferentie is in dit geval veel lager
dan bij gebruik van een kristal. Voor frequenties hoger dan
5
MHz moetaltijd een kristal worden toegepast. Een extern gegenereerde klok kan ook met
X1-X2
worden verbonden en dienen als frequentiereferentie.State Counter
De uitgangsfrequentie van de interne oscillator wordt in de state-counter door 3 gedeeld. De klok aan de uitgang van de state-state-counter (CLK) definieert de duur van een machine-toestand (state). CLK kan extern beschik-baar gemaakt worden op pin TO door executie van de ENTO CLK-instructie. Het uitsturen van CLK op de TO-pin wordt ongedaan gemaakt door een systeem-reset.
Cycle-Counter
CLK wordt in de cycle-counter door
5
gedeeld voor het opwekken vaneen klok die de duur van een machine-cyclus, bestaande uit
5
toestanden,definieert. Deze klok wordt Address Latch Enable (ALE) genoemd vanwege zijn funktie in MCS-48 systemen met extern geheugen. Deze klok is constant aan-wezig op de ALE output pin.
In figuur 3.8 worden de klok en timing circuits schematisch weerge-geven, waarbij tevens het verband met de instructiecyclus wordt gelegd. In het tijddiagram worden beide klokken aangegeven.
.
2.5UHCCYCLE ,I 55 51 S2 SJ I Sol I 55 51
I INPUTIN5T. DECODE EXECUTION INPUT
OUTPUT ADDRESS INC. PC OUTPUT ADDRESS
I
I
II
I
I
55 S3 S2 SI S5 Sol S2 Sf ALE --If----+---+--J CLOCK OUT ON TO3.2.11 De Reset
De 8748 processor wordt gelnitialiseerd m.b.v. de reset-input. Deze Schmitt-trigger ingang heeft een interne "pullup" weerstand die in
combinatie met een externe 1ftF condensator een puls genereerd van zodanige
lengte dat alle interne circuits gereset worden. Indien de resetpuls extern gegenereerd wordt, moet de reset-pin, na inschakelen van de voedingsspanning, minstens 10 mslaag gehouden worden. Indien de voedingsspanning en de
oscillator al stabiel zijn, hoeft de lengte van de resetpuls slechts 5
machine-cycli te bedragen. Beide reset-mogelijkheden, de externe reset en de power on reset worden in figuur 3.9 aangegeven.
POWER ON RESET EXTERNAL RESET
~
TTLRm0T~
, DlCTIVf PUlllH'figyur 3.9: de externe en power on reset
Tijdens een systeem-reset worden de volgende acties uitgevoerd:
1.
De programma-teller wordt op nul gezet.~. De stack-pointer wordt op nul gezet.
1.
Registerbank 0 wordt geselecteerd.~. Gegeheugenbank 0 wordt geselecteerd .
.2,. BUS wordt in de hoog impedante toestand gebracht (behalve wanneer
EA = 5V).
~. Poort 1 en 2 worden in de input-mode gezet.
~. Interrupts worden niet toegestaan.
1i.
De interne teller wordt gestopt.~. De Timer/Counter vlag wordt gereset.
~. Vlag 0 en 1 worden gereset.
11.
CLK wordt niet uitgestuurd op TO.3.1.12 De Single SteD Mode
In de single-step-mode kan de processor het programma per instructie doorlopen.
Als de processor stilstaat, is het adres van de volgende te verwerken in-structie aanwezig op BUS en de onderste helft van poort 2. Op deze wijze kan de gebruiker zijn programma volgen in iedere instructiestap en contro-leren op eventuele fouten. In de single-step-mode gaat de inhoud van de BUS-buffer verloren, heeft men deze informatie echter nodig dan moet een externe buffer worden aangebracht.
De 8748 opereert in de single-step-mode als voigt:
l.
De processor wordt gevraagd te stoppen door het aanbrengen van een laagniveau op de SS-pin.
~. De processor beantwoordt deze aanvraag door te stoppen tijdens de
in-structie-fetch van de volgende instructie. Wanneer een inst~~ctie,
be-staande uit 2 machine-cycli, wordt verwerkt tijdens het single-step-commando, worden beide cycli afgewerkt voordat de processor stopt.
~. De processor bevestigt zijn stilstand door ALE hoog te maken. In deze
toestand, die onbeperkt lang kan duren, is het adres van de volgende op te halen instructie aanwezig op BUS en de onderste helft op poort 2. 4. ~wordt daarna weer hoog gemaakt om de processor uit stilstand te halen
zodat de volgende instructie opgehaald kan worden. Het uit stilstand komen wordt door de processor aangegeven door ALE laag te maken.
~. Om de processor te laten stoppen bij de volgende instructie moet SS
opnieuw.laag gemaakt worden nadat ALE laag is geworden. Indien SS hoog blijft, blijft de processor gewoon doorlopen.
In figuur 3.10 wordt het tijddiagram van de single-step-mode weergegeven, hierin zijn duidelijk de hierboven beschreven acties te erkennen.
A.lE--!
l\
/
::
t
ss~
OAT Ac:
)---BUS _ _ _ _ _ _
-<
PCO~7)
PeO 1P20-23 I{O
X
PC8·11X
I/Ox::
pee·}l>C
ACTIVE CYCLE SlOP CYCLE STOP CYCLE
3.2.13 De External Access Mode
In het normale geval worden de eerste 1024 woorden van het pro-grammageheugen uit de interne EPROM gehaald. M.b.v. de EA input-pin kan de processor gedwongen worden een prograrmna ui teen externgeheugen te ver-werken, het interne programmageheugen is dan niet bereikbaar. Deze external
access mode wordt opgestart bij een hoog niveau op de SA-pin. Om problemen
te voorkomen moet tijdens het omschakelen een systeem reset plaats vinden. De external access mode kan zeer veel nut hebben bij het testen van het
systeemprogr~~a,hierop wordt in par. 3.5.2 verder ingegaan.
3.3 De Pen-beschrijving van de 8748
De 8748 microcomputer is behuisd in een 40 pin's dual in line
package. In fi~~ur 3.11 wordt de pin-configuratie van de 8748 gegeven,
tevens wordt het logisch symbool weergegeven.
TO Vee XTAL 1 T1 PORT , 1 lTAL 2 1'27 1Ifn'f 1'25
"
1'25 PORT INT 1'2_ ' 2 lEA 1'17 1m 1'16 PUN 1'15 WR 1'1. ALE !I13 080 1'12 08 1 I'll 082 1'10 083 Voo 08. PROG 08 5 1'23 08, P22 1'21 BUS 087 Vu 1'20In de onderstaande lijst worden de symbolen, gebruikt in figuur 3.11 nader verklaard. De funkties van de diverse pennen zijn in het voor-gaande besproken of komen in de volgende paragraven nog aan de orde. AIleen
indien anders gespecificeerdJ zijn aIle ingangen TTl-compatible en
kunnen aIle uitgangen 1 TTL-Load leveren. Aanduiding Vss
Vdd
Vee PROG P10-P17 P20-P27 DO- D7 TO T100
RD
RESET WR ALE PSEN SS EA XTAL 1 XTAL 2 Pin 20 26 40 25 27-34 21-24 35-38 12-19 1 39 6 8 4 10 11 9 5 7 2 3 Betekenis circuit-aarde programmeer-voedingsspanning-inp~t algehele voedingsspanning-input programmeer-puls-inputpoort 1 (8 bit quasibidirectionele poort) (interne
pullup 50 kJ})
poort 2 (8 bit quasibidirectionele poort) (inter~e
pullup 50 kJL)
BUS (8 bit bidirectionele poort)
Test O-input Test 1-input Interrupt-input Read-output
Reset-input (interne pullup 200 kA)
Write-output
Address Latch Enable Program Store Enable
Single Step Input (interne pullup 300 k~
External Access input (interne pullup 10 M~
input externe frequentie-referentie input extern frequentie-referentie
AIleen indien anders aangegeven hebben de ingangen geen interne pullup-weerstand.
3.4 Het programmeren, controleren en wissen van de EPROM
In deze paragraaf wordt aangegeven hoe het interne
programmo-geheugen van de 8748 kan worden geprogr~meerd en gewist.
3.4.1 Programmeren en controleren van het EPROM-geheugen
Kort sarnengevat bestaat het progr~rocesuit de volgende
handelingen: het activeren van de programmeer-mode, het aanbieden van een adres, het opslaan van dit adres, het aanbieden van data en het aanbieden van een programmeerpuls. Ieder data-woord wordt eerst volledig geprograrn-meerd voordat het volgende data-woord wordt aangeboden. Na het programmeren van een woord volgt steeds 'een controle-stap.
De pinnen die gebruikt worden tijdens het progr&~erenmet
bijbe-horende funkties worden hieronder weergegeven:
pin funktie
XTAL 1 klok-input (1-6 MHz)
RESET initialisatie en adres-opslag
TestO selectie van de programmeer- (OV) of controle-mode'SV)
EA activeren van de programma/controle mode
BUS adres- en data-input, data-output gedurende controle
P20-21 adres-input
Vdd programmeer voedingsspanning
PROG programmeer-puls-input.
Hieronder worden de verschillende stappen in het programmeer/ controleproces besproken, het bijbehorende tijddiagram wordt weergegeven in figuur 3. 12.
Programmeer/controle volgorde
1. Vee' = 5 V, de interne oscillator is in werking.
RESET
=
0 V ~' initialisatle van de 8748.Test 0
=
5 V, EA=
5 V, BUS en PROG onbepaald.£.
Inbrengen va~ de 8748 in de programmeervoet.3. Test 0
=
0 V~ selecteer de programmeermode.2'
Adres aanbieden aan BUS en Pao~1, dit adres geeft de plaats aan waar de data moeten worden weggeschreven.£L.
RESET=
5 V~ binnenhalen v&~ het adres.L.
Data aanbieden aan BUS.&.
Vdd=
25 V~ inschakelen programmeer-voeding.~ PROG
=
0 V gevolgd door een puis van 23 V gedurende 50 ms ~:data worden opgeslagen in de EPROM.
lQ.. Vdd :: 5 V -._ ui tschakelen prograrnmeer-voeding.
11.
Test 0=
5 V~- selecteer de controle-mode.~. Lezen en controleren van de data op BUS.
13. Test 0
=
0 V ~_-' selecteer de programmeermode.~. RESET
=
0 V ~ terugkeren naar stap 5 voor het programmeren van hetvolgende data-woord.
~ Wanneer de 8748 wordt verwijderduit de prograrrmeervoet moeten de
condities gegeven in stap 1 gelden.
+5V
0
-EA
1---,--- BUS AND PROG CAN BE DRIVEN ONLY DURING THIS TIME - ---1
+5V - - - ,
I
--"
.---TEST 0W
o I I +a;,V 1---+5V . ~--~<:DATAaUT BUS<
ADDRESS AO-A7X
DATA)
P20·21 PREVIOUSX
ADDRESS AS-AgADDRESS +25V VDD +5V -+ZJV
I
FLOAT PROG +OV , ' - - _figuur 3.12: tijddiagram programmeer/controle-mode
FLOAT
'-_...J'-- -
---3.2.4 Wissen van het EPROM-ge!1eugen
De aanbevolen wisprocedure voor de EPROM is blootstellen aan kortgolvig ultraviolet licht met een golflengte van 253,7 nm. De
stralings-dosis voor wissen moet minimaal 15 Ws/cm2 zijn. De wistijd bij deze dosis is
ongeveer 15
a
20 minuten, gebruik makend van een UV-lamp met een vermogen2
van 12000 W/cm . Tijdens het wissen moet de 8748 zich op minder dan 2,5 em van
de UV-lamp bevinden. Wanneer de8748 gewist is bevat het geheugen allemaal logi.sche nullen.
3.5 De Test- en Controle-mogelijkheden van de 8748
In deze paragraaf worden enkele eigenschappen van de 8748,
beschreven in voorgaande paragraven, bekeken op mogelijkheden voor het testen en controleren van de systemen met de 8748.
3.5.1 De Single Step Mode
De single step mode, eerder beschreven in sectie 3.2.12, geeft de gebruiker de mogelijkheid het programma per instructie, bestaande uit 1 of 2 machinecycli, te doorlopen. Na het verwerken van een instructie stopt de processor en geeft het adres van de volgende te verwerken instructie vrij op BUS en de onderste helft van poort 2 zoals aangegeven in figuur 3.13.
-~--- -P23 P22 P21 P20 DB7 DB6 DB5 DB4 DB3 DB2 OBI DBD
figuur 3.13: adres output gedurende de single step mode
De single step mode geeft op deze wijze de gebruiker de mogelijk-heid de volgorde van de instructie-executie te controleren en zo eventuele fouten in zijn programma te ontdekken. Wanneer de processor stilstaat is de I/O-informatie op BUS en de onderste helft van poort 2 niet beschikbaar. Deze I/O-informatie is aileen beschikbaar op de stijgende flank van ALE en kan dan, indien noodzakelijk, extern worden opgeslagen door van ALE gebruik te maken. Voor nadere informatie omtrent de te gebruiken schakeling wordt verwezen naar de MCS-48 User's Manual.
3.5.2 De External Access Mod~
Het aanbrengen van + 5 V op de EA-pin brengt de 8748 in de external access mode, waarin het interne geheugen niet bereikbaar is en alle instruc-ties uit een extern geheugen worden gehaald. In dit externe geheugen kunnen bijvoorbeeld testroutines worden opgeborgen voor het testen van de 8748 met bijbehorende schakeling. Ook kan men in dit externe geheugen het gebruikers-programma opslaan voor controle van het goed funktioneren van de 8748 EPROM. De gegevens over het aansluiten van het externe geheugen zijn terug te vinden in het User's Manual van de MCS-48-familie.
3.5·.3 Lezen van het programmageheugen
Het progammeergeheugen van de 8748 kan onafhankelijk van de
processor uitgelezen worden door geb~Jik te maken van de controle-mode. Deze
mode wordt ook gebruikt tijdens het programmeren van de EPROM.
De 8748 wordt in deze READ-mode gebracht door 23 V op de EA-pin en +5 V op de TO-pin aan te brengen. RESET moet gelijk zijn aan 0 V als er spanning op de EA-pin wordt aangebracht. Daarna wordt het adres van de te lezen locatie aangeboden aan BUS en de onderste helft van poort 2. Dit adres
wordt ingehaald op een.O-1 overgang:op RESET, even laterverschijnen de
mode
geadresseerde data op BUS. Voordat men deze READVverlaat moet RESET terugge-bracht worden naar 0 V. In figuur 3.14 worden de hierboven beschreven acties nogmaals weergegeven in een tijddiagram.
TO 8748 ONLY sv RESET Tl;tV(+23V) EA sv
(
><
BUS ADDRESS OATA sv(
P20-21 -.DDR£SSbestaan uit een of twee byte's, meer dan 70% is slechts een byte lang. Daarom kunnen alle instructies worden verwerkt in 1 of 2 machine-cycli, meer dan 50% omvat slechts een machine-cyclus. In deze paragraaf worden de mogelijkheden van de instructieset nader uitgewerkt, voor een gedetailleerde
beschrijving van de verschillende instructies wordt verwezen naar Bijlage I. 3.6.1 Data transport instructies
Het centrale punt van alle datatransporten is, zoals uit figuur 3.15 blijkt, de 8 bit's accumulator. In figuur 3.15 worden alle. data transport instructies weergegeven.
I
I 8748I
- - - '~ MOV ADD ANl ORl XRl XCH ADD MOV MOVP MOVPJ ANl ORl XRl ~OVX EXTERNAL ~ MEMORY , ....--=-BU::.::S'-'(;;::.8)_-.-/ AND L..---....,.,...---"""'7":----"""'7":---' PER1P~ERAlS1 - - - - _ - , _
- - - l
'I PROGRAM MEMORYDATA
I
MEMORY MOV I
I
(=dala) I WORKING REG I :I
I
MOVD ANlD ORlD EXPAND ER/w----==e:,:14:::..:) ::...1--'''-IfQ PORTS 4-7 --~--- -~.Tussen de 8 werkregisters van iedere registerbank en de accumu-lator is een direct data transport mogelijk, zowel de bron als de bestem-ming van de data worden in de betreffende instructies aangegeven. De overige locaties van het interne RAM geheugen worden gezien als datageheugen en in-direkt geadresseerd door RO of R1 van de actieve werkregisterbank. Data
transport van en naar het RAM-geheugen omvat een machinecyclus. Constanten uit het programmageheugen kunnen direct overgebracht worden naarde accumu-lator en de 8 werkregisters. Directe data transporten zijn ook mogelijk tussen de accumulator en de interne Timer/Event counter en tussen de accumulator en het programma status woord.
3.6.2 Accumulator instructies
Data uit de 2e byte van de instructie, uit het datageheugen of
uit de werkregisters kunnen met of zonder carry worden opgeteld bij de
accumu-lator. De genoemde bronnen kunnen ook een AND, OR of Exclusive OR-fu~~tie
uitvoeren met de accumulator. Data transporten zijn mogelijk tussen de accumulator en de werkregisters of het datageheugen. De twee woorden kunnen ook uitgewisseld worden in een enkele instructie.
Het is tevens mogelijk de 4 laagste bit's van de accumulator uit te wisselen tegen de 4 laagste bit's van een RAM locatie. Deze instructie vereenvoudigt, tezamen met een instructie die de 4 hoogste en de 4 laagste bit's van de accumulator omwisselt, het werken met 4 bit's woorden, zoals in BCD-code, aanzienlijk. Voor het verkrijgen van resultaten in BCD is een
Decimal Adjust inst~Jctie opgenomen, deze instructie zet het binaire
resul-taat in de accumulator om in BCD.
Verdere operaties die met de accumulatorinhoud kunnen worden ultge-voerd zijn: 1 verhogen of verlagen, gelijk aan 0 maken, complementeren en roteren naar links en rechts over 1 bit met of zonder carry.
3.6.3 Register instructies
De werkregisters worden ber~ikt via de accumulator of
Verder kunnen aIle werkregisters direct met 1 verhoogd of verlaagd worden. AIle werkregisters kunnen gebruikt worden voor het tellen van het aantal keren dat een programmalus wordt doorlopen door gebruik te maken van een instructie die de registerinhoud met een verlaagd en vervolgens een sprong uitvoert als de registerinhoud ongelijk aan 0 is.
Het gehele datageheugen, inclusief de werkregisters, kan worden bereikt d.m.v. indirecte instructies en iedere geheugenlocatie kan op deze wijze rechtstreeks met 1 verminderd worden.
3.6.4 Vlag instructies
Vier vlaggen in de 8748 ZlJn bereikbaar voor de gebn1iker nl. Carry, AuxilIary Carry, FO en F1. De eerste drie vlaggen maken deel uit
van het programma status woord en kunnen via de accumulator worden veranderd. Verder kunnen de Carry-, FO- en F1-vlaggen worden weggehaald of gecomplemen-teerd door aparte instructies.
3.6.5 Sprong-instructies
D.m.v. de niet conditionele sproneinstructie, die bestaat uit twee byte's, kunnen sprongen naar ieder adres in het interne programma-geheugen worden uitgevoerd. De conditionele spronginstructies testen eerst een bepaalde conditie in de machine of op de ingangen en voeren, afhankelijk van het testresultaat, al dan niet een sprong uit. De condities waarop kan worden gesprongen worden weergegeven in sectie 3.2.7. Conditionele sprongen
zijn aIleen mogelijk binnen de pagina (256 woorden) waar de programma
executie bezig is. De condities waarop gesprongen wordt zijn .- altijd
momentane waarden op het moment dat de spronginstructie wordt verwerkt. Naast bovengenoemde spronginstructies zijn er nog twee andere spronginstructies. De eerste instructie verlaagt de registerinhoud met en voert vervolgens een sprong uit indien deze inhoud ongelijk aan nul is. Deze sprong kan aIleen plaatsvinden binnen de pagina waar de processor op dat moment bezig is. De tweede spronginstructie is een enkel byte's indirec-te spronginstructie waarbij de accumulator de geheugenlocatie aanduidt waar het sprongadres zich bevindt.
3.6.6 Subroutine instructies
Subroutines worden aangeroepen door een CALL-instructie, deze kan ieder adres binnen het interne geheugen aanroepen. Twee verschillende return-instructies bepalen of de machine status al dan niet hersteld wordt na terugkeer uit de subroutine.
3.6.7 Timer/Event Counter instructies
De interne Timer/Event Counter kan worden geladen en gelezen door de accumulator onafhankelijk van het feit of de teller loopt of stilstaat. Er zijn twee verschillende startinstructies voor de teller nl. voor het starten van de Timer-mode en van de Event Counter mode. Er is een enkele instructie voor het stoppen van de teller. Daarnaast zijn er nog twee instructies die de Timer-interrupt al dan niet toestaan.
3.6.8 Controle instructies
M.b.v. twee instructies kan men aangeven of externe interrupts wel of niet zijn toegestaan. Verder zijn er vier geheugen bank selectie-instructies, twee daarvan bepalen welke registerbank actief is en de andere twee bepalen de programmageheugenbank. Als laatste is er een controle
instructie die CLK naar buiten brengt op pin TO. 3.6.9 Input/Output instructies
Alle I/O-poorten, P1, P2 en BUS, kunnen worden geladen en gelezen
door de acc~~ulator. Tevens kunnen alle poorten een AND- of OR-funktie
uit-voeren met direct in de instructie gespecificeerde maskers, het resultaat blijft op de poort. De drie interne poorten kunnen worden uitgebreid door 'de 4 bit expander BUS die bestaat uit de onderste helft van poort 2.
De expander BUS kan geladen en gelezen worden via de accumulator, tevens zijn er eigen AND en OR instructies.
Hoofdstuk 4: De Infrarood afstandsbediening
i.:.l
InleidingVoor het realiseren van een draadloze afstandsbediening komt zowel ultrasoon als infrarood als transportmedium voor informatie in aan-merking. Hier is echter gekozen voor infrarood omdat dit medium duidelijke voordelen biedt boven ultrasoon. Het eerste voordeel van infrarood is de grotere verbreidingssnelheid van de straling, waardoor geen storingen
op-treden t.g.v. interferentie, dopplereffect of ruimtereflecties. Verder hebben omgevingsgeluiden geen invloed op het infrarood-signaal. Door sterke lichtinvloeden kan de rei.kwijdte van de infraroodstraling verminderen, di t leidt echterniet tot storingen in de over te brengen informatie. Met optische middelen, zoals reflectoren en lenzen, kan het infrarood-signaal gebundeld worden om een gerichtere overdracht met een groter bereik te
ver-krijgen. Als laatste kan worden opgemerkt dat de snelheid van de inforn~tie
overdracht groter is door toepassing van infrarood.
In dit hoofdstuk wordt de infrarood-afstandsbediening nader beke-ken. Allereerst wordt in 4.2 nader ingegaan op de wijze van informatie-overdracht. Daarna wordt ingegaan op de zender en op de ontvanger. De hele infrarood-afstandsbedien1ng is gebaseerd op het IR 60 systeem van Siemens. Dit systeem bevat een aantal zenders en ontvangers waarmee verschillende afstandsbedieningen kunnen worden gerealiseerd.
4.2 De informatie-overdracht
Bij de overdracht van de. binaire informatie wordt gebruik gemaakt van Puls-Code-modulatie. Ieder bevel van de zender bestaat uit 6 informatie-bit's die in bifase-code worden uitgezonden. Dit houdt in dat ieder uitgezon-den bit voor de ene helft bestaat uit een infrarood impulspakket en voor de andere helft uit een paU!e. De bit-informatie ligt opgeborgen in de volgorde
van beide toestanden. De bifase-codering van een logische
"1"
en een logischeH
L
H
L
LOGISCHE 1 LOGISCHE 0 figuur 4.1: de bifase-coderingVoor het eerste informatie-bit wordt een start-bit uitgezonden om de ontvanger de ligging van de informatie-bit's in de tijd mede te delen. De waarde van het start-bit moet van te voren worden vastgelegd in de ont-vanger en biedt op deze wijze een extra onderscheidingsmogelijkheid voor de ontvanger. Op deze wijze is het mogelijk twee verschillende systemen met een
en dezelfde afstandsbediening te besturen. Aan de combinatie start-bit + 6
informatie-bit's gaat nog een voorsignaal vooraf. Dit signaal is bedoeld om de voorversterker in de ontvanger de mogelijkheid te geven zijn versterkings-factor in te stellen, zodat de ontvanger een signaal van constante grootte aangeboden krijgt, onafhankelijk van de onderlinge afstand tussen de zender en de ontvanger. In figuur 4.2 wordt het tijddiagram van de informatie-over-dracht met bifase-codering en toepassing van puls-code-modulatie weergegeven.
IvoorI ~tart : A : B C 0 E I F I signaal 1 0 0 I I 38 I 1 I I 1 I 0 I 1
~.VOI
-0
I~
I I I I figuur 4.2: de informatie-overdracht16 infraroodpulsen worden uitgezonden. Het infraroodsignaal wordt gemodu-leerd om aan de ontvangzijde het zendsignaal te kunnen onderscheiden van continue infrarood licht en storingen. Door het toepassen van puls-code-modulatie is de kans op storingen in de informatie-overdracht zeer gering.
In de meeste gevallen wordt een commando, bestaande uit een voor-signaal, een start-bit en zes informatie bit's, meerdere malen achter
elkaar uitg~zonden. Tussen de herhalingen van het commando moet de zender
een pauze houden van ongeveer 120 ms. Aan het einde van een serie
herha-lingen van een bepaald commando dient er altijd een slotco~mando te worden
uitgezonden. M.b.v. de zes corrmando bit's kunnen 64 corrmando's worden ge-vormd waarvan commando 111110 het slotcommando is. Bij gebrJik van verschil-lende start-bitwaarden dient men er rekening mee te houden dat het commando
111111 met start-bit 1 overeenkomt met commando 000000 met start-bit O. 4.3 De zender
De infrarood zender wordt opgebouwd uit de 8748 microcomputer, een puls-code-modulatieschakeling en een stuurschakeling voor de infrarood LEO's. Er wordt hier geen gebruik gemaakt van een van de zenders van de IR 60 serie omdat deze niet op eenvoudige wijze door de 8748 kan worden gestuurd. Deze zenders zlJn nl. bedoeld om een bevel, gegeven vanuit een matrix van schakelaars, om te zetten in een 6 bit's informatie-code, die daarna in bifase-code en puls gemoduleerd wordt uitgezonden. In de 8748 microcomputer is deze 6 bit's informatiecode echter aanwezig op het moment dat de zender moet worden aangestuurd. Het omzetten van deze informatie naar een matrixvorm zou onnodig werk betekenen. Bovendien zou dit een gecompli-ceerde software en een zware belasting van de I/O-lijnen van de 8748 inhou-den. Zoals hieronder zal blijken is het tijddiagram van de informatie-overdracht, weergegeven in figuur 4.2, d.m.v. software vrij goed te realiseren. Alleen de puls-code-modulatie en de stuurschakeling voor de infrarood LEO's moeten extern worden gerealiseerd.
tal n zo gekozen ~~ordt dat de uitgangsfrequentie binnen de gegeven marge ligt. De waarde die het dichtst bij de 35 KHz komt wordt gekozen om een zo hoog mogelijke seinsnelheid te verkrijgen. De uitgang van de n-deler wordt toegevoerd aan een ingang van een AND-poort. Aan de andere ingang van de AND-poort wordt het infraroodcommando, bestaande uit een voorsignaal, een start-bit en 6 informatie bit's, aangeboden vanuit de 8748. De hierboven beschreven configuratie wordt in figuur 4.3 aangegeven.
infrarood commando _ r
-
-~. n-deler ... naar stuurschakeling figuur 4.3: de puls-code-modulatieschakelingOmdat de modulatiefrequentie is afgeleid van de machineklok ALE bestaat er een direkt verband tussen de duur van een machinecyclus en de periodetijd T van de modulatiefrequentie. Er geldt nl. dat T gelijk is aan de lengte van n machinecycli. Tijdens het aansturen van de zender moet er
om de 32 T sec (= 32 n machinecyclil een nieuw bit worden uitgezonden.
Vanwege de bifase-codering moet dit bit 16 T sec (= 16 n machinecycli) later
worden geinverteerd." Beide operaties, zowel het uitsturen van een bit als het inverteren daarna, worden door de software van de 8748 uitgevoerd. Uit het bovenstaande blijkt dat de processor om de 16 T sec een outputinstructie, bestaande uit 2 machinecycli, moet verwerken tijdens een zendcyclus. Deze outputinstructie stuurt de I/O pin aan die verbonden is met een van de ingangen van de AND-poort. Tussen 2 outputinstructies dienen nu (16n-2l machinecycli plaats te vinden, dit wordt gerealiseerd door het verwerken van een aantal instructies.
Dit kunnen instructies zijn voor het voorbereiden van de nieuwe output of een aantal instructies die eenwachtlus vormen. In ieder geval wordt op deze wijze de tijdsduur 16 T sec zeer nauwkeurig gerealiseerd. Voor de exacte weergave van de software voor de zender wordt verwezen naar de programmabeschrijving in .hoofdstuk 6 .
. De uitgang van de AND-poort bevat het correcte zendsignaal en '...rordt verbonden met de stuurschakeling van de infrarood LEO's. Deze
schakeling wordt beschreven in hoofdstuk
5.
Als infrarood LED's worden deLD 271 GaAs LED's van Siemens gebruikt, deze LED's worden in alle IR 60 systemen toegepast.
4.4 De ontvanger
Iedere ontvanger is opgebouwd uit een voorversterker met foto-diode, een SAB 3271 ontvanger en een selectieschakeling. Alle delen, behalve
de selectieschakeling, zijn a~Aomstiguit het IR 60 systeem en worden
hieronder beschreven. 4.4.1 De voorversterker
De complete voorversterker met fotodiode is in een vaste behui-zing beschikbaar, wat zeer handig is bij inbouw. In figuur 4.4 worden een aantal behuizingen weergegeven, de twee rechtse behuizingen hebben een lens voor de fotodiode.
~~.';~i't1"
~·l.~~
l
~~
..
,-1 .~- ~.~
de zender te verplaatsen zonder daarbij het risico te lopen de ontvanger op te blazen. Door begrenzing van de ingangssignalen op 1 Vtt en een regel-omvang van 77 dB kan de voorversterker infraroodsignalen met een onderlinge verschilfactor van 105 zonder problemen verwerken. De tijdsduur voor het
uitzenden van een infrarood commando bedraagt ongeveer
9
ms. Gedurende dezetijd mag men de afstand tussen zender en ontvanger als constant beschouwen. Daarom is het voldoende de voorversterker een maal per infrarood commando in te stellen. Een bandbreedte van ongeveer 8 KHz maakt enerzijds een
voorselectie van storingen mogelijk en zorgt anderzijds voor een vervormings-arme impulsversterking.
Alle voorversterkers bevatten een, met het TDA 4050 Ie opge-bouwde, selectieve versterker die een grote versterkingsfactor heeft en oversturingsvast is. Aan de voorversterkeringang wordt de pulsgemoduleerde
infraroodstraling opgevaD~en door de fotodiode BP 104. In serie met de
fotodiode staat een dempende, afgestemde parallelresonantiekring. Deze kring wordt via een emittervolger aan de ingang van de TDA 4050 gekoppeld.
De TDA 4050 bevat 3 in cascade geschakelde versterkers, waarvan de eerste geregeld wordt. De derde, een operationele versterker, wordt ver-bonden met een dubbel T-filter zodat een actief filter ontstaat die een constante versterking garandeert. Het uitgangssignaal van de TDA 4050 wordt via een Schmitt-trigger aan de SAB 3271 toegevoerd.
4.4.2 De SAB 3271 ontvanger
De SAB 3271 ontvanger bestaat uit een ontvanggedeelte, een schuif-register met een serie uitgang en zes paralleluitgangen, een start-bit
in/uitgang, twee flip-flopuitgangen, een schakeling voor single- en repeat-enable-signalen en een schakeling voor de paralleluitgangen. Het blokschema van de SAB 3271 wordt in figuur 4.5 weergegeven.
DLER DLES DATA 1
-RSIG~
I I CL~---
I ! , Q,SU QF Q( Qo Qc a6 0.. ~---../-_._----~ RS- FlIpFlop -Ausgang Wechsel- Flip-Flop-Ausgang Parallel- Ausgangefiguur 4.5: het blokschema van de SAB 3271
Het ontvangstgedeelte controleert het in bifase-code gezonden infrarood commando bestaande uit een voorsignaal, een start-bit en 6 informatiebit's. Beide start-bitwaarden worden door het ontvangstgedeelte geaccepteerd. Voor een infrarood commando met start-bit 0 moet de start-bit aansluiting Q1SU laag en voor start-bit 1 hoog gemaakt worden. Tussen het voorsignaal en het start-bit wordt een stilte-test van 64 T sec uitgevoerd. Daarna volgt het inlezen en controleren van het start-bit en de zes infor-matiebit's. Na een tweede stilte-test van 150 T sec wordt begonnen aan de uitgifte van de informatiecode. Tijdens deuitgifte is de infrarood ingang gesperd om onderbrekingen door stoorpulsen te voorkomen.
Na het ontvangen van het eerste infrarood commando wordt
aller-eerst de informatie-code naar de paralleluitgangen Q
A tim QF gestuurd. Deze
paralleluitgangen blijven, ook na ontvangen van herhalingen van het comman-do, in dezelfde toestand. Pas na het ontvangen van het slotbevel worden de
uitgangen Q
A tim QF weer laag getrokken.
Na de paralleluitgifte volgt een serie uitgifte van de informa-tiecode via de uitgang DATA. Tijdens de serie uitgifte worden beide enable-uitgangen DLES en DLER hoog gemaakt. De uitgang DLES (Single) wordt alleen na het eerste bevel hoog en blijft ook bij het slotbevel laag. De uitgang DLER (Repeat) wordt bij iedere herhaling van het commando en bij het slot-bevel opnieuw hoog tijdens de serie uitgifte. Op de DATA-uitgang wordt na iedere herhaling van het infrarood commando de informatiecode in serie
uitgegeven, voorafgegaan door een Leading-bit LB
=
1. Na het ontvangenvan het slotbevel wordt deze operatie gestopt. In figuur 4.6 wordt een gedetailleerd tijddiagram van de serie uitgifte weergegeven.
-L H l L DATA I A 8 I c D
I
E ,8/<Z;
, OLE ~---.Ji-! ---,---..,..---'---:----,l-, DLERt----'
figuur 4.6: tijddiagram van de serie uitgifte van de commando-code De klok CL is de uitgang van de interne oscillator van de SAB 3271, die m.b.v. een externe LC-kring wordt ingesteld op twee maal de modulatiefrequentie van de zender. Hoe dit moet gebeuren wordt aange-geven in figuur 4.7.
Een wissel-flip-flopuitgang wisselt bij ontvangst van een bepaald infrarood commando van toe stand en blijft hierin totdat dat bepaalde
commando opnieuw wordt ontvangen. De toestandsverandering treedt niet op tijdens herhalingen van dat commando voor het slotbevel. De
wissel-flip-flopuitgangen Q2 en Q
3 reageren resp. op commando 34 (100010) en commando
35 (100011). Uitgang Q1SU kan ook als impulsuitgang worden gebruikt, bij
ontvangst van commando 33 (100001) wordt er op Q1SU een puIs gegenereerd.
De commando's 33, 34 en 35 worden bij ontvangst niet uitgegevenop de paralleluitgangen.
In figuur 4.8 zlJn de bovengenoemde acties nogmaals samenge-bracht in een tijddiagram.
L 13.Befehl ISch\unbefehl \
,
r---,lllillliI.--~'~ I I I . ~ ! I t\' I i . Befehl I2. Befehl II \ \ RSIG HL----...
-I I a,-Q, H :I L OLER HLn
n
OLES dn
figuur 4.8: tijddiagra~van de infrarood signalen en de uitgangssignalen
Wanneer in het infrarood signaal een storing optreedt wordt het
gestoorde bevel niet erkend. 20 kan het voorkomen dat er tijdens een aantal
herhalingen van een bevel een commando wegvalt. Bij het inschakelen va~ de
voedingsspaning van de SAB 3271 worden aIle uitgangen laag getrokken. 4.4.3 De selectieschakeling
De selectieschakeling zorgt ervoor dat de ontvanger slechts op een commando code reageert.Hoe deze schakeling is opgebouwd wordt weerge-geven in figuur 4.9.
L::::
I
E.<. OR~
Q D Q E Q F ~ E:x. OR t-I --l - I AI
Ex. OR I NOR -B ~ instel-C I poort baar D I Ex. ORI
....--E -F I Ex. OR figuur 4.9: de selectieschakelingIn deze selectieschakeling wordt de ingestelde code vergeleken met de ontvangen code. Dit gebeurt d.m.v. een 6-tal Exclusive OR puorten, waarin de codes bit voor bit worden vergeleken; Als beide codes 0vereen-stemmen zijn de uitgangen van aIle Exclusive OR poorten gelijk aan O.
Deze uitgangen worden toegevoerd a~~ een NOR-poort die een 1 aan de
uitgang geeft als aIle ingangswaarden
a
zijn. Dit is het geval als deingestelde en ontvangen code gelijk zijn.
De codes die kunnen worden ingesteld in de ontvanger worden aangegeven in par. 6.4.