Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Chapter 11 Basic I/O Interface Introduction µ : is great at solving problems but if can’t communicate with outside, it is of little worth outline some of basic methods of communications : both serial & parallel, between humans or machines and µ 1. introduce basic I/O interface, discuss decoding for I/O devices 2. provide detail on parallel and serial interfacing, both of which have a variety of applications 3. connect analog-to-digital and digital-to-analog converters, as well as both DC and stepper motors to µ Ch.11 Basic I/O Interface 2 11-1 Introduction to I/O interface explain : 1. operation of I/O instruction(IN,INS,OUT,OUTS) 2. concept of isolated(direct or I/O mapped I/O) and memory-mapped I/O 3. basic input and output interface 4. handshaking I/O instructions : Table 11-1 IN,OUT : transfer data between I/O device and µ’s accumulator(AL,AX,EAX) variable address : 16-bit I/O address in DX fixed address:8-bit form(p8) immediately following opcode I/O address : port, port no, port address Ch.11 Basic I/O Interface 3 Table 11-1 Table 11-1 Ch.11 Basic I/O Interface 4 11-1 Introduction to I/O interface 1st 256 I/O port address(00H~FFH) : accessed by fixed, variable I/O instruction 0100H~FFFFH : only accessed by variable I/O address INS : memory address is located by ES:DI OUTS : memory address is located by DS:SI Isolated I/O and Memory-Mapped I/O two different methods of interfacing I/O to µ : Isolated I/O : most common I/O transfer technique in Intel µ based system I/O locations : isolated from memory system IN, INS, OUT, OUTS transfer data between µ’s accumulator or memory and I/O Ch.11 Basic I/O Interface 5 Isolated I/O and Memory-Mapped I/O Fig.11-1 : both isolated & memory-mapped I/O address space PC : used for controlling peripheral devices 8-bit port address : used to access devices located on system board 16-bit port address : used to access serial & parallel port as well as video & disk drive systems advantage : fully utilized memory disadvantage : data transferred between I/O and µ : must accessed by IN, INS, OUT, OUTS separate control signals : I/O read(IORC’) using M/IO’,RD’, I/O write(IOWC’) using M/IO’, WR’ Ch.11 Basic I/O Interface 6 Fig. 11-1 Fig. 11-1 Ch.11 Basic I/O Interface 7 Isolated I/O and Memory-Mapped I/O Memory-Mapped I/O memory-mapped I/O device : treated as a memory location in the memory map not used IN, INS, OUT, OUTS used any instructions that transfer data between µ & memory advantage : to access I/O devices : used any memory transfer instruction disadvantage : a portion of memory : used as I/O map reduced circuit required for decoding : IORC’, IOWC’ have no function Ch.11 Basic I/O Interface 8 Personal Computer I/O Map Fig. 11-2 : I/O map for PC 0000H ~ 03FFH : reserved for computer system and ISA bus 0400H ~ FFFFH : for user applications, main-board functions, and PCI bus 00F8H~00FFH : for communications to coprocessor Basic Input Interface : Fig. 11-3 3-state buffers : used to construct 8-bit input port µ : read contents of 8 switches that connect to any 8-bit section of data bus when select signal SEL’ = 0 when µ execute IN : I/O port address is decoded to generate the logic 0 on SEL’ Ch.11 Basic I/O Interface 9 Fig. 11-2 Fig. 11-2 Ch.11 Basic I/O Interface 10 Fig. 11-3 Fig. 11-3 Ch.11 Basic I/O Interface 11 Basic Output Interface Basic Output Interface : Fig. 11-4 data latches : used to construct 8-bit output port basic output interface : received data from µ and must usually hold it for some external device when OUT execute : data from accumulator are transferred to latch via data bus Hand Shaking : many I/O : accept or release at a much slower rate than µ another method of I/O control : handshaking(polling) synchronize I/O device with µ parallel printer : print 100 characters per second(CPS) Ch.11 Basic I/O Interface 12 Fig. 11-4 Fig. 11-4 Ch.11 Basic I/O Interface 13 Handshaking Fig. 11-5 : typical input and output of printer D7~D0 : data connection BUSY : indicate that printer is busy STB’ : a clock pulse used to send data into printer handshaking(polling) µ poll and test BUSY pin. if busy, µ wait if not busy, ASCII data is placed on D7~D0, and pulse is applied to STB’ connection printer received data, placed a logic 1 on BUSY pin Ex. 11-1 : simple procedure that test printer BUSY flag & send data to printer if not busy Ch.11 Basic I/O Interface 14 Fig. 11-5 Fig. 11-5 Ch.11 Basic I/O Interface 15 Fig. 11-5 Fig. 11-5 Ch.11 Basic I/O Interface 16 Ex. 11-1 Ex. 11-1 Ch.11 Basic I/O Interface 17 Notes About Interfacing Circuitry Input Devices TTL level : logic 0(0.0V~0.8V) logic 1(2.0V~5.0V) switch-based device : not TTL-compatible Fig. 11-6 : toggle switch that is properly connected to function as an input device pull-up resister : usually anywhere 1K~10K ohm used to ensure that output signal logic 1(open), connect to ground, producing a valid logic 0(close) Fig. 11-7 : to prevent problem with bounce(closed) asynchronous Flip-Flop (a) classical textbook bounce eliminator(more money) (b) more practical version(no pull-up resister, 2 inverter) Ch.11 Basic I/O Interface 18 Fig. 11-6 Fig. 11-6 Ch.11 Basic I/O Interface 19 Output Devices Output Devices must understand what voltages and currents are from µ or TTL interface component voltages : TTL-compatible from µ logic 0 = 0.0 ~ 0.4V, logic 1 = 2.4V ~ 5.0V currents for µ and many µ-interfacing components : less than for standard TTL components logic 0 = 0.0 ~ 2.0mA, logic 1 = 0.0 ~ 400 µ Fig. 11-8 : interface a simple LED to a µ peripheral pin (a) : a transistor driver (b) TTL inverter LED : required 10mA of forward bias current to light assume : voltage drop=2.0V(nominal 1.65V, 1.5~2.0V) Ch.11 Basic I/O Interface 20 TTL compatible(74LS..) input voltage : 0(~0.8V), 1(2V~) input current : 0( ~ -0.2mA : 0.4V), 1(~ 20A : 2.7V) output voltage : 0(~0.4V : 12mA), 1(2.4V : -2mA~) output current : 0(~24mA), 1(~ -15mA) Ch.11 Basic I/O Interface 21 Output Devices current-limit resister = 3V/10ma = 300Ω ≒ 330Ω ∵ 300Ω : not a standard resistor values (a) 2N2222 : general-purpose switching TR(gain=100) base current=collector current/gain=10mA/100=0.1mA TTL input signal = minimum 2.4V voltage drop across emitter-base junction = 0.7V base current-limiting resistor=1.7V/0.1mA=17K≒18K 12V DC motor : current = 1A not used TTL inverter : two reason 1. 12V : burn out the inverter 2. exceed 16mA maximum current from inverter 2N2222 TR : maximum current 250mA~500mA Ch.11 Basic I/O Interface 22 Fig. 11-9 Darlington-pair : Fig. 11-9 minimum current gain=7000, maximum current=4A 1A/7000 = 0.143mA, (2.4-1.5)V/0.143=6.29K≒6.2K Darlington-pair : heat-sink diode : used to prevent Darlington-pair from being destroyed by inductive kick-back from motor this circuit : also used to interface mechanical relays Ch.11 Basic I/O Interface 23 11-2 I/O Port Address Decoding similar to memory address decoding, especially for memory-mapped I/O main difference : between memory decoding & isolated I/O decoding no of address pins connected to the decoder memory(A31~, A23~, A19~A0), isolated I/O(A15~A0) used only fixed I/O addressing : decode only A7~A0 another difference : use IORC’, IOWC’(M/IO’,RD’,WR’) Decoding 8-bit I/O addresses fixed I/O instruction : used 8-bit I/O port address that appear on A15~A0 as 0000H~00FFH Ch.11 Basic I/O Interface 24 11-2 I/O Port Address Decoding Fig. 11-10 : decode 8-bit I/O ports F0H~FFH Fig. 11-11 : using PAL for decoder(74AS138) Ex. 11-2 : PAL program Ch.11 Basic I/O Interface 25 Fig. 11-11 Fig. 11-11 Ch.11 Basic I/O Interface 26 Decoding 16-bit I/O Addressing Fig. 11-12 : used PAL 16L8, 8-input NAND NAND gate output : A15~A8(EF00H~EFFFH) PAL 16L8 : A7~A0(EFF8H~EFFFH) Ex. 11-3 : program for PAL 16L8 Ch.11 Basic I/O Interface 27 Ex. 11-3 Ex. 11-3 Ch.11 Basic I/O Interface 28 8- and 16-bit I/O Ports I/O system : 8-bit I/O banks, just as memory Fig. 11-13 : separate I/O banks for 16-bit system Ch.11 Basic I/O Interface 29 8- and 16-bit I/O Ports separate write strobe: any 8-bit I/O write of two I/O banks note : all I/O ports use 8-bit addresses Fig. 11-14 : two different 8-bit output devices located at 8-bit I/O address 40H, 41H(Ex. 11-4 : PAL program) port 40H,41H : addressed as separate 8-bit ports, or together as one 16-bit port 30 Fig. 11-14 Fig. 11-14 Ch.11 Basic I/O Interface 31 8- and 16-bit I/O Ports Fig. 11-15 : 16-bit input device connected to function at 8-bit I/O addresses 64H, 65H Ex. 11-5 : enable signal of 3-state buffers(74LS244) Ch.11 Basic I/O Interface 32 Fig. 11-15 Fig. 11-15 Ch.11 Basic I/O Interface 33 32-bit Wide I/O Ports 32-bit wide I/O port : not common eventually become commonplace because newer buses EISA system bus, VESA local, current PCI bus Fig.11-16:32-bit input port for 32-bit µ(8-bit port 70~73H) Ex. 11-6 : PAL program /SEL=/IORC*/A7*A6*A5*A4*/A3*/A2=0111 00xx 64-bit Pentium µ : 8-bit I/O port 0034H : Pentium I/O bank 5 16-bit I/O port 0034H~0035H : I/O bank 5,6 32-bit I/O port 0100H~0103H : I/O bank 0~3 widest I/O transfer : 32 bits, no 64-bit I/O instructions Ch.11 Basic I/O Interface 34 Fig. 11-16 Fig. 11-16 Ch.11 Basic I/O Interface 35 11-3 The Programmable Peripheral Interface 82C55 PPI : programmable peripheral interface very popular, low-cost interfacing component 24 pins for I/O : programmable in groups of 12 pins groups that operate in three distinct modes of operation interface any TTL-compatible I/O device to µ require wait states if operated with µ higher than 8MHz provided at least 2.5 mA of sink current at each output, with a maximum of 4.0 mA Fig. 11-17 : pin-out diagram three I/O ports A,B,C : programmed as groups group A : port A(PA7~PA0), PC7~PC4 of port C group B : port B(PB7~PB0), PC3~PC0 of port C Ch.11 Basic I/O Interface 36 Fig. 11-17 Fig. 11-17 Ch.11 Basic I/O Interface 37 11-3 The Programmable Peripheral Interface A1~A0 : select an internal register for programming or operation(Table 11-2) PC system : 82C55 is decoded at I/O ports 60H~63H for keyboard control, for controlling speaker, timer Fig. 11-18 : 82C55 connected to 80386SX 8-bit I/O port addresses C0H(port A), C2H(port B), C4H(port C), C6H(command register) interfaced low bank of 80386SX I/O map RESET : initialized 82C55 whenever µ is reset all ports : set up as simple input ports using mode 0 internally programmed input pins after RESET damage: prevented when power is 1st applied to system Ch.11 Basic I/O Interface 38 Table 11-2 Table 11-2 Ch.11 Basic I/O Interface 39 Fig. 11-18 Fig. 11-18 Ch.11 Basic I/O Interface 40 Fig. 11-19 Fig. 11-19 Ch.11 Basic I/O Interface 41 Programming the 82C55 82C55 : programmed through two internal command reg. bit 7 of command byte : 1(command byte A), 0(“ B) command byte A : programmed function of group A, B command byte B : set or reset bits of port C only if 82C55 is programmed in mode 1 or 2 : Fig.11-19 group B(port B, PC3~PC0) : operated in either mode 0, 1 mode 0 : basic input/output mode group B : programmed as buffered input, latched output mode 1 : strobed operation data : transferred through port B handshaking signal : provided by port C Ch.11 Basic I/O Interface 42 Programming the 82C55 group A(port A, PC7~PC4):operated in either mode 0,1,2 mode 2 : operated bi-directional mode for port A Mode 0 Operation function either as buffered input or latched output Fig. 11-20 : connected to eight 7-segment LED display port A, B : programmed as latched output port(mode 0) port A : provided segment data output to display port B : provided a means of selecting one display position at a time for multiplexing display I/O port no.s : 0700H~0703H Ex. 11-7 : program for PAL 16L8 Ch.11 Basic I/O Interface 43 Ex. 11-7 Ex. 11-7 Ch.11 Basic I/O Interface 44 Fig. 11-20 Fig. 11-20 Ch.11 Basic I/O Interface 45 Mode 0 Operation resister values : average current 10mA per segment segment current = 80mA(8ea10mA) segment load resister : (5 - 0.2 - 1.65 - 0.2)V/80mA 3.0V/80mA = 36.875Ω 39Ω minimum gain of transistor : 100 base current of segment switch : 80mA/100 = 0.8mA logic 1 output voltage of 82C55 : typical 3.0 V base resister : (3 – 0.7)V/0.8mA = 2.875KΩ 2.2KΩ base current of anode switch : 70mA/100 = 0.7mA base resister : (5 – 0.7 – 0.4)V/0.7mA = 5.57KΩ Ch.11 Basic I/O Interface 46 Mode 0 Operation Ex. 11-8 : programmed port A, B as outputs Ex. 11-9: procedure to multiplex the displays(MSD=right) procedure DELAY : cause a 1 ms time delay recommended display flash : 100 ~ 1500 Hz light each digit : 1 ms total display flash rate : 1000 Hz/8 display = 125 Hz eight 7-segment code : stored at MEM ~ MEM+7(MSD) Ch.11 Basic I/O Interface 47 Ex. 11-9 Ex. 11-9 Ch.11 Basic I/O Interface 48 An LCD Display Interfaced to the 82C55 LCD(liquid crystal display) : quickly replacing LED disadvantage : difficult to see in low-light situations Fig. 11-21 : Optrex DMC-20481(4 line 20 ch.) LCD accept ASCII code as input data also accept command to initialize, control its application data connections : attached to 82C55 port A used to input display data and to output information from display four control pins : VEE, RS, E, R/W’ VEE : to adjust the contrast of LCD normally connected to 10K potentiometer Ch.11 Basic I/O Interface 49 Fig. 11-21 Fig. 11-21 Ch.11 Basic I/O Interface 50 An LCD Display Interfaced to the 82C55 RS(resister select) : data(RS=1) or instructions(RS=0) E(enable) : logic 1 to read or write information R/W’ : select a read or a write operation two inputs for back-lighting LED, which not shown normally, RS(1 or 0), R/W’(1 or 0), data input pins(data) and then E pin is pulsed to access the LCD initialization : accomplished via following steps 1. wait at least 15ms after Vcc rise to 5.0V 2. output function set command(30H), wait at least 4.1ms 3. output function set command(30H) a second time, wait at least 100 ㎲ Ch.11 Basic I/O Interface 51 An LCD Display Interfaced to the 82C55 4. output function set command(30H) a third time, wait at least 40 ㎲ 5. output function set command(38H) a fourth time, wait at least 40 ㎲ 6. output a 08H to disable display, wait at least 40 ㎲ 7. output a 01H to home cursor and clear display, wait at least 1.64 ms 8. output the enable display cursor off(0CH), wait at least 40 ㎲ 9. output a 06H to select auto-increment, shift cursor, wait at least 40 ㎲ Ch.11 Basic I/O Interface 52 An LCD Display Interfaced to the 82C55 Ex. 11-10 : initialization three time delays : DELAY15, DELAY41, DELAY100 clock tick : used for all timing NOP(in OUTCMD procedure) : to ensure that E bit remain a logic 1 long enough to activate LCD display Table 11-3 : command used in initialization dialog to display information and control the display : needed a few procedure no longer needed time delay : test busy flag bit Ex. 11-11 : BUSY procedure test LCD and only return when display has completely a prior instruction Ch.11 Basic I/O Interface 53 Ex. 11-10 Ex. 11-10 Ch.11 Basic I/O Interface 54 Ex. 11-10 Ex. 11-10 Ch.11 Basic I/O Interface 55 Table 11-3 Table 11-3 Ch.11 Basic I/O Interface 56 Ex. 11-11 Ex. 11-11 Ch.11 Basic I/O Interface 57 An LCD Display Interfaced to the 82C55 Ex. 11-12 : WRITE procedure used BUSY to test before trying to write new data to display transfer ASCII character from BL to current cursor position of display initialization : cursor for auto-increment Ex. 11-13 : CLS procedure clear and home cursor : at least 1.64 ms time delay used DELAY41 instead of a call to BUSY inside display RAM : 128 bytes(00H~7FH) 2 line 40 ch : 1st(00H~27H), 2nd(40H~67H) 4 20 ch : 1st(00H~), 2nd(40H~), 3rd(14H~), 4th(54H~) Ch.11 Basic I/O Interface 58 Ex. 11-12 Ex. 11-12 Ch.11 Basic I/O Interface 59 Ex. 11-13 Ex. 11-13 Ch.11 Basic I/O Interface 60 A Stepper Motor Interfaced to the 82C55 stepper motor : digital motor because it is moved in discrete steps as it traverse through 360° geared to move 15°(common)~1° per step(high-precision) steps: gained through many magnetic poles and/or gearing Fig. 11-22 : four-coil step motor that use an armature with a single pole(energized two coils : 45°,135°,225°,315°) Fig. 11-23 : stepper motor interfaced to 82C55 driven by using NPN Darlington amplifier pairs to provide a large current to each coil Ex. 11-14 : procedure(port A : programmed in mode 0) CX : hold no of steps and direction of rotation Ch.11 Basic I/O Interface 61 Fig. 11-22 Fig. 11-22 Ch.11 Basic I/O Interface 62 Fig. 11-23 Fig. 11-23 Ch.11 Basic I/O Interface 63 Ex. 11-14 Ex. 11-14 Ch.11 Basic I/O Interface 64 A Stepper Motor Interfaced to the 82C55 CX > 8000H : spin in right-hand direction CX < 8000H : spin in left-hand direction remaining 15-bit(removed LSB of CX) : no of steps 1 ms time delay(not illustrated) : required to allow stepper-motor armature time to move to its next position current position : stored in memory location POS 33H, 66H, 0CCH, 99H : ROR(step right), ROL(step left) full step : eight step sequence : 11H,33H,22H,66H,44H,0CCH,88H,99H 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315° half step mode : energized one coil(0°, 90°, 180°, 270°) Ch.11 Basic I/O Interface 65 Key Matrix Interface keyboard : vast variety of sizes from standard 101-key to small specialized "(4-16 keys) Fig. 11-24 : small key-matrix 16 switches(44) interfaced to port A, B of 82C55 4 rows(Row0~3 : PA0~3), 4 col.(Col0~Col3 : PB0~3) each row : connected to 5.0V through 10K pull-up reg. to ensure that row is pulled high when no push-button switch is closed decoded at I/O ports 50H~53H by PAL(no program) port A : programmed as input port to read the rows port B : programmed as output port to select a column Ch.11 Basic I/O Interface 66 Fig. 11-24 Fig. 11-24 Ch.11 Basic I/O Interface 67 Key Matrix Interface port B pins PB3-PB0 = 1110 : Col0 = logic 0 selected four keys in column 0 switch 0-3 = closed : one of PA3-PA0 = logic 0 switch 4-F = closed : port A = remained logic 1 Fig. 11-25 : flowchart to read a key from keyboard and debounce the key(short time delay of 10-20ms) 1. wait for release of a key 2. wait for a keystroke 3. calculated position of the key Ex. 11-15 : main keyboard procedure(KEY) SCAN:to scan keys, DELAY:waste 10ms for debouncing Ch.11 Basic I/O Interface 68 Fig. 11-25 Fig. 11-25 Ch.11 Basic I/O Interface 69 Ex. 11-15 Ex. 11-15 Ch.11 Basic I/O Interface 70 Ex. 11-15 Ex. 11-15 71 Mode 1 Strobed Input Mode 1 : Fig. 11-26 port A and/or port B to function as latching input devices port C : used for control or handshaking signal signal definition for mode 1 strobed input : STB’(strobe) input : capture external data into port latch on 0-to-1 transition activate IBF(input buffer full), INTR(interrupt request) port latch : hold data until µ read it via IN instruction µ : notice through software(IBF) or hardware(INTR) IBF output : indicated that input latch contain information INTR output : requested an interrupt =1:when STB’ return to 1, =0:when µ read data via IN Ch.11 Basic I/O Interface 72 Fig. 11-26 Fig. 11-26 73 Mode 1 Strobed Input INTE(interrupt enable) signal : neither input nor output internal bit programmed via PC4(port A), PC2(port B) PC7, PC6 : available for any general-purpose I/O keyboard : excellent example of strobed input device debounced a key-switches provided strobed signal whenever a key is depressed data output contained the ASCII-coded key code Fig. 11-27 : keyboard connected to strobed input port A DAV’(data available) : connected to STB’ activated for 1.0µs each time that a key is typed each time a key is typed : data is stored into port A Ex. 11-16 : procedure Ch.11 Basic I/O Interface 74 Fig. 11-27 Fig. 11-27 Ch.11 Basic I/O Interface 75 Ex. 11-16 Ex. 11-16 Ch.11 Basic I/O Interface 76 Mode 1 Strobed Output Fig. 11-28 : signal definition for mode 1 strobed output : OBF’(output buffer full) output : 0: whenever data are output(OUT) to port A, B latch 1: whenever ACK’ pulse return from external device ACK’(acknowledge) input : indicate that external device has received the data from 82C55 port INTR output : often requested an interrupt when external devices receive data via ACK’ qualified by internal INTE’ bit INTE’ : neither input nor output internal programmed bit via PC6(port A), PC2(port B) Ch.11 Basic I/O Interface 77 Fig. 11-28 Fig. 11-28 78 Mode 1 Strobed Output PC5, PC4 : general-purpose I/O pins printer interface(Fig.11-29) : strobed output example port B : connected to parallel printer PC2 : ACK’ to acknowledge the receipt of ASCII ch. DS’(data strobe) to strobe data into printer PC4 : used with software that generate DS’ signal Ex. 11-17 : software that send ASCII-coded character in AH to printer 1. test OBF’, if not wait if OBF’=1 : send AH to printer through port B and also send DS’ signal Ch.11 Basic I/O Interface 79 Fig. 11-29 Fig. 11-29 Ch.11 Basic I/O Interface 80 Ex. 11-17 Ex. 11-17 Ch.11 Basic I/O Interface 81 Mode 2 Bi-directional Operation port A only : bi-directional mode 1 strobed input and output useful when interfacing two computers used for IEEE-488 parallel high-speed GPIB(general purpose instrumentation bus) interface standard Fig. 11-30 : the bi-directional bus used by referencing port A with IN, OUT instructions Ex. 11-18 : to transmit data through bi-directional bus Ex. 11-19 : to receive data through bi-directional bus INTR : activated from both directions of data flow Ch.11 Basic I/O Interface 82 Fig. 11-30 Fig. 11-30 83 Ex. 11-18 Ex. 11-18 Ch.11 Basic I/O Interface 84 Ex. 11-19 Ex. 11-19 Ch.11 Basic I/O Interface 85 82C55 Mode Summary Fig. 11-31 : graphical summary of three mode Ch.11 Basic I/O Interface 86 11-4 8279 programmable keyboard/display interface scan and encode up to a 64-key keyboard and control up to a 16-digit numerical display keyboard interface : built-in FIFO buffer that allow to store up to 8 keystrokes before µ must retrieve a character display interface : internal 168 RAM that store coded display information Basic Description of the 8279 : Fig. 11-32 A0 input : select data or control for read and write A0=0 : data, A0=1 : control or status register BD’(blank) output : used to blank the display Ch.11 Basic I/O Interface 87 Fig. 11-32 Fig. 11-32 Ch.11 Basic I/O Interface 88 8279 CLK : generate internal timing max. 3.125MHz : 8279-5, 2.0MHz : 8279 CN/ST(control/strobe) input : normally connected to Control key on a keyboard DB7-DB0(data bus) : bi-directional pins IRQ(interrupt request) output : 1 whenever a key is pressed indicate that keyboard data are available for µ OUTA3-OUTA0 : send data to display(most-significant) OUTB3-OUTB0 : send data to display(least-significant) CS’, RD’, WR’, RESET, Vcc(+5.0V), Vss(ground) RL7-RL0(return line) input : used to sense any key depression SHIFT input : normally connected to Shift key on a keyboard SL3-Sl0(scan line) output : scan both keyboard and display Ch.11 Basic I/O Interface 89 Interfacing 8279 to Microprocessor Fig. 11-33 : 8279 connected to 8088(8 MHz) decoded at 8-bit I/O address 10H(data), 11H(control port) Ex. 11-20 : PAL 16L8 program WAIT2’ : used to cause two wait states Fig. 11-34 : keyboard interface keyboard matrix : any size from 22 to 88 matrix key : normal open push-button switch 74LS138 : generate eight low column strobe signal SL2-Sl0 : sequentially scan each column of keyboard 8279 : scan RL pins(internal pull-up resister) 8 control word : Table 11-4 Ch.11 Basic I/O Interface 90 Fig. 11-33 Fig. 11-33 Ch.11 Basic I/O Interface 91 Ex. 11-20 Ex. 11-20 Ch.11 Basic I/O Interface 92 Fig. 11-34 Fig. 11-34 Ch.11 Basic I/O Interface 93 Table 11-4 Table 11-4 Ch.11 Basic I/O Interface 94 8279 Control Word 000 DD MMM : mode set DD : select mode of operation for display(Table 11-5) select 8- or 16-digit display determine whether new data are entered to rightmost or leftmost display position MMM : select mode of operation for keyboard(T. 11-6) encoded mode : SL output = active high, and follow binary bit pattern 0 through 7, or 0 through 15, depending whether 8- or 16-digit displays are selected decoded mode : SL output repeat pattern 1110,1101,1011,0111 strobed mode : active high pulse on CN/ST input pin strobe data from RL into internal FIFO Ch.11 Basic I/O Interface 95 Table 11-5 Table 11-5 Ch.11 Basic I/O Interface 96 8279 Control Word 2-key lock-out : prevent two keys from being recognized if pressed simultaneously N-key rollover : accept all keys pressed simultaneously, from 1st to last 001 PPPPP : clock command programmed internal clock divider PPPPP : prescaler that divide clock input pin(CLK) to achieve the desired operating frequency of approximately 100KHz CLK=1MHz : PPPPP=1010=010102, CLK=3MHz : 30=111102 010 Z 0 AAA : read FIFO select address of a keystroke from internal FIFO buffer AAA : select desired FIFO location from 000 to 111 Ch.11 Basic I/O Interface 97 8279 Control Word Z : auto-increment for address 011 Z AAAA : display read select read address of one of display RAM position AAAA : address of position to be read Z : auto-increment for address 100 Z AAAA : write display select write address of one of display A… : address position to be written to through data port 101 0 WW BB : display write inhibit inhibit writing to either half of each display RAM location left W : inhibit writing to leftmost 4 bits BB : blank(turn off) either half of output pins Ch.11 Basic I/O Interface 98 8279 Control Word 110 0 CCFA : clear clear display, FIFO, or both display and FIFO(All) F : clear FIFO and display RAM status, set address pointer to 000 CC = 00 or 01 : all of display RAM ⇒ 00H(0000 0000) CC = 10 : 20H(space, 0010 0000) CC = 11 : FFH(1111 1111) 111 E 000 : end of interrupt to clear IRQ pin to zero in sensor matrix mode E=1 : used special error mode status reg. indicate if multiple key closure have occur Ch.11 Basic I/O Interface 99 8279 initialization of keyboard interface(Fig.11-34) : 1. determined clock divider: 3MHz/30(111102)=100KHz 2. program keyboard type : encoded, 2-key lockout 3. program operation of FIFO Ex. 11-21 Ch.11 Basic I/O Interface 100 8279 Ex. 11-22 : procedure to read data from keyboard FIFO status register : Fig. 11-35 NNN=000 : FIFO empty FIFO not empty : inputs data to AL, return 101 Fig. 11-35 Fig. 11-35 Ch.11 Basic I/O Interface 102 Fig. 11-36 Fig. 11-36 : format of scanned and strobed mode scanned code : converted to ASCII by using XLAT instruction with ASCII code lookup table returned with CT, SH and row, column no. SH, CT : show state of shift pin, control pin strobed mode : 8 RL inputs appear as they are sampled by placing a logic 1 on strobe input pin to 8279 Ch.11 Basic I/O Interface 103 Six-Digit Display Interface Fig. 11-37 : interfaced 6-digit numeric display to 8088 PAL 16L8 : decoded 8279 at I/O port 20H, 21H segment data : supplied displays through OUTA,OUTB buffered by segment driver(ULN2003A) 3-to-8 decoder(74ALS138) : enable anode switch (5-0.2-1.65-0.4)/60mA=2.75/0.06=45.847Ω (5-0.7-0.4)/80mA/100=3.9/0.8mA=4.875K=4.8K Ex. 11-23 : initialization Ex. 11-24 : procedure for displaying data : transferred to procedure through AX AH : 7-segment display code AL : address of displayed digit Ch.11 Basic I/O Interface 104 Fig. 11-37 Fig. 11-37 105 Ex. 11-23,24 Ex. 11-23,24 106 11-5 8254 Programmable Interval Timer 8254: 3 independent 16-bit programmable counters(timers) each counter : capable of counting in binary or BCD maximum allowable input frequency : 10MHz useful to control real-time events ex of usage : real-time clock, event counter, motor speed and direction control PC : decoded at ports 40H~43H(8253 instead of 8254) 1. generate a basic timer interrupt(≈18.2Hz): clock tick 2. cause DRAM memory to be refreshed(15µs) 3. provide timing source to internal speaker and other devices Ch.11 Basic I/O Interface 107 8254 Fig. 11-38 : pin-out and internal block diagram each timer : CLK input, gate input, OUT output CLK : provide basic operating frequency to the timer often connected to PCLK from µ system bus controller gate pin : control timer in some modes always sampled on rising edge of CLK OUT pin : obtain the output of timer A1, A0 : select one of four internal reg.(Table 11-7) 00,01,10,11 : counter 0,1,2, control word programming the 8254 each counter : individually programmed by control word Fig. 11-39 : control word Ch.11 Basic I/O Interface 108 Fig. 11-38 Fig. 11-38 Ch.11 Basic I/O Interface 109 Table 11-7 Table 11-7 Ch.11 Basic I/O Interface 110 Fig. 11-39 Fig. 11-39 Ch.11 Basic I/O Interface 111 8254 each counter : programmed with a count of 1 to FFFFH count of 0 : equal to FFFFH + 1(65536) or 10000(BCD) all modes of operation : minimum count of 1 except modes 2, 3(minimum count of 2) timer 0 in PC : divide by count of 64K to generate 18.2Hz(18.196Hz) interrupt clock tick (4.77MHz/4=1.1925MHz)/65536 = 18.196Hz programmed two bytes into counter : 1st byte(LSB) : will stop the count 2nd byte(MSB) : start counter with new count Ex. 11-25 : show two method to program counter 1,2 Ch.11 Basic I/O Interface 112 Ex. 11-25 Ex. 11-25 Ch.11 Basic I/O Interface 113 Modes of operation Fig. 11-40 : functions six modes with CLK, gate, OUT mode 0 : interrupt on terminal count typically used for event counting OUT = 0 : when control word is written and until counter reach zero G : no effected on OUT, =1:enable counting, =0:disable mode 1 : hardware retriggerable one-shot monostable multivibrator : one-shot pulse G : trigger, retrigger counter mode 2 : rate generator functions like a divide-by-N counter Ch.11 Basic I/O Interface 114 Fig. 11-40 Fig. 11-40 115 Fig. mode 0 Fig. mode 0 116 Fig. mode 1 Fig. mode 1 117 Fig. mode 2 Fig. mode 2 118 Modes of operation generate a series of continuous pulses(one clock pulse width) count = 10 : OUT=1 for 9 clock, =0 for one clock period cycle : repeated until programmed counter with new count or G = 0 G = 0 to 1 : initiate new counting mode 3 : square wave mode generate a continuous square-wave typically used for Baud rate generation count=even : high for one-half, low for one-half of count count=odd : high for one clocking period longer than low Ch.11 Basic I/O Interface 119 Fig. mode 3 Fig. mode 3 120 Modes of operation mode 4 : software triggered strobe produce a single pulse at OUT count= 10 : OUT=1 for 10 clock, =0 for one clock period OUT : initially high G : no effected on OUT, =1:enable counting, =0:disable cycle : not begin until counter loaded new count mode 5 : hardware triggered strobe(retriggerable) like as mode 4, except that started by trigger pulse on G similar to mode 1 : retriggerable GATE operation : minimum, maximum initial count : Ch.11 Basic I/O Interface 121 Fig. mode 4 Fig. mode 4 122 Fig. mode 5 Fig. mode 5 123 Fig. GATE operation Fig. GATE operation Ch.11 Basic I/O Interface 124 Fig. min, max initial count Fig. min, max initial count Ch.11 Basic I/O Interface 125 Generating a Wave-form with 8254 Fig. 11-41 : 8254 connected to 80386SX I/O port : 0700H, 0702H, 0704H, 0706H address : decoded by using a PAL 16L8 Ex. 11-26 : CLK0,1 = 8MHz OUT0 = 100KHz square-wave : mode 3 for counter 0 100KHz = 8 MHz / 80 OUT1=200KHz continuous pulse: mode 2 for counter 1 200KHz = 8MHz / 40 Ch.11 Basic I/O Interface 126 Fig. 11-41 Fig. 11-41 Ch.11 Basic I/O Interface 127 Ex. 11-26 Ex. 11-26 128 8254 Programmable Interval Timer Reading a Counter each counter : have an internal latch latch : normally follow the count can remember the count by programming the counter latch control word(Fig. 11-42) held contents of counter until it is read read-back control word(Fig. 11-43) : read more than one counter at same time CNT’ = 0 : counters selected by CNT0, CNT1, CNT2 ST’ =0 : latched status register Ch.11 Basic I/O Interface 129 Fig. 11-39 Fig. 11-39 Ch.11 Basic I/O Interface 130 Fig. 11-42,43 Fig. 11-42,43 Ch.11 Basic I/O Interface 131 8254 status register : Fig. 11-44 Ch.11 Basic I/O Interface 132 DC Motor Speed and Direction Control Fig. 11-45 : 8254 as DC motor speed controller JK FF’s Q = 1 : U4C, U4D inverter’s output = 0 Q3’s base = 0 ∴Q3 = saturation, Q4’s base = 0 ∴Q4 = cutoff Q’ = 0 : U4A, U4B inverter’s output = 1 Q1’s base = 1 ∴Q3 = cutoff, Q2’s base = 1 ∴Q2 = saturation current : +12V → Q3 → motor -, + →Q2 → ground cause the motor to spin in its reverse direction forward direction : Q = 0(Q’ = 1) Q alternated between 1 and 0 : motor spin in either direction at various speeds duty cycle of Q = 50% : not spin at all Fig. 11-46 : timing for motor speed and direction Ch.11 Basic I/O Interface 133 Fig. 11-45 Fig. 11-45 134 Fig. 11-46 Fig. 11-46 135 DC Motor Speed and Direction Control each counter : generate pulses at different position to vary the duty cycle at Q = pulse width modulation counter 0,1 : programmed to divide input clock by 30720 duty cycle of Q : by changing point at which counter 1 is started in relationship to counter 0 260.42Hz = 8MHz/30720 : operating frequency 60Hz < operating frequency < 1000Hz 256(8 bit) different speed = 30720/256 = 120 Ex.11-27:procedure that control speed & direction of motor speed : controlled by value of AH(00H~80H~FFH) reverse direction max speed, stop, forward max speed BX=30720-(AH*120) start counter 1, start counter 0 when counter 1=BX Ch.11 Basic I/O Interface 136 Ex. 11-27 Ex. 11-27 Ch.11 Basic I/O Interface 137 Ex. 11-27 Ex. 11-27 Ch.11 Basic I/O Interface 138 11-6 16550 Programmable communications interface 16550 : designed to connect to any type of serial interface universal asynchronous receiver/transmitter(UART) capable of operating at 0 ~ 1.5 M Baud Baud rate : no of bits transferred per second, including start, stop, data, and parity included programmable Baud rate generator, separate FIFOs for input and output data each FIFO : 16 bytes of storage Asynchronous Serial Data : Fig. 11-47 transmitted & received without a clock or timing signal frame : a start bit, seven data bits, parity, one stop bit ASCII character : 10 bits Ch.11 Basic I/O Interface 139 16550 Functional Description Fig. 11-48 : pin-out of 16550 140 16550 Functional Description 40-pin DIP(dual in-line package) : Fig 11-48, 44 pin PLCC(plastic lead-less chip carrier) able function in simplex, half-duplex, full-duplex mode simplex : transmitter or receiver is used by itself such as FM(frequency modulation) radio station half-duplex : transmit and receive, but not both at same time such as CB(citizens band) radio full-duplex : allow transmit and receive in both directions simultaneously 16550 : control a modem(modulator/demodulator) convert TTL levels of serial data into audio tones that can pass through telephone system Ch.11 Basic I/O Interface 141 16550 Functional Description six pin : devoted to modem control DSR’(data set ready) input : indicate that modem or data set is ready to operate DTR’(data terminal ready) output : indicate that data terminal(16550) is ready to function CTS’(clear-to-send) input : indicate that modem or data set is ready to exchange information. used in half-duplex RTS’(request-to-send) output : indicate that UART wish to send data RI’(ring indicator) input : by modem to indicate that telephone is ringing DCD’(data carrier detect) input : used by modem to signal the 16550 that a carrier is present Ch.11 Basic I/O Interface 142 16550 Pin Functions modem : data set equipment(DTE), data communication equipment(DCE) 16550 : referred to as data terminal A0,A1,A2(Fig.11-8) : select internal reg. and data transfer Ch.11 Basic I/O Interface 143 16550 Pin Functions ADS’(address strobe) input : latch address lines and chip select lines CS0, CS1, CS2’(chip select) : all active to enable 16550 D7~D0 : data bus BAUDOUT’ : clock signal generated by BAUD rate generator from transmitter section. connected to RCLK input to generate a receive clock RCLK(receiver clock) : clock to receiver section always 16 desired receiver Baud rate DDIS(disable driver) output : logic 0 to indicate that µ is reading data from UART can used to change direction of data flow through a buffer INTR(interrupt request) output : to µ Ch.11 Basic I/O Interface 144 16550 Pin Functions MR(master reset) input : initialize 16550 connected to system RESET signal. interrupt disable RD, RD’ input(either) : cause data to be read from register specified by address input WR, WR’ input(either) : cause to transfer command and data to 16550 SIN(serial input) : accept serial data SOUT(serial output) : transmit serial data RXRDY’(receiver ready) : used to transfer received data via DMA TXRDY’(transmitter ready) : used to transfer transmitter data via DMA XIN, XOUT : connected crystal, or external timing source Ch.11 Basic I/O Interface 145 Programming the 16550 two part : initialization dialog, operation dialog initialization dialog : after HW/SW reset 1. programming line control register(A2,A1,A0=011) 2. Baud rate generator(enable divisor latch : line control reg) divisor : LSB = 000, MSB = 001 (A2,A1,A0) 3. enable FIFO(A2,A1,A0=010) 1. line control register : Fig. 11-49 select no of data bit, no of stop bit, parity I/O port : 011(A2,A1,A0) Table 11-9 : ST, P, PE bit SB(send break)=1 : break is transmitted from SOUT pin break : at least two frame of logic 0 data Ch.11 Basic I/O Interface 146 Fig. 11-49 Fig. 11-49 Ch.11 Basic I/O Interface 147 Table 11-9 Table 11-9 Ch.11 Basic I/O Interface 148 Table 11-10 2. programming Baud rate : Table 11-10 16-bit divisor : I/O port : A2,A1,A0 = 000(LSByte), 001(MSByte) divisor=240 : 18.432MHz/(16240)=4800 Baud Ch.11 Basic I/O Interface 149 Programming the 16550 Fig. 11-50 : interface 16550 to 8088 using PAL 16L8 to decode F0H~F7H Ex. 11-28 : asynchronous system required 7 data bits, odd parity, Baud rate of 9600 FIFO control register : Fig. 11-51 I/O port = 010 (Table 11.8) line status register(I/O port=101) : Fig. 11-52 error condition, state of transmitter and receiver Sending Serial Data : Ex. 11-29 transmit the contents of AH polled TH bit Ch.11 Basic I/O Interface 150 Fig. 11-50 Fig. 11-50 Ch.11 Basic I/O Interface 151 Ex. 11-28 Ex. 11-28 Ch.11 Basic I/O Interface 152 FIFO control register : Fig. 11-51 I/O port(A2,A1,A0) = 010 (Table 11.8) Ch.11 Basic I/O Interface 153 line status register : Fig. 11-52 I/O port(A2,A1,A0) = 101 (Table 11.8) error condition, state of transmitter and receiver Ch.11 Basic I/O Interface 154 Sending Serial Data : Ex. 11-29 transmit the contents of AH, polled TH bit Ch.11 Basic I/O Interface 155 Programming the 16550 Receiving Serial Data : Ex. 11-30 test DR bit return with AL(ASCII ‘?’) : if detected error UART Errors : occur during normal operation parity error : indicate the received data with wrong parity encountered noise during reception framing error : start, stop bits are not in proper places received data at an incorrect Baud rate overrun error : data have overrun the internal receiver FIFO buffer only if s/w fail to read data from UART before FIFO is full BI(break indicator) bit : not checked break : two consecutive frame of logic 0s on SIN pin of UART Ch.11 Basic I/O Interface 156 Ex. 11-30 Ex. 11-30 Ch.11 Basic I/O Interface 157 11-7 ADC and DAC converters used to interface µ to the analog world DAC0830 Digital-to-Analog converter fairly common, low cost, medium speed(≈1.0µs) 8-bit converter : transform 8-bit no into analog voltage generate 28 bit=256 different voltage levels Fig. 11-53 : pin-out of DAC0830 D7~D0 : 8-bit digital input(binary no) Iout1, Iout2 : analog output designed as input to external operational amplifier -Vref(reference voltage) : = -5V output step voltage(resolution) = 5/(256-1)=5/255=0.0196V input=146=10010010 : 1465/255 = 2.862V Ch.11 Basic I/O Interface 158 Fig. 11-53 Fig. 11-53 Ch.11 Basic I/O Interface 159 DAC0830 Digital-to-Analog converter internal structure of DAC0830 : Fig. 11-54 two internal latch : transparent latch 1st (holding reg.) : hold byte while 2nd is converted 2nd : connect to R-2R internal ladder converter in many case, only use 2nd latch for entering data IDLE=1, CS’=0 transparent latch : G=1: data pass through the latch, G=0: data are latched or held Fig. 11-55 : DAC0830 connected to µ PAL 16L8 : decoded I/O port 20H OUT 20H, AL -12V zener reference voltage : full output voltage=+12V Ch.11 Basic I/O Interface 160 Fig. 11-54 Fig. 11-54 Ch.11 Basic I/O Interface 161 Fig. 11-55 Fig. 11-55 Ch.11 Basic I/O Interface 162 ADC0804 Analog-to-Digital Converter common, low cost, required up to 100µs to convert used for many applications that do not require a high degree of accuracy Fig. 11-56 : pin-out of ADC0804 to start conversion process : WR’=pulsed , CS=0 INTR( interrupt request) : end of conversion required a considerable amount of time(100 µs) for conversion Ch.11 Basic I/O Interface 163 ADC0804 Analog-to-Digital Converter timing diagram : Fig. 11-57 pulsed WR’, wait(100µs) for INTR to return to logic 0, then read data from converter option : connected INTR pin to interrupt input interrupt occur : when conversion is complete 164 ADC0804 Analog-to-Digital Converter Analog Input Signal : Fig. 11-58 VI+, VI- : connected to internal OP amp 1st way : used single input(0V~+5.0V) 2nd : applied variable voltage to VI-, so adjusted zero reference for VI+ 165 ADC0804 Analog-to-Digital Converter Generating the Clock Signal permissible range of clock frequency : 100~1460KHz as close as possible to 1460KHz : minimum conversion time 1. external clock applied to CLK IN, or 2. generated with RC circuit : Fig. 11-59 Fclk = 1/(1.1RC)=1/(1.11030.00110-6)=1/1.110-6=909KHz Ch.11 Basic I/O Interface 166 ADC0804 Analog-to-Digital Converter Connecting ADC0804 to 8086 µ : Fig. 11-60 decoded I/O port 40H for data, 42H for INTR signal Vref : not attached to anything, which is normal Ex. 11-31 : procedure for start and read data polled INTR bit until logic 0 return with AL, containing converted digital code 167 Fig. 11-60 Fig. 11-60 Ch.11 Basic I/O Interface 168 Using ADC0804 and DAC0830 Fig. 11-61 : to capture and replay audio signal or speech ADC0804 : I/O ports 0700H, 0702H DAC0830 : I/O port 0704H I/O ports : low bank of 16-bit µ 8086, 80386SX Ex. 11-32 : read a 1 second burst of speech, play it back 10 times repeat until system is turned off speech: sampled, stored in section of memory(WORDS) sample rate : 2048 samples/sec Ch.11 Basic I/O Interface 169 Fig. 11-61 Fig. 11-61 170 Ex. 11-32 Ex. 11-32 Ch.11 Basic I/O Interface 171 Ex. 11-32 Ex. 11-32 Ch.11 Basic I/O Interface 172 Ex. 11-32 Ex. 11-32 Ch.11 Basic I/O Interface 173