CIELUV: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Monkbot
No edit summary
 
Line 1: Line 1:
[[Image:Ic-photo-Intel--D8255.JPG|thumb|Intel D8255]]
Wilber Berryhill is the name his parents gave him and he completely digs that name. Ohio is where her home is. What me and my family love is bungee leaping but I've been taking on new issues recently. My working day job is a travel agent.<br><br>Here is my page: [http://www.sirudang.com/siroo_Notice/2110 real psychic readings]
[[Image:8255.svg|thumb|.5px|Pinout of i8255]]
The '''Intel 8255''' (or '''i8255''') Programmable [[Peripheral]] [[Interface (computer science)|Interface]] ('''PPI''') chip is a peripheral chip originally developed for the [[Intel 8085]] microprocessor,<ref name="Theagarajan2004">{{cite book|author=R Theagarajan|title=Microprocessor And Its Applications|url=http://books.google.com/books?id=s2lu185uLu4C&pg=PA165|accessdate=3 June 2012|date=1 January 2004|publisher=New Age International|isbn=978-81-224-1040-2|pages=165–}}</ref> and as such is a member of a large array of such chips, known as the '''[[Intel 8085#MCS-85 family|MCS-85 Family]]'''. This chip was later also used with the [[Intel 8086]] and its descendants.
It was later made (cloned) by many other manufacturers. It is made in [[Dual in-line package|DIP]] 40 and [[Plastic leaded chip carrier|PLCC]] 44 pins encapsulated versions.<ref name="Embedded Systems Programming">{{cite book|title=Embedded Systems Programming|url=http://books.google.com/books?id=oaYrAQAAMAAJ|accessdate=3 June 2012|date=July 1996|publisher=Miller Freeman Publications|page=256}}</ref>
 
== Similar chips ==
 
This chip is used to give the CPU access to programmable parallel [[Input/output|I/O]],<ref name="Electronics world">{{cite book|title=Electronics world|url=http://books.google.com/books?id=MF5KAQAAIAAJ|accessdate=3 June 2012|year=1996|publisher=Reed Business Pub.|page=947}}</ref> and is similar to other such chips like the [[MOS Technology 6522]] (Versatile Interface Adapter) and the [[MOS Technology CIA]] (Complex Interface Adapter) all developed for the [[MOS Technology 6502|6502]] family. Other such chips are the 2655 Programmable Peripheral Interface from the [[Signetics 2650]] family of microprocessors, the [[Peripheral Interface Adapter|Motorola 6820 PIA]] (Peripheral Interface Adapter) from the [[Motorola 6800]] family, the [[Western Design Center]] [[WDC 65C21]], an enhanced 6520, and many others.
 
However, most often the functionality 8255 offered is now not implemented with the 8255 chip itself any more, but is embedded in a larger [[Very-large-scale integration|VLSI]] chip as a subfunction. The 8255 chip itself is still made, and is sometimes used together with a [[micro controller]] to expand its I/O capabilities.
 
== Computers that used the chip ==
 
The 8255 is widely used not only in many microcomputer/microcontroller systems especially [[Zilog Z80|Z-80]] based, [[home computer]]s such as [[SV-328]] and all [[MSX]], but also in the system board of the best known original [[IBM-PC]],<ref name="Jourdain1986">{{cite book|author=Robert Jourdain|title=Programmer's problem solver for the IBM PC, XT, & AT|url=http://books.google.com/books?id=AdRQAAAAYAAJ|accessdate=3 June 2012|year=1986|publisher=Brady Communications Co.|page=3}}</ref> PC/XT, PC/jr, etc. and clones, along with numerous [[homebuilt computer]] computers such as the [[N8VEM]].
 
== Functional block of 8255 ==
The 8255 has 24 input/output pins in all.<ref>{{cite web|url=http://download.intel.com/design/archives/periphrl/docs/23125604.pdf|title=Intel 82c55 PPI Datasheet}}</ref> These are divided into three 8-bit ports.<ref>{{cite web|title=PCI 8255A Datasheet|url=http://www.sharpmz.org/download/82c55a.pdf}}</ref>  Port A and port B can be used as 8-bit input/output ports. Port C can be used as an 8-bit input/output port or as two 4-bit input/output ports or to produce handshake signals for ports A and B.
 
The three ports are further grouped as follows:
<div>
#Group A consisting of port A and upper part of port C.
#Group B consisting of port B and lower part of port C.
</div>
Eight data lines (D0 - D7) are available (with an 8-bit data buffer) to read/write data into the ports or control register under the status of the '''<math>{\neg}</math>RD''' (pin 5) and '''<math>{\neg}</math>WR''' (pin 36), which are active low signals for read and write operations respectively. The address lines A<sub>1</sub> and A<sub>0</sub> allow to successively access any one of the ports or the control register as listed below:
<center>
{|class=wikitable style="text-align:center"
|-
!style="width:25px"|A<sub>1</sub>
!style="width:25px"|A<sub>0</sub>
!Port selected
|-
|0||0||port A
|-
|0||1||port B
|-
|1||0||port C
|-
|1||1||control register
|}
</center>
The control signal '''<math>{\neg}</math>CS''' (pin 6) is used to enable the 8255 chip. It is an active low signal, i.e., when <math>{\neg}</math>CS = '0', the 8255 is enabled. The '''RESET''' input (pin 35) is connected to the RESET line of system like 8085, 8086, etc., so that when the system is reset, all the ports are initialized as input lines. This is done to prevent 8255 and/or any peripheral connected to it, from being destroyed due to mismatch of ports. As an example, consider an input device connected to 8255 at port A. If from the previous operation, port A is initialized as an output port and if 8255 is not reset before using the current configuration, then there is a possibility of damage of either the input device connected or 8255 or both since both 8255 and the device connected will be sending out data.
 
The control register or the control logic or the command word register is an 8-bit register used to select the modes of operation and input/output designation of the ports.<ref name="Byte">{{cite book|title=Byte|url=http://books.google.com/books?id=qYU_AQAAIAAJ|accessdate=3 June 2012|year=1981|publisher=McGraw-Hill|page=40}}</ref>
 
== Operational modes of 8255 ==
 
There are two basic operational modes of 8255:
 
*Bit set/reset Mode (BSR Mode).
*Input/Output Mode (I/O Mode).
 
The two modes are selected on the basis of the value present at the D<sub>7</sub> bit of the Control Word Register. When D<sub>7</sub> = 1, 8255 operates in I/O mode and when D<sub>7</sub> = 0, it operates in the BSR mode.
 
== Bit set/reset (BSR) mode ==
The Bit Set/Reset (BSR) mode is applicable to port C only. Each line of port C (PC<sub>0</sub> - PC<sub>7</sub>) can be set/reset by suitably loading the control word register. BSR mode and I/O mode are independent and selection of BSR mode does not affect the operation of other ports in I/O mode.<ref name=usshah>{{cite book|title=Microprocessor & Interfacing Techniques|publisher=Techmax Publication|isbn=978-81-8492-305-6|pages=11–5|author=U. S. Shah|edition=second|chapter=11}}</ref>
[[File:8255 BSRmode Control Register.svg|thumb|550px|8255 BSR mode]]
 
*D<sub>7</sub> bit is always 0 for BSR mode.
*Bits D<sub>6</sub>, D<sub>5</sub> and D<sub>4</sub> are don't care bits.
*Bits D<sub>3</sub>, D<sub>2</sub> and D<sub>1</sub> are used to select the pin of Port C.
*Bit D<sub>0</sub> is used to set/reset the selected pin of Port C.
 
Selection of port C pin is determined as follows:
 
{|class=wikitable style="text-align:center"
|-
!style="width:30px"|B3
!style="width:30px"|B2
!style="width:30px"|B1
!Bit/pin of port C selected
|-
|0||0||0||PC<sub>0</sub>
|-
|0||0||1||PC<sub>1</sub>
|-
|0||1||0||PC<sub>2</sub>
|-
|0||1||1||PC<sub>3</sub>
|-
|1||0||0||PC<sub>4</sub>
|-
|1||0||1||PC<sub>5</sub>
|-
|1||1||0||PC<sub>6</sub>
|-
|1||1||1||PC<sub>7</sub>
|}
 
As an example, if it is needed that PC<sub>5</sub> be set, then in the control word,
 
#Since it is BSR mode, '''D<sub>7</sub> = '0''''.
#Since D<sub>4</sub>, D<sub>5</sub>, D<sub>6</sub> are not used, assume them to be ''''0''''.
#PC<sub>5</sub> has to be selected, hence, '''D<sub>3</sub> = '1', D<sub>2</sub> = '0', D<sub>1</sub> = '1''''.
#PC<sub>5</sub> has to be set, hence, '''D0 = '1''''.
 
Thus, as per the above values, 0B (Hex) will be loaded into the Control Word Register (CWR).
 
{| class="wikitable" "style="text-align:center"
|-
!    D7  !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0
|-
| 0 || 0 || 0 || 0 || 1 || 0 || 1 || 1
|}
 
== Input/Output mode ==
This mode is selected when D<sub>7</sub> bit of the Control Word Register is 1. There are three I/O modes:<ref>{{cite web|url=http://map.grauw.nl/resources/ppi/chipsi8255.pdf|title=i8255 introduction}}</ref>
# Mode 0 - Simple I/O
# Mode 1 - Strobed I/O
# Mode 2 - Strobed Bi-directional I/O
 
===Control Word Format===
[[File:PAI8255.png|thumb|550 px|I/O Control Word Format]]
*'''D<sub>0</sub>, D<sub>1</sub>, D<sub>3</sub>, D<sub>4</sub>''' are assigned for lower port C, port B, upper port C and port A respectively. When these bits are '''1''', the corresponding port acts as an input port. For e.g., if D<sub>0</sub> = D<sub>4</sub> = 1, then lower port C and port A act as input ports. If these bits are '''0''', then the corresponding port acts as an output port. For e.g., if D<sub>1</sub> = D<sub>3</sub> = 0, then port B and upper port C act as output ports.
*'''D<sub>2</sub>''' is used for mode selection of Group B (port B and lower port C). When D<sub>2</sub> = 0, mode 0 is selected and when D<sub>2</sub> = 1, mode 1 is selected.
*'''D<sub>5</sub> & D<sub>6</sub>''' are used for mode selection of Group A ( port A and upper port C). The selection is done as follows:
{|class=wikitable style="text-align:center"
|-
!style="width:25px"|D<sub>6</sub>
!style="width:25px"|D<sub>5</sub>
!Mode
|-
|0||0||0
|-
|0||1||1
|-
|1||X||2
|}
*As it is I/O mode, '''D<sub>7</sub>''' = 1.
For example, if port B and upper port C have to be initialized as input ports and lower port C and port A as output ports (all in mode 0):
#Since it is an I/O mode, D<sub>7</sub> = 1.
#Mode selection bits, D2, D5, D6 are all 0 for mode 0 operation.
#Port B and upper port C should operate as Input ports, hence, D<sub>1</sub> = D<sub>3</sub> = 1.
#Port A and lower port C should operate as Output ports, hence, D<sub>4</sub> = D<sub>0</sub> = 0.
 
Hence, for the desired operation, the control word register will have to be loaded with 8A (hex).
 
===Mode 0 - Simple I/O===
In this mode, the ports can be used for simple I/O operations without handshaking signals. Port A, port B provide simple I/O operation. The two halves of port C can be either used together as an additional 8-bit port, or they can be used as individual 4-bit ports. Since the two halves of port C are independent, they may be used such that one-half is initialized as an input port while the other half is initialized as an output port.
 
The input/output features in mode 0 are as follows:
#Output ports are latched.
#Input ports are buffered, not latched.
#Ports do not have handshake or interrupt capability.
#With 4 ports, 16 different combinations of I/O are possible.
 
====Mode 0 – input mode====
*In the input mode, the 8255 gets data from the external peripheral ports and the CPU reads the received data via its data bus.
*The CPU first selects the 8255 chip by making <math>{\neg}</math>CS low. It then selects the desired port using A<sub>0</sub> and A<sub>1</sub> lines.
*The CPU then issues an <math>{\neg}</math>RD signal to read the data from the external peripheral device via the system data bus.
 
====Mode 0 - Output mode====
*In the output mode, the CPU sends data to 8255 via system data bus and then the external peripheral ports receive this data via 8255 port.
*CPU first selects the 8255 chip by making <math>{\neg}</math>CS low. It then selects the desired port using A<sub>0</sub> and A<sub>1</sub> lines.
*CPU then issues a <math>{\neg}</math>WR signal to write data to the selected port via the system data bus. This data is then received by the external peripheral device connected to the selected port.
 
===Mode 1===
When we wish to use port A or port B for handshake (strobed) input or output operation, we initialise that port in mode 1 (port A and port B can be initilalised to operate in different modes, i.e., for e.g., port A can operate in mode 0 and port B in mode 1). Some of the pins of port C function as handshake lines.
 
For port B in this mode (irrespective of whether is acting as an input port or output port), PC0, PC1 and PC2 pins function as handshake lines.
 
If port A is initialised as mode 1 input port, then, PC3, PC4 and PC5 function as handshake signals. Pins PC6 and PC7 are available for use as input/output lines.
 
The mode 1 which supports handshaking has following features:
<div>
#Two ports i.e. port A and B can be used as 8-bit i/o ports.
#Each port uses three lines of port c as handshake signal and remaining two signals can be used as i/o ports.
#Interrupt logic is supported.
#Input and Output data are latched.
</div>
 
'''Input Handshaking signals'''
:1. IBF(Input Buffer Full)-It is an  output indicating that the input latch contains information.
:2. STB(Strobed Input)-The strobe input loads data into the port latch, which holds the information until it is input to the microprocessor via the IN instruction.
:3. INTR(Interrupt request)-It is an output that requests an interrupt. The INTR pin becomes a logic 1 when the STB input returns to a logic 1, and is cleared when the data are input from the port by the microprocessor.
:4. INTE(Interrupt enable)-It is neither an input nor an output; it is an internal bit programmed via the port PC4(port A) or PC2(port B) bit position.
'''Output Handshaking signals'''
:1. OBF(Output Buffer Full)-It is an output that goes low whenever data are output(OUT) to the port A or port B latch. This signal is set to a logic 1 whenever the ACK pulse returns from the external device.
:2. ACK(Acknowledge)-It causes the OBF pin to return to a logic 1 level. The ACK signal is a response from an external device, indicating that it has received the data from the 82C55 port.
:3. INTR(Interrupt request)-It is a signal that often interrupts the microprocessor when the external device receives the data via the signal. this pin is qualified by the internal INTE(interrupt enable) bit.
:4. INTE(Interrupt enable)-It is neither an input nor an output; it is an internal bit programmed to enable or disable the INTR pin. The INTE A bit is programmed using the PC6 bit and INTE B is programmed using the PC2 bit.
 
===Mode 2===
Only group A can be initialised in this mode. Port A can be used for ''bidirectional handshake'' data transfer. This means that data can be input or output on the same eight lines (PA0 - PA7). Pins PC4 - PC7 are used as handshake lines for port A. The remaining pins of port C (PC0 - PC3) can be used as input/output lines if group B is initialised in mode 0 or as handshaking for port b if group B is initialised in mode 1. In this mode, the 8255 may be used to extend the system bus to a slave [[microprocessor]] or to transfer data bytes to and from a [[floppy disk]] controller.
 
==References==
{{reflist}}
 
== External links ==
* [http://web.archive.org/web/20090118132135/http://drew.hickmans.net/8255.htm Complete Description about the Intel 8255 IC]
* [http://www.ic-on-line.cn/IOL/viewpdf/8255A_38897.htm 8255 Datasheet (PDF)]
* http://www.sharpmz.org/mz-700/8255ovview.htm
 
{{DEFAULTSORT:8255}}
[[Category:Intel chipsets]]
[[Category:IBM PC compatibles]]
[[Category:I/O Chips]]

Latest revision as of 18:50, 22 October 2014

Wilber Berryhill is the name his parents gave him and he completely digs that name. Ohio is where her home is. What me and my family love is bungee leaping but I've been taking on new issues recently. My working day job is a travel agent.

Here is my page: real psychic readings