home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-03-23 | 72.7 KB | 1,316 lines |
- tHIS DOCUMENT COVERS ALL PROGRAMMING INFORMATION ABOUT rOCKWELL r6522
- vERSATILE iNTERFACE aDAPTER (via) CHIP USED IN MANY cOMMODORE DEVICES.
- fIGURES AND TABLES IN THIS FILE WERE DRAWN WITH +, -, {$7c} CHARACTERS.
- fOR CLEAR DESCRIPTION, SOME OF THE FIGURES ARE BIT WIDER THAN 80 CHARACTERS.
-
- tHIS FILE WAS CREATED FROM SCANNINGS BY fRANK kONTROS <JENO@KONTR.UZHGOROD.UA>
- mANY THANKS FOR CORRECTIONS TO wOLFGANG lORENZ <PC64@COMPUSERVE.COM>
-
- iF YOU HAVE ANY QUESTIONS, COMMENTS OR SUGGESTIONS CONCERNING THIS FILE OR
- 6522 CHIP, PLEASE CONTACT ME (fRANK).
-
-
- ------------------------------------------------------------------------------
- r6522
- versatile interface
- adapter
- ------------------------------------------------------------------------------
-
-
- description
-
- tHE r6522 vERSATILE iNTERFACE aDAPTER (via) IS A VERY FLEXIBLE i/o CONTROL
- DEVICE. iN ADDITION, THIS DEVICE CONTAINS A PAIR OF VERY POWERFUL 16-BIT
- INTERVAL TIMERS, A SERIAL-TO-PARALLEL/PARALLEL-TO-SERIAL SHIFT REGISTER AND
- INPUT DATA LATCHING ON THE PERIPHERAL PORTS. eXPANDED HANDSHAKING CAPABILITY
- ALLOWS CONTROL OF BIDIRECTIONAL DATA TRANSFERS BETWEEN via'S IN MULTIPLE
- PROCESSOR SYSTEMS.
-
- cONTROL OF PERIPHERAL DEVICES IS HANDLED PRIMARILY THROUGH TWO 8-BIT
- BIDIRECTIONAL PORTS. eACH LINE CAN BE PROGRAMMED AS EITHER AN INPUT OR AN
- OUTPUT. sEVERAL PERIPHERAL i/o LINES CAN BE CONTROLLED DIRECTLY FROM THE
- INTERVAL TIMERS FOR GENERATING PROGRAMMABLE FREQUENCY SQUARE WAVES OR FOR
- COUNTING EXTERNALLY GENERATED PULSES. tO FACILITATE CONTROL OF THE MANY
- POWERFUL FEATURES OF THIS CHIP, AN INTERRUPT FLAG REGISTER, AN INTERRUPT
- ENABLE REGISTER AND A PAIR OF FUNCTION CONTROL REGISTERS ARE PROVIDED.
-
-
- features
-
- O tWO 8-BIT BIDIRECTIONAL i/o PORTS
- O tWO 16-BIT PROGRAMMABLE TIMER/COUNTERS
- O sERIAL DATA PORT
- O ttl COMPATIBLE
- O cmos COMPATIBLE PERIPHERAL CONTROL LINES
- O eXPANDED "HANDSHAKE" CAPABILITY ALLOWS POSITIVE CONTROL
- DATA TRANSFERS BETWEEN PROCESSOR AND PERIPHERAL DEVICES
- O lATCHED OUTPUT AND INPUT REGISTERS
- O 1 mhZ AND 2 mHZ OPERATION
- O sINGLE +5v POWER SUPPLY
-
-
- ordering information +---------------+
- vSS ={$7c} 1 40 {$7c}= ca1
- pa0 ={$7c} 2 39 {$7c}= ca2
- pART nUMBER: pa1 ={$7c} 3 38 {$7c}= rs0
- r6522 _ _ _ pa2 ={$7c} 4 37 {$7c}= rs1
- {$7c} {$7c} {$7c} pa3 ={$7c} 5 36 {$7c}= rs2
- {$7c} {$7c} {$7c} pa4 ={$7c} 6 35 {$7c}= rs3
- {$7c} {$7c} {$7c} pa5 ={$7c} 7 34 {$7c}= res
- {$7c} {$7c} {$7c} pa6 ={$7c} 8 33 {$7c}= d0
- {$7c} {$7c} {$7c} pa7 ={$7c} 9 32 {$7c}= d1
- {$7c} {$7c} +------ tEMPERATURE rANGE pb0 ={$7c} 10 31 {$7c}= d2
- {$7c} {$7c} bLANK = 40{$f8}c TO +70{$f8}c pb1 ={$7c} 11 30 {$7c}= d3
- {$7c} {$7c} e = 40{$f8}c TO +85{$f8}c pb2 ={$7c} 12 29 {$7c}= d4
- {$7c} {$7c} pb3 ={$7c} 13 28 {$7c}= d5
- {$7c} {$7c} pb4 ={$7c} 14 27 {$7c}= d6
- {$7c} +-------- pACKAGE pb5 ={$7c} 15 26 {$7c}= d7
- {$7c} c = cERAMIC pb6 ={$7c} 16 25 {$7c}= 02
- {$7c} p = pLASTIC pb7 ={$7c} 17 24 {$7c}= cs1
- {$7c} cb1 ={$7c} 18 23 {$7c}= cs2
- {$7c} cb2 ={$7c} 19 22 {$7c}= r/w
- +---------- fREQUENCY vCC ={$7c} 20 21 {$7c}= irq
- nO lETTER = 1 mhZ +---------------+
- a = 2 mhZ r6522 pIN cONFIGURATION
-
-
- interface signals
-
- +---------------+
- / {$7c} {$7c} \
- {$7c} /-------\ {$7c} {$7c} /-------\ {$7c}
- m b {$7c} d0-d7 < 8 >{$7c} {$7c}< (8) > pa0-pa7 {$7c}
- i u {$7c} \-------/ {$7c} {$7c} \-------/ {$7c}
- c s {$7c} {$7c} {$7c} {$7c} p i
- r {$7c} 02 ---------->{$7c} {$7c}<---------- ca1 {$7c} e n
- r o i {$7c} _ {$7c} {$7c} {$7c} r t
- 6 p n {$7c} r/w ---------->{$7c} r6522 {$7c}<---------> ca2 {$7c} i e
- 5 r t < ___ 2 {$7c} via {$7c} > p r
- 0 o e {$7c} cs1,cs2 -----/---->{$7c} {$7c}<---------> cb1 {$7c} h f
- 0 c r {$7c} 4 {$7c} {$7c} {$7c} e a
- e f {$7c} rs0-rs3 -----/---->{$7c} {$7c}<---------> cb2 {$7c} r c
- s a {$7c} ___ {$7c} {$7c} {$7c} a e
- s c {$7c} res ---------->{$7c} {$7c} /-------\ {$7c} l
- o e {$7c} ___ {$7c} {$7c}< (8) > pb0-pb7 {$7c}
- r {$7c} irq ---------->{$7c} {$7c} \-------/ {$7c}
- \ {$7c} {$7c} /
- +---------------+
-
- fIGURE 1. r6522 via INTERFACE sIGNALS
-
- ___
- reset (res)
- ___
- a LOW RESET (res) INPUT CLEARS ALL r6522 INTERNAL REGISTERS TO LOGIC 0
- (EXCEPT t1 AND t2 LATCHES AND COUNTERS AND THE sHIFT rEGISTER). tHIS
- PLACES ALL PERIPHERAL INTERFACE LINES IN THE INPUT STATE, DISABLES THE
- TIMERS, SHIFT REGISTER, ETC. AND DISABLES INTERRUPTING FROM THE CHIP.
-
- input clock (phase 2)
-
- tHE INPUT CLOCK IS THE SYSTEM 02 CLOCK AND TRIGGERS ALL DATA TRANSFERS
- BETWEEN PROCESSOR BUS AND THE r6522.
- _
- read/write (r/w)
-
- tHE DIRECTION OF THE DATA TRANSFERS BETWEEN THE r6522 AND THE SYSTEM PROCESSOR
- IS CONTROLLED BY THE r/w LINE IN CONJUNCTION WITH THE cs1 AND cs2 INPUTS. wHEN
- r/w IS LOW (WRITE OPERATION), AND THE r6522 IS SELECTED, DATA IS TRANSFERRED
- FROM THE PROCESSOR BUS INTO THE SELECTED r6522 REGISTER. wHEN r/w IS HIGH
- (READ OPERATION), AND THE r6522 IS SELECTED, DATA IS TRANSFERRED FROM THE
- SELECTED r6522 REGISTER TO THE PROCESSOR BUS.
-
- data bus (d0-d7)
-
- tHE EIGHT BIDIRECTIONAL DATA BUS LINES TRANSFER DATA BETWEEN THE r6522 AND
- THE SYSTEM PROCESSOR BUS. dURING READ CYCLES, THE CONTENTS OF THE SELECTED
- r6522 REGISTER ARE PLACED ON THE DATA BUS LINES. dURING WRITE CYCLES, THESE
- LINES ARE HIGH-IMPEDANCE INPUTS AND DATA IS TRANSFERRED FROM THE PROCESSOR
- BUS INTO THE SELECTED REGISTER. wHEN THE r6522 IS NOT SELECTED, THE DATA
- BUS LINES ARE HIGH IMPEDANCE.
- ___
- chip selects (cs1, cs2)
-
- tHE TWO CHIP SELECT INPUTS ARE NORMALLY CONNECTED TO PROCESSOR ADDRESS LINES
- EITHER DIRECTLY OR THROUGH DECODING. tHE SELECTED r6522 REGISTER IS ACCESSED
- WHEN cs1 IS HIGH AND cs2 IS LOW.
-
- register selects (rs0-rs3)
-
- tHE CODING OF THE FOUR rEGISTER sELECT INPUTS SELECT ONE OF THE 16 INTERNAL
- REGISTERS OF THE r6522, AS SHOWN IN tABLE 1.
-
-
- tABLE 1. r6522 rEGISTER aDDRESSING
-
- +----+---------------+---------+---------------------------------------------+
- {$7c}rEG.{$7c} rs cODING {$7c}rEGISTER {$7c} rEGISTER/dESCRIPTION {$7c}
- {$7c} # +---+---+---+---+ dESIG. +----------------------+----------------------+
- {$7c} {$7c}rs3{$7c}rs2{$7c}rs1{$7c}rs0{$7c} {$7c} wRITE (r/w = l) {$7c} rEAD (r/w = h) {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} 0 {$7c} 0 {$7c} 0 {$7c} 0 {$7c} 0 {$7c} orb/irb {$7c} oUTPUT rEGISTER b {$7c} iNPUT rEGISTER b {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 0 {$7c} 1 {$7c} ora/ira {$7c} oUTPUT rEGISTER a {$7c} iNPUT rEGISTER a {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} 2 {$7c} 0 {$7c} 0 {$7c} 1 {$7c} 0 {$7c} ddrb {$7c} dATA dIRECTION rEGISTER b {$7c}
- +----+---+---+---+---+---------+---------------------------------------------+
- {$7c} 3 {$7c} 0 {$7c} 0 {$7c} 1 {$7c} 1 {$7c} ddra {$7c} dATA dIRECTION rEGISTER a {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} 4 {$7c} 0 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} t1c-l {$7c} t1 lOW-oRDER lATCHES {$7c} t1 lOW-oRDER cOUNTER {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} 5 {$7c} 0 {$7c} 1 {$7c} 0 {$7c} 1 {$7c} t1c-h {$7c} t1 hIGH-oRDER cOUNTER{$7c} t1 hIGH-oRDER cOUNTER{$7c}
- +----+---+---+---+---+---------+---------------------------------------------+
- {$7c} 6 {$7c} 0 {$7c} 1 {$7c} 1 {$7c} 0 {$7c} t1l-l {$7c} t1 lOW-oRDER lATCHES {$7c}
- +----+---+---+---+---+---------+---------------------------------------------+
- {$7c} 7 {$7c} 0 {$7c} 1 {$7c} 1 {$7c} 1 {$7c} t1l-h {$7c} t1 hIGH-oRDER lATCHES {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} 8 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 0 {$7c} t2c-l {$7c} t2 lOW-oRDER lATCHES {$7c} t2 lOW-oRDER cOUNTER {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} 9 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 1 {$7c} t2c-h {$7c} t2 hIGH-oRDER cOUNTER {$7c}
- +----+---+---+---+---+---------+---------------------------------------------+
- {$7c} 10 {$7c} 1 {$7c} 0 {$7c} 1 {$7c} 0 {$7c} sr {$7c} sHIFT rEGISTER {$7c}
- +----+---+---+---+---+---------+---------------------------------------------+
- {$7c} 11 {$7c} 1 {$7c} 0 {$7c} 1 {$7c} 1 {$7c} acr {$7c} aUXILIARY cONTROL rEGISTER {$7c}
- +----+---+---+---+---+---------+---------------------------------------------+
- {$7c} 12 {$7c} 1 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} pcr {$7c} pERIPHERAL cONTROL rEGISTER {$7c}
- +----+---+---+---+---+---------+---------------------------------------------+
- {$7c} 13 {$7c} 1 {$7c} 1 {$7c} 0 {$7c} 1 {$7c} ifr {$7c} iNTERRUPT fLAG rEGISTER {$7c}
- +----+---+---+---+---+---------+---------------------------------------------+
- {$7c} 14 {$7c} 1 {$7c} 1 {$7c} 1 {$7c} 0 {$7c} ier {$7c} iNTERRUPT eNABLE rEGISTER {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} 15 {$7c} 1 {$7c} 1 {$7c} 1 {$7c} 1 {$7c} ora/ira {$7c} oUTPUT rEGISTER a* {$7c} iNPUT rEGISTER a* {$7c}
- +----+---+---+---+---+---------+----------------------+----------------------+
- {$7c} note: * sAME AS rEGISTER 1 EXCEPT NO HANDSHAKE. {$7c}
- +----------------------------------------------------------------------------+
-
- ___
- interrupt request (irq)
-
- tHE iNTERRUPT rEQUEST OUTPUT GOES LOW WHENEVER AN INTERNAL INTERRUPT FLAG IS
- SET AND THE CORRESPONDING INTERRUPT ENABLE BIT IS A LOGIC 1. tHIS OUTPUT IS
- OPEN-DRAIN TO ALLOW THE INTERRUPT REQUEST SIGNAL TO BE WIRE-or'ED WITH OTHER
- EQUIVALENT SIGNALS IN THE SYSTEM.
-
- peripheral port a (pa0-pa7)
-
- pORT a CONSISTS OF EIGHT LINES WHICH CAN BE INDIVIDUALLY PROGRAMMED TO ACT
- AS INPUTS OR OUTPUTS UNDER CONTROL OF A dATA dIRECTION rEGISTER a. tHE
- POLARITY OF OUTPUT PINS IS CONTROLLED BY AN oUTPUT rEGISTER AND INPUT DATA
- MAY BE LATCHED INTO AN INTERNAL REGISTER UNDER CONTROL OF THE ca1 LINE. aLL
- OF THESE MODES OF OPERATION ARE CONTROLLED BY THE SYSTEM PROCESSOR THROUGH
- THE INTERNAL CONTROL REGISTERS. tHESE LINES REPRESENTS ONE STANDARD ttl
- LOAD IN THE INPUT MODE AND WILL DRIVE ONE STANDARD ttl LOAD IN THE OUTPUT
- MODE. fIGURE 2 ILLUSTRATES THE OUTPUT CIRCUIT.
-
-
- +5v
- O
- {$7c}
- >
- <
- >
- <
- {$7c}
- *-----*---> pa0-pa7,
- {$7c} {$7c} ca2
- +-----+ +--+ {$7c}
- i/o control ----+ {$7c} {$7c}{$7c} {$7c}
- {$7c} nor {$7c}O----+{$7c} {$7c}
- output data ----+ {$7c} {$7c}{$7c} {$7c}
- +-----+ +--+ {$7c}
- __{$7c}__ {$7c}
- --- {$7c}
- {$7e} {$7c}
- input data <-------------------------+
-
- fIGURE 2. pORT a oUTPUT cIRCUIT
-
-
- port a control lines (ca1,ca2)
-
- tHE TWO pORT a CONTROL LINES ACT AS INTERRUPT INPUTS OR AS HANDSHAKE
- OUTPUTS. eACH LINE CONTROLS AN INTERNAL INTERRUPT FLAG WITH A CORRESPONDING
- INTERRUPT ENABLE BIT. iN ADDITION, ca1 CONTROLS THE LATCHING OF DATA ON
- pORT a INPUT LINES. ca1 IS A HIGH-IMPEDANCE INPUT ONLY WHILE ca2 REPRESENTS
- ONE STANDARD ttl LOAD IN THE INPUT MODE. ca2 WILL DRIVE ONE STANDARD ttl
- LOAD IN THE OUTPUT MODE.
-
- port b (pb0-pb7)
-
- pERIPHERAL pORT b CONSISTS OF EIGHT BI-DIRECTIONAL LINES WHICH ARE
- CONTROLLED BY AN OUTPUT REGISTER AND A DATA DIRECTION REGISTER IN MUCH THE
- SAME MANNER AS THE pORT a. iN ADDITION, THE POLARITY OF THE pb7 OUTPUT
- SIGNAL CAN BE CONTROLLED BY ONE OF THE INTERVAL TIMERS WHILE THE SECOND
- TIMER CAN BE PROGRAMMED TO COUNT PULSES ON THE pb6 PIN. pORT b LINES
- REPRESENT ONE STANDARD ttl LOAD IN THE INPUT MODE AND WILL DRIVE ONE
- STANDARD ttl LOAD IN THE OUTPUT MODE. iN ADDITION, THEY ARE CAPABLE OF
- SOURCING 1.0 Ma AT 1.5 vDC IN THE OUTPUT MODE TO ALLOW THE OUTPUTS TO
- DIRECTLY DRIVE dARLINGTON TRANSISTOR CIRCUITS. fIGURE 3 IS THE CIRCUIT
- SCHEMATIC.
-
- +5v
- O
- {$7c}
- *------+
- {$7c} {$7c}
- input +-----+ +--+ >
- output -------------*---+ {$7c} {$7c}{$7c} <
- control {$7c}\ {$7c} {$7c} nor {$7c}O----+{$7c} >
- +--O{$7c} >---+---+ {$7c} {$7c}{$7c} <
- {$7c} {$7c}/ {$7c} +-----+ +--+ {$7c}
- {$7c} {$7c} {$7c} {$7c}
- {$7c} {$7c} *------*---> pb0-pb7,
- {$7c} {$7c} {$7c} {$7c} cb1,cb2
- {$7c} {$7c} +-----+ +--+ {$7c}
- {$7c} +---+ {$7c} {$7c}{$7c} {$7c}
- output {$7c} {$7c} nor {$7c}O----+{$7c} {$7c}
- data ---*-------------+ {$7c} {$7c}{$7c} {$7c}
- +-----+ +--+ {$7c}
- __{$7c}__ {$7c}
- --- {$7c}
- {$7e} {$7c}
- input data <---------------------------------------+
-
- fIGURE 3. pORT b oUTPUT cIRCUIT
-
-
- port b control lines (cb1,cb2)
-
- tHE pORT b CONTROL LINES ACT AS INTERRUPT INPUTS OR AS HANDSHAKE OUTPUTS.
- aS WITH ca1 AND ca2, EACH LINE CONTROLS AN INTERRUPT FLAG WITH A
- CORRESPONDING INTERRUPT ENABLE BIT. iN ADDITION, THESE LINES ACT AS A
- SERIAL PORT UNDER CONTROL OF THE sHIFT rEGISTER. tHESE LINES REPRESENT ONE
- STANDARD ttl LOAD IN THE INPUT MODE AND WILL DRIVE ONE STANDARD ttl LOAD IN
- THE OUTPUT MODE. cb2 CAN ALSO DRIVE A dARLINGTON TRANSISTOR CIRCUIT;
- HOWEVER, cb1 CANNOT.
-
-
- functional description
-
- tHE INTERNAL ORGANIZATION OF THE r6522 via IS ILLUSTRATED IN fIGURE 4.
-
-
- interrupt ___
- control +----------------------------------> irq
- +------------+ {$7c} +-----------+ +-------+
- {$7c} flags {$7c} {$7c} {$7c}input latch{$7c} {$7c} {$7c}
- {$7c} (ifr) {$7c} {$7c} {$7c} (ira) {$7c} {$7c} {$7c} p
- +--\+------------+ {$7c} +-----------+ {$7c} {$7c} o
- {$7c} +/{$7c} enable +-+ +--\{$7c} output {$7c}/--\{$7c}buffers{$7c}/--\ r
- +-------+ {$7c} {$7c} {$7c} (ier) {$7c} {$7c} +/{$7c} (ora) {$7c}\--/{$7c} (pa) {$7c}\--/ t
- {$7c} {$7c} {$7c} {$7c} +------------+ {$7c} {$7c} +-----------+ {$7c} {$7c}
- data /--\{$7c} data +-+ +-------------------+ {$7c} {$7c} data dir {$7c} {$7c} {$7c} a
- bus \--/{$7c} bus +-+ +-------------------+ {$7c} {$7c} (ddra) {$7c} {$7c} {$7c}
- {$7c}buffers{$7c} {$7c} {$7c} +------------+ {$7c} {$7c} +-----------+ +-------+
- {$7c} {$7c} {$7c} {$7c} {$7c} peripheral {$7c} {$7c} {$7c}port a register
- +-------+ {$7c} {$7c} {$7c} (pcr) {$7c} {$7c} {$7c}
- {$7c} +\+------------+ {$7c} {$7c} +-----------+<--------------- ca1
- {$7c} +/{$7c} auxiliary {$7c} {$7c} +\{$7c} port a {$7c}<--------------> ca2
- {$7c} {$7c} {$7c} (acr) {$7c} {$7c} +/+-----------+
- {$7c} {$7c} +------------+ {$7c} {$7c} {$7c} port b {$7c}<--------+
- {$7c} {$7c} function {$7c} {$7c} +-----------+<------+ {$7c}
- {$7c} {$7c} control {$7c} {$7c} handshake {$7c} {$7c}
- {$7c} {$7c} +-------+-------+ {$7c} {$7c} control {$7c} {$7c}
- ___ +-------+ {$7c} {$7c} {$7c} latch {$7c} latch {$7c} {$7c} {$7c} +-----------+ {$7c} {$7c}
- res ---->{$7c} {$7c} {$7c} {$7c} {$7c}(t1l-h){$7c}(t1l-l){$7c} {$7c} +\{$7c} shift reg {$7c}<------+-*-----> cb1
- _ {$7c} {$7c} {$7c} +\+-------+-------+ {$7c} +/{$7c} (sr) {$7c}<------*-------> cb2
- r/w ---->{$7c} {$7c} {$7c} +/{$7c}counter{$7c}counter{$7c} {$7c} {$7c} +-----------+
- 02 ---->{$7c} {$7c} {$7c} {$7c} {$7c}(t1c-h){$7c}(t1c-l){$7c} {$7c} {$7c}
- ___ {$7c} chip {$7c} {$7c} {$7c} +-------+-------+ {$7c} {$7c}port b register
- cs2 ---->{$7c} access{$7c} {$7c} {$7c} timer 1 {$7c} {$7c} +-----------+ +-------+
- cs1 ---->{$7c}control{$7c} {$7c} {$7c} +-------+ {$7c} {$7c} {$7c}input latch{$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} latch {$7c} {$7c} {$7c} {$7c} (irb) {$7c} {$7c} {$7c} p
- rs0 ---->{$7c} {$7c} {$7c} {$7c} {$7c}(t2l-l){$7c} {$7c} {$7c} +-----------+ {$7c} {$7c} o
- rs1 ---->{$7c} {$7c} {$7c} {$7c} +-------+-------+ {$7c} +\{$7c} output {$7c}/--\{$7c}buffers{$7c}/--\ r
- rs2 ---->{$7c} {$7c} {$7c} +\{$7c}counter{$7c}counter{$7c} +--/{$7c} (orb) {$7c}\--/{$7c} (pb) {$7c}\--/ t
- rs3 ---->{$7c} {$7c} +--/{$7c}(t2c-h){$7c}(t2c-l){$7c} +-----------+ {$7c} {$7c}
- +-------+ +-------+-------+ {$7c} data dir {$7c} {$7c} {$7c} b
- timer 2 {$7c} (ddrb) {$7c} {$7c} {$7c}
- +-----------+ +-------+
-
- fIGURE 4. r6522 via bLOCK dIAGRAM
-
-
- port a and port b operation
-
- tHE r6522 via HAS TWO 8-BIT BIDIRECTIONAL i/o PORTS (pORT a AND pORT b)
- AND EACH PORT HAS TWO ASSOCIATED CONTROL LINES.
-
- eACH 8-BIT PERIPHERAL PORT HAS A dATA dIRECTION rEGISTER (ddra, ddrb) FOR
- SPECIFYING WHETHER THE PERIPHERAL PINS ARE TO ACT AS INPUTS OR OUTPUTS. a 0
- IN A BIT OF THE dATA dIRECTION rEGISTER CAUSES THE CORRESPONDING PERIPHERAL
- PIN TO ACT AS AN INPUT. a 1 CAUSES THE PIN TO ACT AS AN OUTPUT.
-
- eACH PERIPHERAL PIN IS ALSO CONTROLLED BY A BIT IN THE oUTPUT rEGISTER
- (ora, orb) AND THE iNPUT rEGISTER (ira, irb). wHEN THE PIN IS PROGRAMMED AS
- AN OUTPUT, THE VOLTAGE ON THE PIN IS CONTROLLED BY THE CORRESPONDING BIT OF
- THE oUTPUT rEGISTER. a 1 IN THE oUTPUT rEGISTER CAUSES THE OUTPUT TO GO
- HIGH, AND A 0 CAUSES THE OUTPUT TO GO LOW. dATA MAY BE WRITTEN INTO oUTPUT
- rEGISTER BITS CORRESPONDING TO PINS WHICH ARE PROGRAMMED AS INPUTS. iN THIS
- CASE, HOWEVER, THE OUTPUT SIGNAL IS UNAFFECTED.
-
- rEADING A PERIPHERAL PORT CAUSES THE CONTENTS OF THE iNPUT rEGISTER (ira,
- irb) TO BE TRANSFERRED ONTO THE dATA bUS. wITH INPUT LATCHING DISABLED, ira
- WILL ALWAYS REFLECT THE LEVELS ON THE pa PINS. wITH INPUT LATCHING ENABLED,
- ira WILL REFLECT THE LEVELS ON THE pa PINS AT TIME THE LATCHING OCCURRED
- (VIA ca1).
-
- tHE irb REGISTER OPERATES SIMILAR TO THE ira REGISTER. hOWEVER, FOR PINS
- PROGRAMMED AS OUTPUTS THERE IS A DIFFERENCE. wHEN READING ira, THE LEVEL ON
- THE PIN DETERMINES WHETHER A 0 OR A 1 IS SENSED. wHEN READING irb, HOWEVER,
- THE BIT STORED IN THE OUTPUT REGISTER, orb, IS THE BIT SENSED. tHUS, FOR
- OUTPUTS WHICH HAVE LARGE LOADING EFFECTS AND WHICH PULL AN OUTPUT "1" DOWN
- OR WHICH PULL AN OUTPUT "0" UP, READING ira MAY RESULT IN READING A "0"
- WHEN A "1" WAS ACTUALLY PROGRAMMED, AND READING A "1" WHEN A "0" WAS
- PROGRAMMED. rEADING irb, ON THE OTHER HAND, WILL READ THE "1" OR "0" LEVEL
- ACTUALLY PROGRAMMED, NO MATTER WHAT THE LOADING ON THE PIN.
-
- fIGURES 5 THROUGH 8 ILLUSTRATE THE FORMATS OF THE PORT REGISTERS. iN
- ADDITION, THE INPUT LATCHING MODES ARE SELECTED BY THE aUXILIARY cONTROL
- rEGISTER (fIGURE 12).
-
-
- reg 0 -- orb/irb
- +---+---+---+---+---+---+---+---+
- {$7c} 7 {$7c} 6 {$7c} 5 {$7c} 4 {$7c} 3 {$7c} 2 {$7c} 1 {$7c} 0 {$7c}
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- pb0 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--------- pb1 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} +------------- pb2 {$7c} output register
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} "b" (orb)
- {$7c} {$7c} {$7c} {$7c} +----------------- pb3 {$7c}
- {$7c} {$7c} {$7c} {$7c} +- or
- {$7c} {$7c} {$7c} +--------------------- pb4 {$7c}
- {$7c} {$7c} {$7c} {$7c} input register
- {$7c} {$7c} +------------------------- pb5 {$7c} "b" (irb)
- {$7c} {$7c} {$7c}
- {$7c} +----------------------------- pb6 {$7c}
- {$7c} {$7c}
- +--------------------------------- pb7 {$7c}
- -+
-
- +-----------------------+-----------------------+---------------------------+
- {$7c} pin {$7c} {$7c} {$7c}
- {$7c} data direction {$7c} write {$7c} read {$7c}
- {$7c} selection {$7c} {$7c} {$7c}
- +-----------------------+-----------------------+---------------------------+
- {$7c}ddrb = 1 output {$7c}mpu writes output level{$7c}mpu reads output register {$7c}
- {$7c} {$7c}orb {$7c}bit, orb pin level has no {$7c}
- {$7c} {$7c} {$7c}affect {$7c}
- +-----------------------+-----------------------+---------------------------+
- {$7c}ddrb = 0 input {$7c}mpu writes into orb but{$7c}mpu reads input level on pb{$7c}
- {$7c}input latching disabled{$7c}no affect on pin level {$7c}pin {$7c}
- {$7c} {$7c}until ddrb changed {$7c} {$7c}
- +-----------------------+ +---------------------------+
- {$7c}ddrb = 0 input {$7c} {$7c}mpu reads irb bit which is {$7c}
- {$7c}input latching enabled {$7c} {$7c}the level of the pb pin at {$7c}
- {$7c} {$7c} {$7c}the time of the last cb1 {$7c}
- {$7c} {$7c} {$7c}active transition {$7c}
- +-----------------------+-----------------------+---------------------------+
-
- fIGURE 5. oUTPUT rEGISTER b (orb), iNPUT rEGISTER b (irb)
-
-
- reg 1 -- ora/ira
- +---+---+---+---+---+---+---+---+
- {$7c} 7 {$7c} 6 {$7c} 5 {$7c} 4 {$7c} 3 {$7c} 2 {$7c} 1 {$7c} 0 {$7c}
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- pa0 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--------- pa1 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} +------------- pa2 {$7c} output register
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} "a" (ora)
- {$7c} {$7c} {$7c} {$7c} +----------------- pa3 {$7c}
- {$7c} {$7c} {$7c} {$7c} +- or
- {$7c} {$7c} {$7c} +--------------------- pa4 {$7c}
- {$7c} {$7c} {$7c} {$7c} input register
- {$7c} {$7c} +------------------------- pa5 {$7c} "a" (ira)
- {$7c} {$7c} {$7c}
- {$7c} +----------------------------- pa6 {$7c}
- {$7c} {$7c}
- +--------------------------------- pa7 {$7c}
- -+
- +-----------------------+-----------------------+---------------------------+
- {$7c} pin {$7c} {$7c} {$7c}
- {$7c} data direction {$7c} write {$7c} read {$7c}
- {$7c} selection {$7c} {$7c} {$7c}
- +-----------------------+-----------------------+---------------------------+
- {$7c}ddra = 1 output {$7c}mpu writes output level{$7c}mpu reads level on pa pin {$7c}
- {$7c}input latching disabled{$7c}ora {$7c} {$7c}
- +-----------------------+ +---------------------------+
- {$7c}ddra = 1 input {$7c} {$7c}mpu reads ira bit which is {$7c}
- {$7c}input latching enabled {$7c} {$7c}the level of the pa pin at {$7c}
- {$7c} {$7c} {$7c}the time of the last ca1 {$7c}
- {$7c} {$7c} {$7c}active transition {$7c}
- +-----------------------+-----------------------+---------------------------+
- {$7c}ddra = 0 input {$7c}mpu writes into ora but{$7c}mpu reads level on pa pin {$7c}
- {$7c}input latching disabled{$7c}no affect on pin level {$7c} {$7c}
- {$7c} {$7c}until ddra changed {$7c} {$7c}
- +-----------------------+ +---------------------------+
- {$7c}ddra = 0 input {$7c} {$7c}mpu reads ira bit which is {$7c}
- {$7c}input latching enabled {$7c} {$7c}the level of the pa pin at {$7c}
- {$7c} {$7c} {$7c}the time of the last ca1 {$7c}
- {$7c} {$7c} {$7c}active transition {$7c}
- +-----------------------+-----------------------+---------------------------+
-
- fIGURE 6. oUTPUT rEGISTER a (ora), iNPUT rEGISTER a (ira)
-
-
- reg 2 -- ddrb reg 3 -- ddra
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c} {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c}
- +-+-+-+-+-+-+-+-+ -+ +-+-+-+-+-+-+-+-+ -+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- pb0 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- pa0 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- pb1 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- pa1 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} +------- pb2 {$7c} data {$7c} {$7c} {$7c} {$7c} {$7c} +------- pa2 {$7c} data
- {$7c} {$7c} {$7c} {$7c} +--------- pb3 {$7c}_ direction {$7c} {$7c} {$7c} {$7c} +--------- pa3 {$7c}_ direction
- {$7c} {$7c} {$7c} +----------- pb4 {$7c} register {$7c} {$7c} {$7c} +----------- pa4 {$7c} register
- {$7c} {$7c} +------------- pb5 {$7c} "b" (ddrb) {$7c} {$7c} +------------- pa5 {$7c} "a" (ddra)
- {$7c} +--------------- pb6 {$7c} {$7c} +--------------- pa6 {$7c}
- +----------------- pb7 {$7c} +----------------- pa7 {$7c}
- -+ -+
-
- "0" associated pb pin is an input "0" associated pa pin is an input
- (high impedance) (high impedance)
- "1" associated pb pin is an output "1" associated pa pin is an output
- whose level is determined by whose level is determined by
- orb register bit ora register bit
-
- fIGURE 7. dATA dIRECTION rEGISTER b fIGURE 8. dATA dIRECTION rEGISTER a
- (ddrb) (ddra)
-
-
-
- handshake control of data transfers
-
- tHE r6522 ALLOWS POSITIVE CONTROL OF DATA TRANSFERS BETWEEN THE SYSTEM
- PROCESSOR AND PERIPHERAL DEVICES THROUGH THE OPERATION OF "HANDSHAKE" LINES.
- pORT a LINES (ca1, ca2) HANDSHAKE DATA ON BOTH A READ AND A WRITE OPERATION
- WHILE THE pORT b LINES (cb1, cb2) HANDSHAKE ON A WRITE OPERATION ONLY.
-
- read handshake
-
- pOSITIVE CONTROL OF DATA TRANSFERS FROM PERIPHERAL DEVICES INTO THE SYSTEM
- PROCESSOR CAN BE ACCOMPLISHED VERY EFFECTIVELY USING rEAD hANDSHAKING. iN
- THIS CASE, THE PERIPHERAL DEVICE MUST GENERATE THE EQUIVALENT OF A "dATA
- rEADY" SIGNAL TO THE PROCESSOR SIGNIFYING THAT VALID DATA IS PRESENT ON THE
- PERIPHERAL PORT. tHIS SIGNAL NORMALLY INTERRUPTS THE PROCESSOR, WHICH THEN
- READS THE DATA, CAUSING GENERATION OF A "dATA tAKEN" SIGNAL. tHE PERIPHERAL
- DEVICE RESPONDS BY MAKING NEW DATA AVAILABLE. tHIS PROCESS CONTINUES UNTIL
- THE DATA TRANSFER IS COMPLETE.
-
- iN THE r6522, AUTOMATIC "rEAD hANDSHAKING" IS POSSIBLE ON THE pERIPHERAL a
- pORT ONLY. tHE ca1 INTERRUPT INPUT PIN ACCEPTS THE "dATA rEADY" SIGNAL AND
- ca2 GENERATES THE "dATA tAKEN" SIGNAL. tHE "dATA rEADY" SIGNAL WILL SET AN
- INTERNAL FLAG WHICH MAY INTERRUPT THE PROCESSOR OR WHICH MAY BE POLLED
- UNDER PROGRAM CONTROL. tHE "dATA tAKEN" SIGNAL CAN EITHER BE A PULSE OR A
- LEVEL WHICH IS SET LOW BY THE SYSTEM PROCESSOR AND IS CLEARED BY THE "dATA
- rEADY" SIGNAL. tHESE OPTIONS ARE SHOWN IN fIGURE 9 WHICH ILLUSTRATES THE
- NORMAL rEAD hANDSHAKE SEQUENCE.
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- 02 --+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-
- {$7c} {$7c}
- "data ready" ---------+ +----#-------+-------------#------+
- ca1) +---+----#-------+ {$7c} {$7c} +------
- ___ {$7c} {$7c} {$7c} {$7c}
- irq output ---------+ +---------#------+
- +--------#-----------+ {$7c} +------
- read ira +---+ {$7c} {$7c}
- operation ------------------#-------+ +---------#-------------
- {$7c} {$7c} {$7c}
- "data taken" ------------------------------+ {$7c} +------
- handshake mode +---------#------+
- (ca2) {$7c} {$7c}
- {$7c} {$7c}
- "data taken" ------------------#-----------+ +-----#-------------
- pulse mode +---+
- (ca2)
-
- fIGURE 9. rEAD hANDSHAKE tIMING (pORT a, oNLY)
-
-
- write handshake
-
- tHE SEQUENCE OF OPERATIONS WHICH ALLOWS HANDSHAKING DATA FROM THE SYSTEM
- PROCESSOR TO A PERIPHERAL DEVICE IS VERY SIMILAR TO THAT DESCRIBED FOR rEAD
- hANDSHAKING. hOWEVER, FOR wRITE hANDSHAKING, THE r6522 GENERATES THE "dATA
- rEADY" SIGNAL AND THE PERIPHERAL DEVICE MUST RESPOND WITH THE "dATA tAKEN"
- SIGNAL. tHIS CAN BE ACCOMPLISHED ON BOTH THE pa PORT AND THE pb PORT ON THE
- r6522. ca2 OR cb2 ACT AS A "dATA rEADY" OUTPUT IN EITHER THE HANDSHAKE MODE
- OR PULSE MODE AND ca1 OR cb1 ACCEPT THE "dATA tAKEN" SIGNAL FROM THE
- PERIPHERAL DEVICE, SETTING THE INTERRUPT FLAG AND CLEANING THE "dATA rEADY"
- OUTPUT. tHIS SEQUENCE IS SHOWN IN fIGURE 10.
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- 02 --+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-
- {$7c} {$7c} {$7c} {$7c}
- +---+ +---+
- write ora,orb ----+ +---------#---------------------#---+ +-----
- operation {$7c}
- {$7c}
- "data ready" ----------+ +----------------------+
- handshake mode +-------#--------+ {$7c} +---
- (ca2,cb2) {$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c}
- "data ready" ----------+ +---#---------------------#---------+
- pulse mode +---+ {$7c} {$7c} +---
- (ca2,cb2) {$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c}
- "data taken" ---------------------------+ +--------#---+---------
- (ca1,cb1) +---+--------#---+ {$7c}
- ___ {$7c} {$7c}
- irq output ------------------#--------+ +---
- +------------#---------+
-
- fIGURE 10. wRITE hANDSHAKE tIMING
-
-
- sELECTION OF OPERATING MODES FOR ca1, ca2, cb1 AND cb2 IS ACCOMPLISHED BY
- THE pERIPHERAL cONTROL rEGISTER (fIGURE 11).
-
-
- reg 12 -- peripheral control register
- +---+---+---+---+---+---+---+---+
- {$7c} 7 {$7c} 6 {$7c} 5 {$7c} 4 {$7c} 3 {$7c} 2 {$7c} 1 {$7c} 0 {$7c}
- +---+---+---+---+---+---+---+---+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- +----+----+ {$7c} +----+----+ {$7c}
- {$7c} {$7c} {$7c} {$7c}
- cb2 control -----+ {$7c} {$7c} +- ca1 interrupt control
- +-+-+-+------------------------+ {$7c} {$7c} +--------------------------+
- {$7c}7{$7c}6{$7c}5{$7c} operation {$7c} {$7c} {$7c} {$7c} 0 = negative active edge {$7c}
- +-+-+-+------------------------+ {$7c} {$7c} {$7c} 1 = positive active edge {$7c}
- {$7c}0{$7c}0{$7c}0{$7c} input neg. active edge {$7c} {$7c} {$7c} +--------------------------+
- +-+-+-+------------------------+ {$7c} +---- ca2 interrupt control
- {$7c}0{$7c}0{$7c}1{$7c} independent interrupt {$7c} {$7c} +-+-+-+------------------------+
- {$7c} {$7c} {$7c} {$7c} input negative edge {$7c} {$7c} {$7c}3{$7c}2{$7c}1{$7c} operation {$7c}
- +-+-+-+------------------------+ {$7c} +-+-+-+------------------------+
- {$7c}0{$7c}1{$7c}0{$7c} input pos. active edge {$7c} {$7c} {$7c}0{$7c}0{$7c}0{$7c} input neg. active edge {$7c}
- +-+-+-+------------------------+ {$7c} +-+-+-+------------------------+
- {$7c}0{$7c}1{$7c}1{$7c} independent interrupt {$7c} {$7c} {$7c}0{$7c}0{$7c}1{$7c} independent interrupt {$7c}
- {$7c} {$7c} {$7c} {$7c} input positive edge {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} input negative edge {$7c}
- +-+-+-+------------------------+ {$7c} +-+-+-+------------------------+
- {$7c}1{$7c}0{$7c}0{$7c} handshake output {$7c} {$7c} {$7c}0{$7c}1{$7c}0{$7c} input pos. active edge {$7c}
- +-+-+-+------------------------+ {$7c} +-+-+-+------------------------+
- {$7c}1{$7c}0{$7c}1{$7c} pulse output {$7c} {$7c} {$7c}0{$7c}1{$7c}1{$7c} independent interrupt {$7c}
- +-+-+-+------------------------+ {$7c} {$7c} {$7c} {$7c} {$7c} input positive edge {$7c}
- {$7c}1{$7c}1{$7c}0{$7c} low output {$7c} {$7c} +-+-+-+------------------------+
- +-+-+-+------------------------+ {$7c} {$7c}1{$7c}0{$7c}0{$7c} handshake output {$7c}
- {$7c}1{$7c}1{$7c}1{$7c} high output {$7c} {$7c} +-+-+-+------------------------+
- +-+-+-+------------------------+ {$7c} {$7c}1{$7c}0{$7c}1{$7c} pulse output {$7c}
- cb1 interrupt control --------+ +-+-+-+------------------------+
- +--------------------------+ {$7c}1{$7c}1{$7c}0{$7c} low output {$7c}
- {$7c} 0 = negative active edge {$7c} +-+-+-+------------------------+
- {$7c} 1 = positive active edge {$7c} {$7c}1{$7c}1{$7c}1{$7c} high output {$7c}
- +--------------------------+ +-+-+-+------------------------+
-
- fIGURE 11. pERIPHERAL cONTROL rEGISTER (pcr)
-
-
- counters/timers
-
- tHERE ARE TWO INDEPENDENT 16-BIT-COUNTER/TIMERS (CALLED tIMER 1 AND tIMER
- 2) IN THE r6522. eACH TIMER IS CONTROLLED BY WRITING BITS INTO THE aUXILIARY
- cONTROL rEGISTER (acr) TO SELECT THIS MODE OF OPERATION (fIGURE 12).
-
-
- reg 11 -- auxiliary control register
- +---+---+---+---+---+---+---+---+
- {$7c} 7 {$7c} 6 {$7c} 5 {$7c} 4 {$7c} 3 {$7c} 2 {$7c} 1 {$7c} 0 {$7c}
- +---+---+---+---+---+---+---+---+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- +--+--+ {$7c} +----+----+ {$7c} +------ pa
- {$7c} {$7c} {$7c} {$7c}
- t1 timer control ---+ {$7c} {$7c} +---------- pb
- +-+-+----------------+-------+ {$7c} {$7c}
- {$7c}7{$7c}6{$7c}operation {$7c} pb7 {$7c} {$7c} {$7c} latching enable/disable
- +-+-+----------------+-------+ {$7c} {$7c} +---------------------+
- {$7c}0{$7c}0{$7c}timed interrupt {$7c} {$7c} {$7c} {$7c} {$7c} 0 = disable latching{$7c}
- {$7c} {$7c} {$7c}each time t1 is {$7c} {$7c} {$7c} {$7c} {$7c} 1 = enable latching {$7c}
- {$7c} {$7c} {$7c}loaded {$7c}disable{$7c} {$7c} {$7c} +---------------------+
- +-+-+----------------+ {$7c} {$7c} {$7c}
- {$7c}0{$7c}1{$7c}continuous {$7c} {$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c}interrupts {$7c} {$7c} {$7c} +---- shift register control
- +-+-+----------------+-------+ {$7c} +-+-+-+-----------------------------------+
- {$7c}1{$7c}0{$7c}timed interrupt {$7c}one- {$7c} {$7c} {$7c}4{$7c}3{$7c}2{$7c} operation {$7c}
- {$7c} {$7c} {$7c}each time t1 is {$7c}shot {$7c} {$7c} +-+-+-+-----------------------------------+
- {$7c} {$7c} {$7c}loaded {$7c}output {$7c} {$7c} {$7c}0{$7c}0{$7c}0{$7c} disabled {$7c}
- +-+-+----------------+-------+ {$7c} +-+-+-+-----------------------------------+
- {$7c}1{$7c}1{$7c}continuous {$7c}square {$7c} {$7c} {$7c}0{$7c}0{$7c}1{$7c} shift in under comtrol of t2 {$7c}
- {$7c} {$7c} {$7c}interrupts {$7c}wave {$7c} {$7c} +-+-+-+-----------------------------------+
- {$7c} {$7c} {$7c} {$7c}output {$7c} {$7c} {$7c}0{$7c}1{$7c}0{$7c} shift in under control of 02 {$7c}
- +-+-+----------------+-------+ {$7c} +-+-+-+-----------------------------------+
- {$7c} {$7c}0{$7c}1{$7c}1{$7c} shift in under control of ext.clk {$7c}
- t2 timer control ------------+ +-+-+-+-----------------------------------+
- +-+-----------------+ {$7c}1{$7c}0{$7c}0{$7c} shift out free-running at t2 rate {$7c}
- {$7c}5{$7c} operation {$7c} +-+-+-+-----------------------------------+
- +-+-----------------+ {$7c}1{$7c}0{$7c}1{$7c} shift out under control of t2 {$7c}
- {$7c}0{$7c} timed interrupt {$7c} +-+-+-+-----------------------------------+
- +-+-----------------+ {$7c}1{$7c}1{$7c}0{$7c} shift out under control of 02 {$7c}
- {$7c}1{$7c} count down with {$7c} +-+-+-+-----------------------------------+
- {$7c} {$7c} pulses on pb6 {$7c} {$7c}1{$7c}1{$7c}1{$7c} shift out under control of ext.clk{$7c}
- +-+-----------------+ +-+-+-+-----------------------------------+
-
- fIGURE 12. aUXILIARY cONTROL rEGISTER (acr)
-
-
- tIMER 1 oPERATION
-
- iNTERVAL tIMER t1 CONSISTS OF TWO 8-BIT LATCHES (fIGURE 13) AND A 16-BIT
- COUNTER (fIGURE 14). tHE LATCHES STORE DATA WHICH IS TO BE LOADED INTO THE
- COUNTER. aFTER LOADING, THE COUNTER DECREMENTS AT 02 CLOCK RATE. uPON
- REACHING ZERO, AN INTERRUPT FLAG IS SET, AND irq GOES LOW IF THE t1
- INTERRUPT IS ENABLED. tIMER 1 THEN DISABLES ANY FURTHER INTERRUPTS OR
- AUTOMATICALLY TRANSFERS THE CONTENTS OF THE LATCHES INTO THE COUNTER AND
- CONTINUES TO DECREMENT. iN ADDITION, THE TIMER MAY BE PROGRAMMED TO INVERT
- THE OUTPUT SIGNAL ON A PERIPHERAL PIN (pb7) EACH TIME IT "TIMES-OUT". eACH
- OF THESE MODES IS DISCUSSED SEPARATELY BELOW.
-
- nOTE THAT THE PROCESSOR DOES NOT WRITE DIRECTLY INTO THE LOW-ORDER COUNTER
- (t1c-l). iNSTEAD, THIS HALF OF THE COUNTER IS LOADED AUTOMATICALLY FROM THE
- LOW ORDER LATCH (t1l-l) WHEN THE PROCESSOR WRITES INTO THE HIGH ORDER
- COUNTER (t1c-h). iN FACT, IT MAY NOT BE NECESSARY TO WRITE TO THE LOW ORDER
- COUNTER IN SOME APPLICATIONS SINCE THE TIMING OPERATION IS TRIGGERED BY
- WRITING TO THE HIGH ORDER LATCH.
-
-
- reg 6 -- t1 low-order latch reg 7 -- t1 high-order latch
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c} {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c}
- +-+-+-+-+-+-+-+-+ -+ +-+-+-+-+-+-+-+-+ -+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- 1 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- 256 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- 2 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- 512 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} +------- 4 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +------- 1024 {$7c}
- {$7c} {$7c} {$7c} {$7c} +--------- 8 {$7c}_ count {$7c} {$7c} {$7c} {$7c} +--------- 2048 {$7c}_ count
- {$7c} {$7c} {$7c} +----------- 16 {$7c} value {$7c} {$7c} {$7c} +----------- 4096 {$7c} value
- {$7c} {$7c} +------------- 32 {$7c} {$7c} {$7c} +------------- 8192 {$7c}
- {$7c} +--------------- 64 {$7c} {$7c} +--------------- 16384 {$7c}
- +----------------- 128 {$7c} +----------------- 32768 {$7c}
- -+ -+
-
- write - 8 bits loaded into t1 write - 8 bits loaded into t1 high-
- low-order latches. this order latches. unlike reg 4
- operation is no different operation no latch to
- than a write into reg 4 counter transfers take place
-
- read - 8 bits from t1 low order- read - 8 bits from t1 high-order
- latches transferred to mpu. latches transferred to mpu
- unlike reg 4 operation,
- this does not cause reset
- of t1 interrupt flag
-
- fIGURE 13. tIMER 1 (t1) lATCH rEGISTERS
-
-
- reg 4 -- t1 low-order counter reg 5 -- t1 high-order counter
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c} {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c}
- +-+-+-+-+-+-+-+-+ -+ +-+-+-+-+-+-+-+-+ -+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- 1 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- 256 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- 2 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- 512 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} +------- 4 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +------- 1024 {$7c}
- {$7c} {$7c} {$7c} {$7c} +--------- 8 {$7c}_ count {$7c} {$7c} {$7c} {$7c} +--------- 2048 {$7c}_ count
- {$7c} {$7c} {$7c} +----------- 16 {$7c} value {$7c} {$7c} {$7c} +----------- 4096 {$7c} value
- {$7c} {$7c} +------------- 32 {$7c} {$7c} {$7c} +------------- 8192 {$7c}
- {$7c} +--------------- 64 {$7c} {$7c} +--------------- 16384 {$7c}
- +----------------- 128 {$7c} +----------------- 32768 {$7c}
- -+ -+
-
- write - 8 bits loaded into t1 write - 8 bits loaded into t1
- low-order latches. latch high-order latches. also
- contents are transferred at this time both high- and
- into low-order counter at low-order latches transferred
- the time the high-order into t1 counter. t1 interrupt
- counter is loaded (reg 5) flag also is reset
-
- read - 8 bits from t1 low-order read - 8 bits from t1 high-order
- counter transferred to mpu. counter transferred to mpu
- in addition t1 interrupt flag
- is reset (bit 6 in interrupt
- flag register)
-
- fIGURE 14. tIMER 1 (t1) cOUNTER rEGISTERS
-
-
- tIMER 1 oNE-sHOT mODE
-
- tHE tIMER 1 ONE-SHOT MODE GENERATES A SINGLE INTERRUPT FOR EACH TIMER LOAD
- OPERATION. aS WITH ANY INTERVAL TIMER, THE DELAY BETWEEN THE "WRITE t1c-h"
- OPERATION AND GENERATION OF THE PROCESSOR INTERRUPT IS A DIRECT FUNCTION OF
- THE DATA LOADED INTO THE TIMING COUNTER. iN ADDITION TO GENERATING A SINGLE
- INTERRUPT, tIMER 1 CAN BE PROGRAMMED TO PRODUCE A SINGLE NEGATIVE PULSE ON
- THE pb7 PERIPHERAL PIN. wITH THE OUTPUT ENABLED (acr7=1) A "WRITE t1c-h"
- OPERATION WILL CAUSE pb7 TO GO LOW. pb7 WILL RETURN HIGH WHEN tIMER 1 TIMES
- OUT. tHE RESULT IS A SINGLE PROGRAMMABLE WIDTH PULSE.
- ___
- t1 INTERRUPT FLAG WILL BE SET, THE irq PIN WILL GO LOW (INTERRUPT
- ENABLED), AND THE SIGNAL ON pb7 WILL GO HIGH. aT THIS TIME THE COUNTER WILL
- CONTINUE TO DECREMENT AT SYSTEM CLOCK RATE. tHIS ALLOWS THE SYSTEM
- PROCESSOR TO READ THE CONTENTS OF THE COUNTER TO DETERMINE THE TIME SINCE
- INTERRUPT. hOWEVER, THE t1 INTERRUPT FLAG CANNOT BE SET AGAIN UNLESS IT HAS
- BEEN CLEARED AS DESCRIBED IN THIS SPECIFICATION.
-
- tIMING FOR THE r6522 INTERVAL TIMER ONE-SHOT MODE IS SHOWN IN fIGURE 15.
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- 02 --+ +-+ +-+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-+ +-+ +-+ +-
- {$7c} {$7c} {$7c}
- +---+ {$7c}
- write t1c-h ----+ +-----------------#-------------------------
- ___ {$7c} {$7c}
- irq output --------------------------#---------+
- {$7c} +---------------
- {$7c} {$7c}
- pb7 output --------+ +---------------
- +-----------------#---------+
- {$7c} n {$7c}n-1{$7c}n-2{$7c}n-3{$7c} {$7c} 0 {$7c}n{$7c} {$7c}n-1{$7c}n-2{$7c}n-3{$7c}
- {$7c} {$7c}
- {$7c}<---- n + 1.5 cycles ----->{$7c}
-
- fIGURE 15. tIMER 1 oNE-sHOT mODE tIMING
-
-
- iN THE ONE-SHOT MODE, WRITING INTO THE t1l-h HAS NO EFFECT ON THE
- OPERATION OF tIMER 1. hOWEVER, IT WILL BE NECESSARY TO ASSURE THAT THE LOW
- ORDER LATCH CONTAINS THE PROPER DATA BEFORE INITIATING THE COUNT-DOWN WITH
- A "WRITE t1c-h" OPERATION. wHEN THE PROCESSOR WRITES INTO THE HIGH ORDER
- COUNTER (t1c-h), THE t1 INTERRUPT FLAG WILL BE CLEARED, THE CONTENTS OF THE
- LOW ORDER LATCH WILL BE TRANSFERRED INTO THE LOW ORDER COUNTER, AND THE
- TIMER WILL BEGIN TO DECREMENT AT SYSTEM CLOCK RATE. iF THE pb7 OUTPUT IS
- ENABLED, THIS SIGNAL WILL GO LOW ON THE 02 FOLLOWING THE WRITE OPERATION.
- wHEN THE COUNTER REACHES ZERO, THE t1 INTERRUPT FLAG WILL BE SET, THE irq
- PIN WILL GO LOW (INTERRUPT ENABLED), AND THE SIGNAL ON pb7 WILL GO HIGH. aT
- THIS TIME THE COUNTER WILL CONTINUE TO DECREMENT AT SYSTEM CLOCK RATE. tHIS
- ALLOWS THE SYSTEM PROCESSOR TO READ THE CONTENTS OF THE COUNTER TO
- DETERMINE THE TIME SINCE INTERRUPT. hOWEVER, THE t1 INTERRUPT FLAG CANNOT
- BE SET AGAIN UNLESS IT HAS BEEN CLEARED AS DESCRIBED IN THIS SPECIFICATION.
-
- tIMER 1 fREE-rUN mODE
-
- tHE MOST IMPORTANT ADVANTAGE ASSOCIATED WITH THE LATCHES IN t1 IS THE
- ABILITY TO PRODUCE A CONTINUOUS SERIES OF EVENLY SPACED INTERRUPTS AND THE
- ABILITY TO PRODUCE A SQUARE WAVE ON pb7 WHOSE FREQUENCY IS NOT AFFECTED BY
- VARIATIONS IN THE PROCESSOR INTERRUPT RESPONSE TIME. tHIS IS ACCOMPLISHED
- IN THE "FREE-RUNNING" MODE.
-
- iN THE FREE-RUNNING MODE, THE INTERRUPT FLAG IS SET AND THE SIGNAL ON pb7
- IS INVERTED EACH TIME THE COUNTER REACHES ZERO. hOWEVER, INSTEAD OF
- CONTINUING TO DECREMENT FROM ZERO AFTER A TIME-OUT, THE TIMER AUTOMATICALLY
- TRANSFERS THE CONTENTS OF THE LATCH INTO THE COUNTER (16 BITS) AND
- CONTINUES TO DECREMENT FROM THERE. tHE INTERRUPT FLAG CAN BE CLEARED BY
- WRITING t1c-h, BY READING t1c-l OR BY WRITING DIRECTLY INTO THE FLAG AS
- DESCRIBED LATER. hOWEVER, IT IS NOT NECESSARY TO REWRITE THE TIMER TO
- ENABLE SETTING THE INTERRUPT FLAG ON THE NEXT TIME-OUT.
-
- aLL INTERVAL TIMERS IN THE r6522 ARE "RE-TRIGGERABLE". rEWRITING THE
- COUNTER WILL ALWAYS RE-INITIALIZE THE TIME-OUT PERIOD. iN FACT, THE
- TIME-OUT CAN BE PREVENTED COMPLETELY IF THE PROCESSOR CONTINUES TO REWRITE
- THE TIMER BEFORE IT REACHES ZERO. tIMER 1 WILL OPERATE IN THIS MANNER IF
- THE PROCESSOR WRITES INTO THE HIGH ORDER COUNTER (t1c-h). hOWEVER, BY
- LOADING THE LATCHES ONLY, THE PROCESSOR CAN ACCESS THE TIMER DURING EACH
- DOWN-COUNTING OPERATION WITHOUT AFFECTING THE TIME-OUT IN PROCESS. iNSTEAD,
- THE DATA LOADED INTO THE LATCHES WILL DETERMINE THE LENGTH OF THE NEXT
- TIME-OUT PERIOD. tHIS CAPABILITY IS PARTICULARLY VALUABLE IN THE
- FREE-RUNNING MODE WITH THE OUTPUT ENABLED. iN THIS MODE, THE SIGNAL ON pb7
- IS INVERTED AND THE INTERRUPT FLAG IS SET WITH EACH TIME-OUT. bY RESPONDING
- TO THE INTERRUPTS WITH NEW DATA FOR THE LATCHES, THE PROCESSOR CAN
- DETERMINE THE PERIOD OF THE NEXT HALF CYCLE DURING EACH HALF CYCLE OF THE
- OUTPUT SIGNAL ON pb7. iN THIS MANNER, VERY COMPLEX WAVEFORMS CAN BE
- GENERATED.
-
- a PRECAUTION TO TAKE IN THE USE OF pb7 AS THE TIMER OUTPUT CONCERNS THE
- dATA dIRECTION rEGISTER CONTENTS FOR pb7. bOTH ddrb BIT 7 AND acr BIT 7
- MUST BE 1 FOR pb7 TO FUNCTION AS THE TIMER OUTPUT. iF ONE IS 1 AND THE
- OTHER IS 0, THEN pb7 FUNCTIONS AS A NORMAL OUTPUT PIN, CONTROLLED BY orb
- BIT 7.
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- 02 --+ +-+ +-+ +-#-+ +-+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-+ +-
- {$7c} {$7c} {$7c}
- write t1c-h +---+ {$7c} {$7c}
- operation ----+ +-----#---------------------#-----------------
- ___ {$7c} {$7c} {$7c}
- irq output --------------#---------+ #---------+
- {$7c} +-----------# +-------
- {$7c} {$7c} {$7c}
- pb7 output --------+ +-----------#---------+
- +-----#---------+ +-------
- {$7c} {$7c} {$7c}
- {$7c}< n+1.5 cycles>{$7c}<---- n+2 cycles --->{$7c}
-
- fIGURE 16. tIMER 1 fREE-rUN mODE tIMING
-
-
- tIMER 2 oPERATION
-
- tIMER 2 OPERATES AS AN INTERVAL TIMER (IN THE "ONE-SHOT" MODE ONLY), OR AS
- A COUNTER FOR COUNTING NEGATIVE PULSES ON THE pb6 PERIPHERAL PIN. a SINGLE
- CONTROL BIT IN THE aUXILIARY cONTROL rEGISTER SELECTS BETWEEN THESE TWO
- MODES. tHIS TIMER IS COMPRISED OF A "WRITE-ONLY" LOW-ORDER LATCH (t2l-l), A
- "READ-ONLY" LOW-ORDER COUNTER (t2c-l) AND A READ/WRITE HIGH ORDER COUNTER
- (t2c-h). tHE COUNTER REGISTERS ACT AS A 16-BIT COUNTER WHICH DECREMENTS AT
- 02 RATE. fIGURE 17 ILLUSTRATES THE t2 lATCH/cOUNTER rEGISTERS.
-
-
- reg 8 - t2 low-order latch/counter reg 9 - t2 high-order counter
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c} {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c}
- +-+-+-+-+-+-+-+-+ -+ +-+-+-+-+-+-+-+-+ -+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- 1 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- 256 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- 2 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- 512 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} +------- 4 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +------- 1024 {$7c}
- {$7c} {$7c} {$7c} {$7c} +--------- 8 {$7c}_ count {$7c} {$7c} {$7c} {$7c} +--------- 2048 {$7c}_ count
- {$7c} {$7c} {$7c} +----------- 16 {$7c} value {$7c} {$7c} {$7c} +----------- 4096 {$7c} value
- {$7c} {$7c} +------------- 32 {$7c} {$7c} {$7c} +------------- 8192 {$7c}
- {$7c} +--------------- 64 {$7c} {$7c} +--------------- 16384 {$7c}
- +----------------- 128 {$7c} +----------------- 32768 {$7c}
- -+ -+
-
-
- write - 8 bits loaded into t2 write - 8 bits loaded into t2
- low-order latch high-order counter. also,
- low-order latch transferred
- read - 8 bits from t2 low-order to low-order counter. in
- counter transferred to mpu. addition t2 interrupt flag
- t2 interrupt flag is reset is reset
-
- read - 8 bits from t2 high-order
- counter transferred to mpu
-
- fIGURE 17. tIMER 2 (t2) lATCH/cOUNTER rEGISTERS
-
-
- tIMER 2 oNE-sHOT mODE
-
- aS AN INTERVAL TIMER, t2 OPERATES IN THE "ONE-SHOT" MODE SIMILAR TO tIMER 1.
- iN THIS MODE, t2 PROVIDES A SINGLE INTERRUPT FOR EACH "WRITE t2c-h"
- OPERATION. aFTER TIMING OUT, THE COUNTER WILL CONTINUE TO DECREMENT.
- hOWEVER, SETTING OF THE INTERRUPT FLAG IS DISABLED AFTER INITIAL TIME-OUT
- SO THAT IT WILL NOT BE SET BY THE COUNTER DECREMENTING AGAIN THROUGH ZERO.
- tHE PROCESSOR MUST REWRITE t2c-h TO ENABLE SETTING OF THE INTERRUPT FLAG.
- tHE INTERRUPT FLAG IS CLEARED BY READING t2c-l OR BY WRITING t2c-h. tIMING
- FOR THIS OPERATION IS SHOWN IN fIGURE 18.
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- 02 --+ +-+ +-+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-+ +-+ +-+ +-
- {$7c} {$7c} {$7c}
- +---+ {$7c}
- write t2c-h ----+ +-----------------#-------------------------
- ___ {$7c} {$7c}
- irq output --------------------------#---------+
- {$7c} +---------------
- {$7c} {$7c}
- {$7c} n {$7c}n-1{$7c}n-2{$7c}n-3{$7c} {$7c} 0 {$7c}n{$7c} {$7c}n-1{$7c}n-2{$7c}n-3{$7c}
- {$7c}<------ n+1.5 cycles ----->{$7c}
-
- fIGURE 18. tIMER 2 oNE-sHOT mODE tIMING
-
-
- tIMER 2 pULSE cOUNTING mODE
-
- iN THE PULSE COUNTING MODE, t2 COUNTS A PREDETERMINED NUMBER OF
- NEGATIVE-GOING PULSES ON pb6. tHIS IS ACCOMPLISHED BY FIRST LOADING A
- NUMBER INTO tIMER 2. wRITING INTO t2c-h CLEARS THE INTERRUPT FLAG AND
- ALLOWS THE COUNTER TO DECREMENT EACH TIME A PULSE IS APPLIED TO pb6. tHE
- INTERRUPT FLAG IS SET WHEN t2 COUNTS DOWN PAST ZERO. tHE COUNTER WILL THEN
- CONTINUE TO DECREMENT WITH EACH PULSE ON pb6. hOWEVER, IT IS NECESSARY TO
- REWRITE t2c-h TO ALLOW THE INTERRUPT FLAG TO SET ON A SUBSEQUENT TIME-OUT.
- tIMING FOR THIS MODE IS SHOWN IN fIGURE 19. tHE PULSE MUST BE LOW ON THE
- LEADING EDGE OF 02.
-
-
- write t2c-h +---+
- operation ----+ +------------------------------------------------
- ------------------+ +-----+ +-----#-----+ +-----+ +------
- pb6 input +-+ +-+ +-+ +-+
- ___ ------------------------------------------------+
- irq output {$7c} {$7c} {$7c} +--------
- n {$7c} n-1 {$7c} n-2 1 {$7c} 0 {$7c} -1
-
- fIGURE 19. tIMER 2 pULSE cOUNTING mODE
-
-
- shift register operation
-
- tHE sHIFT rEGISTER (sr) PERFORMS SERIAL DATA TRANSFERS INTO AND OUT OF THE
- cb2 PIN UNDER CONTROL OF AN INTERNAL MODULO-8 COUNTER. sHIFT PULSES CAN BE
- APPLIED TO THE cb1 PIN FROM AN EXTERNAL SOURCE OR, WITH THE PROPER MODE
- SELECTION, SHIFT PULSES GENERATED INTERNALLY WILL APPEAR ON THE cb1 PIN FOR
- CONTROLLING EXTERNAL DEVICES.
-
- tHE CONTROL BITS WHICH SELECT THE VARIOUS SHIFT REGISTER OPERATING MODES
- ARE LOCATED IN THE aUXILIARY cONTROL rEGISTER. fIGURE 20 ILLUSTRATES THE
- CONFIGURATION OF THE sr DATA BITS AND fIGURE 21 SHOWS THE sr CONTROL BITS
- OF THE acr.
-
-
- reg 10 -- shift register reg 11 -- auxiliary control register
- +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
- {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c} {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c}
- +-+-+-+-+-+-+-+-+ -+ +-+-+-+-+-+-+-+-+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +---- {$7c} {$7c} {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +------ {$7c} +-+-+
- {$7c} {$7c} {$7c} {$7c} {$7c} +-------- {$7c} shift {$7c}
- {$7c} {$7c} {$7c} {$7c} +---------- {$7c}_ register {$7c} shift register
- {$7c} {$7c} {$7c} +------------ {$7c} bits +- mode control
- {$7c} {$7c} +-------------- {$7c} +-+-+-+---------------------------------+
- {$7c} +---------------- {$7c} {$7c}4{$7c}3{$7c}2{$7c}operation {$7c}
- +------------------ {$7c} +-+-+-+---------------------------------+
- -+ {$7c}0{$7c}0{$7c}0{$7c}disabled {$7c}
- {$7c}0{$7c}0{$7c}1{$7c}shift in under control of t2 {$7c}
- notes {$7c}0{$7c}1{$7c}0{$7c}shift in under control of 02 {$7c}
- 1 when shifting out bit 7 is the {$7c}0{$7c}1{$7c}1{$7c}shift in under cont. of ext.clk {$7c}
- first bit out and simultaneously {$7c}1{$7c}0{$7c}0{$7c}shift out free running at t2 rate{$7c}
- is rotated back into bit 0 {$7c}1{$7c}0{$7c}1{$7c}shift out under control of t2 {$7c}
- 2 when shifting in bits initially {$7c}1{$7c}1{$7c}0{$7c}shift out under control of 02 {$7c}
- enter bit 0 and are shifted {$7c}1{$7c}1{$7c}1{$7c}shift out under cont. of ext.clk {$7c}
- towards bit 7 +-+-+-+---------------------------------+
-
- fIGURE 20. sHIFT REGISTERS fIGURE 21. sHIFT rEGISTER mODES
-
-
- sr mODE 0 -- dISABLED
-
- mODE 0 DISABLES THE sHIFT rEGISTER. iN THIS MODE THE MICROPROCESSOR CAN
- WRITE OR READ THE sr AND THE sr WILL SHIFT ON EACH cb1 POSITIVE EDGE
- SHIFTING IN THE VALUE ON cb2. iN THIS MODE THE sr iNTERRUPT fLAG IS
- DISABLED (HELD TO A LOGIC 0).
-
-
- sr mODE 1 -- sHIFT IN uNDER cONTROL OF t2
-
- iN MODE 1, THE SHIFTING RATE IS CONTROLLED BY THE LOW ORDER 8 BITS OF t2
- (fIGURE 22). sHIFT PULSES ARE GENERATED ON THE cb1 PIN TO CONTROL SHIFTING
- IN EXTERNAL DEVICES. tHE TIME BETWEEN TRANSITIONS OF THIS OUTPUT CLOCK IS A
- FUNCTION OF THE SYSTEM CLOCK PERIOD AND THE CONTENTS OF THE LOW ORDER t2
- LATCH (n).
-
-
- 02 +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- -+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-
- write or read +---+ {$7c} {$7c} {$7c} {$7c} {$7c}
- shift reg ---+ +------------------------------------------------------#----------------------
- n+2 cycles {$7c}<--------->{$7c}<--------->{$7c} n+2 cycles {$7c}
- cb1 output -----------------+ 1 +-----------+ 2 +--------#--+ 8 +-------
- shift clock +-----------+ +-----------+ +-----------+ {$7c}
- {$7c}
- cb2 input -----------------------\/---1---\/-------------\/---2---\/----#--------\/---8---\/---
- data -----------------------/\-------/\-------------/\-------/\----#--------/\-------/\---
- {$7c}
- ___ +-----------------------------------------------------------------------------+
- irq ---+ +---
-
- fIGURE 22. sr mODE 1 -- sHIFT iN uNDER t2 cONTROL
-
-
- tHE SHIFTING OPERATION IS TRIGGERED BY THE READ OR WRITE OF THE sr IF THE
- sr FLAG IS SET IN THE ifr. oTHERWISE THE FIRST SHIFT WILL OCCUR AT THE NEXT
- TIME-OUT OF t2 AFTER A READ OR WRITE OF THE sr. dATA IS SHIFTED FIRST INTO
- THE LOW ORDER BIT OF sr AND IS THEN SHIFTED INTO THE NEXT HIGHER ORDER BIT
- OF THE SHIFT REGISTER ON THE NEGATIVE-GOING EDGE OF EACH CLOCK PULSE. tHE
- INPUT DATA SHOULD CHANGE BEFORE THE POSITIVE-GOING EDGE OF THE cb1 CLOCK
- PULSE. tHIS DATA IS SHIFTED INTO SHIFT REGISTER DURING THE 02 CLOCK CYCLE
- FOLLOWING THE POSITIVE-GOING EDGE OF THE cb1 CLOCK PULSE. aFTER 8 cb1 CLOCK
- PULSES, THE SHIFT REGISTER INTERRUPT FLAG WILL SET AND irq WILL GO LOW.
-
-
- sr mODE 2 -- sHIFT IN uNDER 02 cONTROL
-
- iN MODE 2, THE SHIFT RATE IS A DIRECT FUNCTION OF THE SYSTEM CLOCK
- FREQUENCY (fIGURE 23). cb1 BECOMES AN OUTPUT WHICH GENERATES SHIFT PULSES
- FOR CONTROLLING EXTERNAL DEVICES. tIMER 2 OPERATES AS AN INDEPENDENT
- INTERVAL TIMER AND HAS NO EFFECT ON sr. tHE SHIFTING OPERATION IS TRIGGERED
- BY READING OR WRITING THE sHIFT rEGISTER. dATA IS SHIFTED, FIRST INTO BIT 0
- AND IS THEN SHIFTED INTO THE NEXT HIGHER ORDER BIT OF THE SHIFT REGISTER ON
- THE TRAILING EDGE OF EACH 02 CLOCK PULSE. aFTER 8 CLOCK PULSES, THE SHIFT
- REGISTER INTERRUPT FLAG WILL BE SET, AND THE OUTPUT CLOCK PULSES ON cb1
- WILL STOP.
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- 02 -+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-
- +---+ {$7c} {$7c} {$7c} {$7c}
- read sr ---+ +-----------------------------------------------------------------------------
- {$7c} {$7c} {$7c} {$7c}
- cb1 output -----------------+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +-------
- shift clock +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ {$7c}
- {$7c}
- cb2 input -----------------\/---1--\/---2--\/---3--\/---4--\/---5--\/---6--\/---7--\/---8--\/--
- data -----------------/\------/\------/\------/\------/\------/\------/\------/\------/\--
- {$7c}
- ___ ---------------------------------------------------------------------------------+
- irq +---
-
- fIGURE 23. sr mODE 2 -- sHIFT iN uNDER 02 cONTROL
-
-
- sr mODE 3 -- sHIFT IN uNDER cb1 cONTROL
-
- iN MODE 3, EXTERNAL PIN cb1 BECOMES AN INPUT (fIGURE 24). tHIS ALLOWS AN
- EXTERNAL DEVICE TO LOAD THE SHIFT REGISTER AT ITS OWN PACE. tHE SHIFT
- REGISTER COUNTER WILL INTERRUPT THE PROCESSOR EACH TIME 8 BITS HAVE BEEN
- SHIFTED IN. hOWEVER, THE SHIFT REGISTER COUNTER DOES NOT STOP THE SHIFTING
- OPERATION; IT ACTS SIMPLY AS A PULSE COUNTER. rEADING OR WRITING THE sHIFT
- rEGISTER RESETS THE iNTERRUPT fLAG AND INITIALIZES THE sr COUNTER TO COUNT
- ANOTHER 8 PULSES.
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- 02 -+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-
- {$7c}
- cb1 output ---+ 1 +---------+ 2 +--------#----+ 8 +-------
- shift clock +---------+ +---------+ +---------+
- {$7c}
- cb2 input -------\/----1---\/--------\/----2---\/---#--------\/----8---\/--
- data -------/\--------/\--------/\--------/\---#--------/\--------/\--
- ___ {$7c}
- irq -------------------------------------------------------------+
- +---
-
- fIGURE 24. sr mODE 3 -- sHIFT iN uNDER cb1 cONTROL
-
-
- nOTE THAT THE DATA IS SHIFTED DURING THE FIRST SYSTEM CLOCK CYCLE
- FOLLOWING THE POSITIVE-GOING EDGE OF THE cb1 SHIFT PULSE. fOR THIS REASON,
- DATA MUST BE HELD STABLE DURING THE FIRST FULL CYCLE FOLLOWING cb1 GOING
- HIGH.
-
-
- sr mODE 4 -- sHIFT oUT uNDER t2 cONTROL (fREE-rUN)
-
- mODE 4 IS VERY SIMILAR TO MODE 5 IN WHICH THE SHIFTING RATE IS SET BY t2.
- hOWEVER, IN MODE 4 THE sr cOUNTER DOES NOT STOP THE SHIFTING OPERATION
- (fIGURE 25). sINCE THE sHIFT rEGISTER BIT 7 (sr7) IS RECIRCULATED BACK INTO
- BIT 0, THE 8 BITS LOADED INTO THE sHIFT rEGISTER WILL BE CLOCKED ONTO cb2
- REPETITIVELY. iN THIS MODE THE sHIFT rEGISTER cOUNTER IS DISABLED.
-
-
- 02 +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- -+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-
- +---+ {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- write sr ---+ +---------------------------------------------------#---------------------------------------------
- n+2 cycles {$7c}<--------->{$7c}<--------->{$7c} n+2 cycles{$7c} {$7c} {$7c}
- cb1 output -----------------+ 1 +-----------+ 2 +-----#-----+ 8 +-----------+ 9 +---
- shift clock +-----------+ +-----------+ +-----------+ +-----------+
-
- cb2 output -------------------\/-----------1----------\/-------2------#-------\/-----------8----------\/-----1------
- data -------------------/\----------------------/\--------------#-------/\----------------------/\------------
-
- fIGURE 25. sr mODE 4 -- sHIFT oUT uNDER t2 cONTROL (fREE-rUN)
-
-
- sr mODE 5 -- sHIFT oUT uNDER t2 cONTROL
-
- iN MODE 5, THE SHIFT RATE IS CONTROLLED BY t2 (AS IN MODE 4). tHE SHIFTING
- OPERATION IS TRIGGERED BY THE READ OR WRITE OF THE sr IF THE sr FLAG IS SET
- IN THE ifr (fIGURE 26). oTHERWISE THE FIRST SHIFT WILL OCCUR AT THE NEXT
- TIME-OUT OF t2 AFTER A READ OR WRITE OF THE sr. hOWEVER, WITH EACH READ OR
- WRITE OF THE SHIFT REGISTER THE sr cOUNTER IS RESET AND 8 BITS ARE SHIFTED
- ONTO cb2. aT THE SAME TIME, 8 SHIFT PULSES ARE GENERATED ON cb1 TO CONTROL
- SHIFTING IN EXTERNAL DEVICES. aFTER THE 8 SHIFT PULSES, THE SHIFTING IS
- DISABLED, THE sr iNTERRUPT fLAG IS SET AND cb2 REMAINS AT THE LAST DATA
- LEVEL.
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
- 02 + +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-+ +-+ +
- +---+ {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- write sr --+ +----------------------------------------------------------
- n+2 cycles {$7c}<----->{$7c}<----->{$7c} n+2 cycles {$7c} {$7c}
- cb1 output ----------------+ 1 +-------+ 2 +---#-----+ 8 +------
- shift clock +-------+ +-------+ +-------+
- {$7c}
- cb2 output --------------------\/------1------\/---2---#--------\/-----8----
- data --------------------/\-------------/\-------#--------/\----------
- ___ {$7c}
- irq ----------------------------------------------------------+
- +------
-
- fIGURE 26. sr mODE 5 -- sHIFT oUT uNDER t2 cONTROL
-
-
- sr mODE 6 -- sHIFT oUT uNDER 02 cONTROL
-
- iN MODE 6, THE SHIFT RATE IS CONTROLLED BY THE 02 SYSTEM CLOCK (fIGURE 27).
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-+ +-+ +-+
- 02 + +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +
- +---+ {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- write sr --+ +----------------------------------------------------------
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
- cb1 output ------------+ 1 +---+ 2 +---+ 3 +---+ 4 +--#--+ 7 +---+ 8 +------
- shift clock +---+ +---+ +---+ +---+ +---+ +---+
- {$7c} {$7c}
- cb2 output -------------\/---1--\/---2--\/---3--\/--4-#---\/---7--\/---8----
- data -------------/\------/\------/\------/\----#---/\------/\--------
- ___ {$7c}
- irq ----------------------------------------------------------+
- +------
-
- fIGURE 27. sr mODE 6 -- sHIFT oUT uNDER 02 cONTROL
-
-
- sr mODE 7 -- sHIFT oUT uNDER cb1 cONTROL
-
- iN MODE 7, SHIFTING IS CONTROLLED BY PULSES APPLIED TO THE cb1 PIN BY AN
- EXTERNAL DEVICE (fIGURE 28). tHE sr COUNTER SETS THE sr iNTERRUPT fLAG EACH
- TIME IT COUNTS 8 PULSES BUT IT DOES NOT DISABLE THE SHIFTING FUNCTION. eACH
- TIME THE MICROPROCESSOR, WRITES OR READS THE SHIFT REGISTER, THE sr
- iNTERRUPT fLAG IS RESET AND THE sr COUNTER IS INITIALIZED TO BEGIN COUNTING
- THE NEXT 8 SHIFT PULSES ON PIN cb1. aFTER 8 SHIFT PULSES, THE iNTERRUPT
- fLAG IS SET. tHE MICROPROCESSOR CAN THEN LOAD THE SHIFT REGISTER WITH THE
- NEXT BYTE OF DATA.
-
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-#-+ +-+ +-+ +-+
- 02 + +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +
- +---+ {$7c}
- write sr --+ +----------------------------------------------------------
- {$7c}
- cb1 input --------------+ 1 +---------------+ 2 +---#----+ {$7c} 8 +
- shift clock +-------+ +-------+ +--------+
- {$7c}
- cb2 output --------------\/-----------1----------\/-----2----#----\/---8----
- data --------------/\----------------------/\----------#----/\--------
- ___ {$7c}
- irq ----------------------------------------------------------+
- +------
-
- fIGURE 28. sr mODE 7 -- sHIFT oUT uNDER cb1 cONTROL
-
-
-
- interrupt operation
-
- cONTROLLING INTERRUPTS WITHIN THE r6522 INVOLVES THREE PRINCIPAL
- OPERATIONS. tHESE ARE FLAGGING THE INTERRUPTS, ENABLING INTERRUPTS AND
- SIGNALING TO THE PROCESSOR THAT AN ACTIVE INTERRUPT EXISTS WITHIN THE CHIP.
- iNTERRUPT FLAGS ARE SET IN THE iNTERRUPT fLAG rEGISTER (ifr) BY CONDITIONS
- DETECTED WITHIN THE r6522 OR ON INPUTS TO THE r6522. tHESE FLAGS NORMALLY
- REMAIN SET UNTIL THE INTERRUPT HAS BEEN SERVICED. tO DETERMINE THE SOURCE
- OF AN INTERRUPT, THE MICROPROCESSOR MUST EXAMINE THESE FLAGS IN ORDER, FROM
- HIGHEST TO LOWEST PRIORITY.
-
- aSSOCIATED WITH EACH INTERRUPT FLAG IS AN INTERRUPT ENABLE BIT IN THE
- iNTERRUPT eNABLE rEGISTER (ier). tHIS CAN BE SET OR CLEARED BY THE
- PROCESSOR TO ENABLE INTERRUPTING THE PROCESSOR FROM THE CORRESPONDING
- INTERRUPT FLAG. iF AN INTERRUPT FLAG IS SET TO A LOGIC 1 BY AN INTERRUPTING
- CONDITION, AND THE CORRESPONDING INTERRUPT ENABLE BIT IS SET TO A 1, THE
- iNTERRUPT rEQUEST (irq) OUTPUT WILL GO LOW. irq IS AN "OPEN-COLLECTOR"
- OUTPUT WHICH CAN BE "WIRE-or'ED" WITH OTHER DEVICES IN THE SYSTEM TO
- INTERRUPT THE PROCESSOR.
-
-
- iNTERRUPT fLAG rEGISTER (ifr)
-
- iN THE r6522, ALL THE INTERRUPT FLAGS ARE CONTAINED IN ONE REGISTER, I.E.,
- THE ifr (fIGURE 29). iN ADDITION, BIT 7 OF THIS REGISTER WILL BE READ AS A
- LOGIC 1 WHEN AN INTERRUPT EXISTS WITHIN THE CHIP. tHIS ALLOWS VERY
- CONVENIENT POLLING OF SEVERAL DEVICES WITHIN A SYSTEM TO LOCATE THE SOURCE
- OF AN INTERRUPT.
-
-
- reg 13 -- interrupt flag register
- +-+-+-+-+-+-+-+-+
- {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c} set by cleared by
- +-+-+-+-+-+-+-+-+ +-----------------------+------------------------------+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--ca2{$7c} ca2 active edge {$7c} read or write reg 1 (ora)* {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +-----------------------+------------------------------+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--ca1--{$7c} ca1 active edge {$7c} read or write reg 1 (ora) {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +-----------------------+------------------------------+
- {$7c} {$7c} {$7c} {$7c} {$7c} +shift reg{$7c} complete 8 shifts {$7c} read or write shift reg {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} +-----------------------+------------------------------+
- {$7c} {$7c} {$7c} {$7c} +-cb2-------{$7c} cb2 active edge {$7c} read or write orb* {$7c}
- {$7c} {$7c} {$7c} {$7c} +-----------------------+------------------------------+
- {$7c} {$7c} {$7c} +-cb1---------{$7c} cb1 active edge {$7c} read or write orb {$7c}
- {$7c} {$7c} {$7c} +-----------------------+------------------------------+
- {$7c} {$7c} +-timer 2-------{$7c} time-out of t2 {$7c} read t2 low or write t2 high {$7c}
- {$7c} {$7c} +-----------------------+------------------------------+
- {$7c} +-timer 1---------{$7c} time-out of t1 {$7c} read t1 low or write t1 high {$7c}
- {$7c} +-----------------------+------------------------------+
- +-irq---------------{$7c} any enabled interrupt {$7c} clear all interrupts {$7c}
- +-----------------------+------------------------------+
-
- * if the ca2/cb2 control in the pcr is selected as "independent"
- interrupt input, then reading or writing the output register
- ora/orb will not clear the flag bit. instead, the bit must be
- cleared by writing into the ifr, as described previously.
-
- fIGURE 29. iNTERRUPT fLAG rEGISTER (ifr)
-
-
- tHE iNTERRUPT fLAG rEGISTER (ifr) MAY BE READ DIRECTLY BY THE PROCESSOR.
- iN ADDITION, INDIVIDUAL FLAG BITS MAY BE CLEARED BY WRITING A "1" INTO THE
- APPROPRIATE BIT OF THE ifr. wHEN THE PROPER CHIP SELECT AND REGISTER
- SIGNALS ARE APPLIED TO THE CHIP, THE CONTENTS OF THIS REGISTER ARE PLACED
- ON THE DATA BUS. bIT 7 INDICATES THE STATUS OF THE irq OUTPUT. tHIS BIT
- CORRESPONDS TO THE LOGIC FUNCTION: irq = ifr6Xier6 + ifr5Xier5 + ifr4Xier4 +
- + ifr3Xier3 + ifr2Xier2 + ifr1Xier1 + ifr0Xier0
-
- nOTE:
-
- X = LOGIC and, + = LOGIC or
-
- tHE ifr BIT 7 IS NOT A FLAG. tHEREFORE, THIS BIT IS NOT DIRECTLY CLEARED
- BY WRITING A LOGIC 1 INTO IT. iT CAN ONLY BE CLEARED BY CLEARING ALL THE
- FLAGS IN THE REGISTER OR BY DISABLING ALL THE ACTIVE INTERRUPTS AS
- DISCUSSED IN NEXT SECTION.
-
-
- iNTERRUPT eNABLE rEGISTER (ier)
-
- fOR EACH INTERRUPT FLAG IN ifr, THERE IS A CORRESPONDING BIT IN THE
- iNTERRUPT eNABLE rEGISTER (ier) (fIGURE 30). iNDIVIDUAL BITS IN THE ier CAN
- BE SET OR CLEARED TO FACILITATE CONTROLLING INDIVIDUAL INTERRUPTS WITHOUT
- AFFECTING OTHERS. tHIS IS ACCOMPLISHED BY WRITING TO THE ier AFTER BIT 7
- SET OR CLEARED TO, IN TURN, SET OR CLEAR SELECTED ENABLE BITS. iF BIT 7 OF
- THE DATA PLACED ON THE SYSTEM DATA BUS DURING THIS WRITE OPERATION IS A 0,
- EACH 1 IN BITS 6 THROUGH 0 CLEARS THE CORRESPONDING BIT IN THE ier. fOR
- EACH ZERO IN BITS 6 THROUGH 0, THE CORRESPONDING BIT IS UNAFFECTED.
-
-
- reg 14 -- interrupt enable register
- +-+-+-+-+-+-+-+-+
- {$7c}7{$7c}6{$7c}5{$7c}4{$7c}3{$7c}2{$7c}1{$7c}0{$7c}
- +-+-+-+-+-+-+-+-+ -+
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +--- ca2 {$7c}
- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} +----- ca1 {$7c} 0 = interrupt
- {$7c} {$7c} {$7c} {$7c} {$7c} +------- shift reg {$7c} disabled
- {$7c} {$7c} {$7c} {$7c} +--------- cb2 {$7c}_
- {$7c} {$7c} {$7c} +----------- cb1 {$7c}
- {$7c} {$7c} +------------- timer 2 {$7c} 1 = interrupt
- {$7c} +--------------- timer 1 {$7c} enabled
- +----------------- set/clear {$7c}
- -+
-
- notes:
- 1 if bit 7 is a "0", then each "1" in bits 0-6 disables the
- corresponding interrupt.
- 2 if bit 7 is a "1", then each "1" in bits 0-6 enables the
- corresponding interrupt.
- 3 if a read of this register is done, bit 7 will be "1" and
- all other bits will reflect their enable/disable state.
-
- fIGURE 30. iNTERRUPT eNABLE rEGISTER (ier)
-
-
- sELECTED BITS IN THE ier CAN BE SET BY WRITING TO THE ier WITH BIT 7 IN
- THE DATA WORD SET TO A LOGIC 1. iN THIS CASE, EACH 1 IN BITS 6 THROUGH 0
- WILL SET THE CORRESPONDING BIT. fOR EACH ZERO, THE CORRESPONDING BIT WILL
- BE UNAFFECTED. tHIS INDIVIDUAL CONTROL OF THE SETTING AND CLEARING
- OPERATIONS ALLOWS VERY CONVENIENT CONTROL OF THE INTERRUPTS DURING SYSTEM
- OPERATION.
-
- iN ADDITION TO SETTING AND CLEARING ier BITS, THE CONTENTS OF THIS
- REGISTER CAN BE READ AT ANY TIME. bIT 7 WILL BE READ AS A LOGIC 1, HOWEVER.
-
-