Unit 5
Unit 5
Unit 5
com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Keyboards
The predominant interface between humans and computers is the keyboard. These
range in complexity from the "up-down" buttons used for elevators to the personal
computer QWERTY layout, with the addition of function keys and numeric
keypads. One of the first mass uses for the microcontroller was to interface
between the keyboard and the main processor in personal computers. Industrial and
commercial applications fall somewhere in between these extremes, using layouts
that might feature from six to twenty keys.
The one constant in all keyboard applications is the need to accommodate the
human user. Human beings can be irritable. They have little tolerance for machine
failure; watch what happens when the product isn't ejected from the vending
machine. Sometimes they are bored, or even hostile, towards the machine. The
hardware designer has to select keys that will survive in the intended environment.
The programmer must write code that will anticipate and defeat inadvertent and
also deliberate attempts by the human to confuse the program. It is very important
to give instant feedback to the user that the key hit has been acknowledged by the
program. By the light a light, beep a beep, display the key hit, or whatever, the
human user must know that the key has been recognized. Even feedback
sometimes is not enough; note the behavior of people at an elevator. Even if the
"up" light is lit when we arrive, we will push it again to let the machine know that
"I'm here too."
Human Factors
The keyboard application program must guard against the following possibilities:
More than one key pressed (simultaneously or released in any sequence)
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Key pressed and held Rapid key press and release All of these situations can be
addressed by hardware or software means; software, which
Keyboard Configurations:
Keyboards are commercially produced in one of the three general hypothetical
wiring configurations for a 16-key layout shown in Figure 8.1. The lead-per-key
configuration is typically used when there are very few keys to be sensed. Since
each key could tie up a port pin, it is suggested that the number be kept to 1 6 or
fewer for this keyboard type. This configuration is the most cost effective for a
small number of keys.
The X- Y matrix connections shown in Figure 8.1 are very popular when the
number of keys exceeds ten. The matrix is most efficient when arranged as a
square so that N leads for X and N leads for Y can be used to sense as many as N2
keys. Matrices are the most cost effective for large numbers of keys.
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
The 8031 works best when handling data in byte-sized packages. To save internal
space, the ten-bit word representing the port pin configuration is converted to a
single-byte number.
Because the processor has nothing to do until the key has been detected, the time
delay "Softime" is used to debounce the keys.
Getkey
The routine "Getkey" constantly scans a ten-key pad via ports 0 and 3. The keys
are debounced in both directions and an "all-up" period of 50 milliseconds must be
seen before a new key will be accepted. Invalid key patterns (more than one port
pin low) are rejected.
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
FIGURE:
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
The subroutine keypressed constantly scans a 10-key pad via port-0 and
port-3.
.org oooh
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
INTERRUPTS:In general, the smaller keyboards (lead-per-key and coded) can be handled either
way. The common lead can be grounded and the key pattern read periodically. Or,
the lows from each can be active-low ORed, as shown in Figure, and connected to
one of the external INTX pins.
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
10
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Matrix keyboards are scanned by bringing each X row low in sequence and
detecting a Y column low to identify each key in the matrix. X-Y scanning can be
done by using dedicated keyboard scanning circuitry or by using the
microcontroller ports under program control. The scanning circuitry adds cost to
the system. The programming approach takes processor time, and the possibility
exists that response to the user may be sluggish if the program is busy elsewhere
when a key is hit. Note how long your personal computer takes to respond to a
break key when it is executing a print command, for instance. The choice between
adding scanning hardware or program software is decided by how busy the
processor is and the volume of entries by the user.
;main loop
Inkey:
Jbc o1h,key ; if flag is set
Sjmp inkey ; continue looping
Key:
Mov a, 7fh ; get new key
acall vendit ; calling some routine say vendit
Sjmp inkey ; get next key
The timer T0 & T1 are to be set,so that the timer T0 is delayed by 20ms and
timer T1 is delayed by 50ms.
Set to :
Mov t10, #0c0h
Mov th0, # ob1h
Setb tr0
www.jntuworld.com
www.jntuworld.com
www.jwjobs.net
11
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Start T1 ;
Mov t11,#oboh
Mov th1, #3ch
Setb tr1
ret
Vendit :
Swap a
Orl a,#0fh ; call bits, but not 2 & 3
Mov p3, a
ret
The interrupt routine will stop the timer T0 and check if the key is still
down, then if it is a valid key it reset up flag for 50ms. If the key is not valid,it
simply return.
Interrupt:
Mov,psw,
Clr tro
Acall convert
Set bit 01h
Clear 00h
The key down, convert and individual but routines are same in the previous
program.
Displays
If keyboards are the predominant means of interface to human input, then visible
displays are the universal means of human output. Displays may be grouped into
three broad categories:
www.jntuworld.com
www.jntuworld.com
12
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
1. Single light(s)
2. Single character(s)
3. Intelligent alphanumeric
Single light displays include incandescent and, more likely, LED indicators that are
treated as single binary points to be switched off or on by the program. Single
character displays include numeric and alphanumeric arrays. These may be as
simple as a sevensegment numeric display up to intelligent dot matrix displays that
accept an 8-bit ASCII character and convert the ASCII code to the corresponding
alphanumeric pattern. Intelligent alphanumeric displays are equipped with a builtin microcontroller that has been optimized for the application. Inexpensive displays
are represented by multicharacter LCD windows, which are becoming increasingly
popular in hand-held wands, factory floor terminals, and automotive dashboards.
The high-cost end is represented by CRT ASCII terminals of the type commonly
used to interface to a multi-user computer.
Single light displays include incandescent and, more likely, LED indicators that are
treated as single binary points to be switched off or on by the program. Single
character displays include numeric and alphanumeric arrays. These may be as
simple as a seven segment numeric display up to intelligent dot matrix displays
that accept an 8-bit ASCII character and convert the ASCII code to the
corresponding alphanumeric pattern. Intelligent
alphanumeric displays are equipped with a built-in microcontroller that has been
optimized for the application. Inexpensive displays are represented by multi
character LCD windows, which are becoming increasingly popular in hand-held
www.jntuworld.com
www.jntuworld.com
13
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
wands, factory floor terminals, and automotive dashboards. The high-cost end is
represented by CRT ASCII terminals of the type commonly used to interface to a
multi-user computer.
The example examined here uses four seven-segment displays; the segment
information is output on port 1 and the cathode selection is done on ports 3.2 to, as
shown in:-
www.jntuworld.com
www.jntuworld.com
14
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
A segment will he lit only if the segment line is Drought high and the common
cathode is brought low.
Transistors must be used to handle the currents required by the LEDs, typically
10 milliamperes for each segment and 70 milliamperes for each cathode. These are
average
www.jntuworld.com
www.jntuworld.com
15
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
current values; the peak currents will be four times as high for the 2.5 milliseconds
each display is illuminated.
Svnseg
The program "svnseg" displays characters found in locations "chl" to "ch4" on four
common-cathode seven-segment displays. Port I holds the segment pattern from
the low byte of chx; port 3 holds the cathode pattern from the high byte of chx. TO
generates a 2.5 ms delay interval between characters in an interrupt mode. The
main program uses a lookup table to convert from hex to a corresponding pattern.
RO of bank one is dedicated as a pointer to the displayed character.
www.jntuworld.com
www.jntuworld.com
16
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
17
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
18
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
The display contains two internal byte-wide registers, one for commands (RS = 0)
and the second for characters to be displayed (RS = 1). It also contains a userprogrammed RAM area (the character RAM) that can be programmed to generate
any desired character that can be formed using a dot matrix. To distinguish
www.jntuworld.com
www.jntuworld.com
19
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
between these two data areas, the hex command byte 80 will be used to signify that
the display RAM address OOh is chosen.
www.jntuworld.com
www.jntuworld.com
20
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Port 1 is used to furnish the command or data byte, and ports 3.2 to 3.4 furnish
IVL'I-. ter select and read/write levels.
The display takes varying amounts of time to accomplish the functions listed in I n
' ure 8.8. LCD bit 7 is monitored for a logic high (busy) to ensure the display is mil
mn written. A slightly more complicated LCD display (4 lines X 40 characters) is
currniiK being used in medical diagnostic systems to run a very similar program.
Lcdisp
The program "Icdisp" sends the message "hello" to an intelligent LCD display
shown in Figure 8.8. Port I supplies the data byte. Port 3.2 selects the command (0)
or data 1 1 1 registers. Port 3.3 enables a read (0) or write (1) level, and port
3.4generates an ai-tm low-enable strobe.
www.jntuworld.com
www.jntuworld.com
21
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
22
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Pulse Measurement
Sensors used for industrial and commercial control applications frequently produce
pulses that contain information about the quantity sensed. Varying the sensor
output frequency, using a constant duty cycle but variable frequency pulses to
indicate changes in the measured variable, is most common. Varying the duration
of the pulse width, resulting in constant frequency but variable duty cycle, is also
used. In this section, we examine programs that deal with both techniques.
Measuring Frequency
Timers TO and Tl can be used to measure external frequencies by configuring one
timer as a counter and using the second timer to generate a timing interval over
which the first can count. The frequency of the counted pulse train is then
For example, if the counter counts 200 pulses over an interval of . 1 second
generated by the timer, the frequency is
UF = 200/.1 = 2000 Hz
www.jntuworld.com
www.jntuworld.com
23
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
The lowest frequency that can be counted is limited by the duration of the time
interval generated, which can be exceedingly long using all the RAM to count
timer rollovers (49.15 milliseconds x 2A32768). There is no practical limitation on
the lowest frequency that can be counted.
Happily, most frequency variable sensors generate signals that fall inside of 0 to
667 kilohertz. Usually the signals have a range of 1,000 to 10,000 hertz.
Our example will use a sensor that measures dc voltage from 0 to 5 volts. At 0 V
thesensor output is 1,000 hertz, and at full scale, or 5 volts, the sensor output is
6,000 hertz.
The correspondence is 1 volt per 1,000 hertz, and we wish to be able to measure
the voltage to the nearest .01 V, or 10 hertz of resolution (assuming the sensor is
this accurate). A timing interval of I second generates a frequency count accurate
to the nearest 1 hertz, so an interval of . 1 s yields a count accurate to the nearest 10
hertz.
Another way to arrive at the desired timing interval, T, is to note that the desired
accuracy is
and that the range of the counter is from T x fmin to T x fmax, or a range of T x
(fmax fmin) from zero to full scale. The resolution of each counter bit is then
www.jntuworld.com
www.jntuworld.com
24
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Freq
The program "freq" uses TO to count an external pulse train that is known to vary
in frequency from 1000 to 6000 hertz. Tl generates an exact time delay of 192
microseconds that is counted using registers R4 and R5 of bank 1 until Tl has
overflowed 52ld times, or a total delay of . 100032 seconds.
www.jntuworld.com
www.jntuworld.com
25
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
26
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Theoretically, if the input pulse is known to be a perfect square wave, the pulse
frequency can be measured by finding the time the wave is high (Th). The
frequency is then
If Th is 200 microseconds, for example, then UF is 2500 hertz. The accuracy of the
measurement will fall as the input wave departs from a 50 percent duty cycle.
Timer X may be configured so that the internal clock is counted only when the
corresponding INTX pin is high by setting the GATE X bit in TMOD. The
accuracy of the measurement is within approximately one-half of the timer clock
period, or .375 microsecond fora 16 megahertz crystal. This accuracy can only be
attained if the measurement is started when the input wave is low and stopped
when the input next goes low. Pulse widths greater than the capacity of the
counter, which is 49.152 milliseconds for a 16 megahertz crystal, can be measured
by counting the overflows of the timer flag and adding the final contents in the
counter.
For the example in this section, the sensor used to measure the 0 volt to 5 volts dc
voltage has a fixed frequency of 1000 hertz or a period of 1 ms. For a 0 volt input,
the sensor is high for 400 microseconds and low for 600 microseconds; when the
sensor input is 5 volts, the output is high for 900 microseconds and low for 100
microseconds. Each volt represents 100 microseconds of time; the accuracy of the
measurement is .00325 volts, which is within the specification of .01 volt.
To make the measurement, TO will be configured to count the internal clock when
www.jntuworld.com
www.jntuworld.com
27
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
INTO is high. The measurement is not started until INTOgoes from high to low,
leaving a minimum of 100 microseconds to start TO. The measurement is made
while INTO is high and stopped when INTO goes low again. The whole process
can be interrupt driven by using the interrupt flag associated with INTO. The IEO
flag can be set whenever INTO goes from high to low to notify the program to start
the pulse width timing and then to stop. A variation of this program is currently in
use to measure fabric width by measuring the reflection time of a scanning laser.
Width:The program "Width" measures the width of pulses that are fed to the INTO pin,
port 3.2 and that are known to vary from 400 to 900 microseconds. The program
starts when the interrupt flag IEO is set and stops the next time the flag is set,
indicating one complete cycle of the input wave.
www.jntuworld.com
www.jntuworld.com
28
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
www.jntuworld.com
www.jntuworld.com
29
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
The choice the designer must make is whether to use the converter as a RAM
memory location connected to the memory busses or as an I/O device connected to
the ports. Once that choice is made, the set of instructions available to the
programmer becomes limited. The memory location assignment is the most
restrictive, having only MOVX available. The design could use the additional 32K
R AM address space with the addition of circuitry for A15. By enabling the RAM
when A15 is low, and the converter when A15 is high, the designer could use the
upper 32K RAM address space for the converter, as was done to expand port
capacity by memory mapping in Chapter 7. All of the examples examined here are
connected to the ports.
D/A Conversions
A generic R-2R type D/A converter, based on several commercial models, is
connected to ports 1 and 3 as shown in Figure 8.10. Port 1 furnishes the digital
byte to be converted to an analog voltage; port 3 controls the conversion process.
The converter has these features:
Vout = -Vref X (byte in/lOOH), Vref = 10 V
Conversion time: 5 /is
Control sequence: (!5T then WR
For this example, a 1000 hertz sine wave that will be generated can have a
programmable frequency. Vref is chosen to be 10 volts, and the wave will swing
from +9.96 volts to 0 volt around a midpoint of 4.48 volts. The program uses a
lookup table to generate the amplitude of each point of the sine wave; the time
interval at which the converter is fed bytes from the table determines the wave
frequency.
www.jntuworld.com
www.jntuworld.com
30
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
The conversion time limits the highest frequency that can be generated using S
sample point. In this example, the shortest period that can be used is
The design tension is high frequency versus high resolution. For a IOOO hertz
wave, S could he 200d samples. In reality, we cannot use this many samples; the
program cannot fetch the data, latch it to port I, and strobe port 3.3 in 5
microseconds. An inspection of the program will show that the time needed for a
www.jntuworld.com
www.jntuworld.com
31
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
single wave point is 6 microseconds, and setting up for the next wave takes another
2.25 microseconds. S becomes I66d samples using the 6 microseconds interval,
and the addition of 2.25 microseconds at the end of every wave yields a true
frequency of 1001.75 hertz.
Davcon
The D/A converter program "Davcon" generates a IOOO hertz sine wave using an
8-bit converter. 166d samples are stored in a lookup table and fed to the converter
at a rate of one sample every 6 microseconds. The lookup table is pointed to in
external ROM by the DPTR, and Rl is used to count the samples. Numbers in
parentheses indicate the number of cycles.
www.jntuworld.com
www.jntuworld.com
32
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
33
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
A/D Conversion
The easiest A/D converters to use are the "flash" types, which make conversions
based upon an array of internal comparators. The conversion is very fast, typically
in less than I microsecond. Thus, the converter can be told to start, and the digital
equivalent of the input analog value will be read one or two instructions later.
Modern successive approximation register (SAR) converters do not lag far behind,
however, with conversion times in the 2-4 microsecond range for eight bits.
At this writing, flash converters are more expensive (by a factor of two) than the
traditional SAR types, but this cost differential should disappear within four years.
Typical features of an eight-bit flash converter are
www.jntuworld.com
www.jntuworld.com
34
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
A conversion is started by pulsing the write line low, and the data is read by
bringing the read line low.
Our example involves the digitizing of an input waveform every lOOd
microseconds until lOOOd samples have been stored in external RAM.
Adconv
The program "Adconv" will digitize an input voltage by sampling the input every
100 JLIS and storing the digitized values in external RAM locations 4000h to
43E7h (lOOOd samples). Numbers in parentheses are cycles. The actual delay
between samples is 99.75 microseconds.
www.jntuworld.com
www.jntuworld.com
35
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Multiple Interrupts
The 8051 is equipped wilh two external interrupt input pins: INTO and INT1 (P3.2
and P3.3). These are sufficient for small systems, but the need may arise for more
www.jntuworld.com
www.jntuworld.com
36
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
than two interrupt points. There are many schemes available to multiply the
number of interrupt points; they all depend upon the following strategies:-
www.jntuworld.com
www.jntuworld.com
37
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Lopri
The program "Lopri" scans port PI for the source of an interrupt that has triggered
INTO. The pins are scanned for a low and the scan resumed after any interrupt is
www.jntuworld.com
www.jntuworld.com
38
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
www.jntuworld.com
www.jntuworld.com
39
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
1. The most important interrupt source is physically connected first in the chain,
with those of lesser importance next in line. Lower priority interrupt sources are
"behind" (connected further from INTO) those of a higher priority.
2. Each interrupting source can disable all signals from sources that are wired
www.jntuworld.com
www.jntuworld.com
40
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
behind it. All sources that lose the INACTOUT signal (a low level) from the
source(s) ahead of it will place their source address buffer in a tri-state mode
until INACTOUT is restored.
3. A requesting source pulls its INTOUT line low and places its 8-bit identifier on
the tri-state bus connected to port 1. The interrupt routine at the INTO vector
location reads PI and, using a lookup table, finds the address of the subroutine
that handles that interrupt. The address is placed on the stack and a RETI executed
to go to that routine and re-arm the interrupt structure.
www.jntuworld.com
www.jntuworld.com
41
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
The software is very simple for this scheme. Any interrupt received is always of
higher priority than the one now running, and the source address on port 1 enables
rapid access to the interrupt subroutine. Accomplishing this interrupt sequence
requires that the source circuitry be complex or that the source contain some
intelligence such as might be provided by a microcontroller.
The additional source hardware will entail considerable relative expense for each
source. As the number of interrupt sources increases, system costs rise rapidly. At
some point the designer should consider another microcontroller that has extensive
interrupt capability.
Hardint
The program "Hardint" is used with daisy-chained interrupt sources to service 16
interrupt sources. An interrupt is falling-edge triggered on INTO and the interrupt
address read on PI. A lookup table then finds the address of the interrupt routine
that is pushed on the stack and the RETI "returns" to the interrupt subroutine. The
interrupt subroutine issues an acknowledgment on port 3.3, which resets the
interrupting source.
www.jntuworld.com
www.jntuworld.com
42
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
43
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
44
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Network Configurations:The first problem faced by the network system designer is how to physically hook
the computers together. The two possible basic configurations are the star and the
loop, which are shown in Figure.
The star features one line from a central computer to each remote computer, or
from "host" to "node." This configuration is often used in time-sharing applications
when a central mainframe computer is connected to remote terminals or personal
computers using a dedicated line for each node. Each node sees only the data on its
line; all communication is private from host to node.
The loop uses one communication line to connect all of the computers together.
There may be a single host that controls all actions on the loop, or any computer
may be enabled to be the host at any given time. The loop configuration is often
used in data-gathering applications where the host periodically interrogates each
node to collect the latest information about the monitored process. All nodes see all
data; the communication is public between host and nodes.
Choosing the configuration to use depends upon many external factors that are
often beyond the control of the system designer. Some genera! guidelines for
selection are shown in the following table:
www.jntuworld.com
www.jntuworld.com
45
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
The star is a good choice when the number of nodes is small, or the physical
distance from host to node is short. But, as the number of nodes grows, the cost
and physical space represented by the cables from host to nodes begins to represent
the major cost item in the system budget. The loop configuration becomes
attractive as cost constraints begin to outweigh
www.jntuworld.com
www.jntuworld.com
46
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
www.jntuworld.com
www.jntuworld.com
47
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
and, thus, improve system reliability. High speed data transmission schemes can be
employed to enhance system response time where necessary.
The old racing adage "Speed costs money: How fast do you want to go?" should be
kept in mind when designing a loop system. Successors to RS 232, most notably
RS 485, have given the system designer 100 kilobaud rates over 4000-foot
distances using inexpensive twisted-pair transmission lines. Faster data rates are
possible at shorter distances, or more expensive transmission lines, such as coaxial
cable, can be employed. Remember that wiring costs are often the major constraint
in the design of large distributed systems. Many hybrid network arrangements have
evolved from the star and the loop. Figure shows two of the more popular types
that contain features found in both basic configurations.
www.jntuworld.com
www.jntuworld.com
48
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
second byte will be lost. Physically the data is a series of voltage levels that are
sampled, in the center of the bit period, at a frequency that is determined by the
serial data mode and the program that controls that mode. All devices that wish to
communicate must use the same voltage levels, mode, character code, and
sampling frequency (baud rate). The wires that connect the ports must also have
the same polarity so that the idle state, logic high, is seen by
all ports. The installation and checkout of a large distributed system are subject to
violations of all of the "same" constraints listed previously. Careful planning is
essential if cost and time overruns are to be avoided.
The four communication modes possible with the 805 1 present the system
designer and programmer with opportunities to conduct very sophisticated data
communication networks.
www.jntuworld.com
www.jntuworld.com
49
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Data is transmitted, LSB first, when the program writes to SBUF. Data is shifted
right during S6P2, or 24/f seconds after the rising edge of the shift clock at S6PI.
Data is stable from just after S6P2 for one cycle. Good design practice dictates that
the data be shifted into the external shift register during the high-to-low transition
of the shift clock, at S3PI, to avoid problems with clock skew.
The receiver is enabled when SCON bit 5 (REN) is enabled by software and
SCON bit 0 (RI) is set to 0. At the end of reception RI will set, inhibiting any form
of character reception until reset by the software. The condition of RI cleared to 0
is unique for mode 0; all other modes are enabled to receive when REN is set
without regard as to the state of RI. The reason is clear: Mode 0 is the only mode
that controls when reception can take
place. Enabling reception also enables the clock pulses that shift the received data
into the receiver. Reception begins, LSB first, with the data that is present during
S5P2, or 24/f seconds before the rising edge of the shift clock at S6PI. The
incoming data is shifted to the right. Incoming data should be stable during the low
state of the shift clock, and good design practice indicates that the data be shifted
from the external shift register during the low-to-high transition of the shift clock,
at S6P1, so that the data is stable up to one clock period before it is sampled.
www.jntuworld.com
www.jntuworld.com
50
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
www.jntuworld.com
www.jntuworld.com
51
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Reception begins if the REN bit is set in SCON and a high-to-low transition is
sensed on RXD. Data bits are sampled at the baud rate in the center of the bit
duration period. The received character is loaded into SBUF and the stop bit into
SCON bit 2 (RB8) i/the RI bit in SCON is cleared, indicating that the program has
read the previous character; and either SM2 in SCON is cleared or SM2 is set and
the received stop bit is high, which is the normal state for stop bits. If these
conditions are met, then SBUF is loaded with the received character, and RI
is set. If the conditions are not met, the character is ignored, RI is not set, and the
receive circuitry awaits the next start bit.
The restriction that a new character is not accepted unless RI is cleared seems
reasonable. Data is lost if either the previous byte is overwritten or the new byte
discarded, which is the action taken by the 8051. The restriction on SM2 and the
stop bit are not as obvious. Normally, SM2 will be set to 0, and the character will
be accepted no matter what the state of the stop bit. Software can check RB8 to
ensure that the stop bit is correct before accepting the character if that is thought to
be important. Possible reasons for setting SM2 to force reception only when the
www.jntuworld.com
www.jntuworld.com
52
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
stop bit is a 1 could be useful if the transmitter has the ability to change the stop bit
from the normal high state. If the transmitter has this capability, then the stop bit
can serve as an address bit in a multiprocessor environment where many loop
microcontrollers are all receiving the same transmission. Only the microcontroller
that has SM2 cleared can receive characters ending in either of the stop bit states.
If all the microcontrollers but one have SM2 set, then all data transmissions ending
in a low stop bit interrupt the unit with SM2 = 0; the rest ignore the data.
Transmissions ending in a high stop bit can interrupt all microcontrollers.
Transmitters with the capability to alter the stop bit state are not standard. The
8051 communication modes 2 and 3 use the SM2 bit for multiprocessing. Mode 1
is not needed for this use. In summary, mode 1 should be used with SM2 cleared,
as a standard 8-bit UART, with software checks for proper stop bit magnitude if
needed. The baud rate for modes 1 and 3 are determined by the overflow rate of
timer 1, which is usually configured as an auto-reload timer. PCON bit 7 (SMOD)
can double the baud rate when set.
Modeone
Mode 1 is most likely to be used in a dedicated system where the 8051 serial port
is connected to a single similar port. A program that transmits and receives large
blocks of data on an interrupt-driven basis is developed to investigate some
problems common to data interchange programs.
To the main program, interrupt-driven communication routines are transparent:
Data appears in RAM as it is received and disappears from RAM as it is
transmitted. In both cases, the link between the main program and the interruptdriven communication sub routines are areas of RAM called buffers. These buffers
serve to store messages that are to be sent and messages that are received.
www.jntuworld.com
www.jntuworld.com
53
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Each buffer area is defined by two memory pointers. One pointer contains the
address of the top of the buffer, or the location in RAM where the next character is
to be stored, and the second contains the address of the next character to be read.
The buffers are named "inbuf," for use in storing characters as they are received,
and "outbuf," for storing characters that are to be sent. The pointers to the tops of
the buffers are named "intop" and "outop," respectively, while the pointers to the
next character to be read are named
"inplace" and "outplace." The two buffers work in exactly the same way. The
receive subroutine fills inbuf as characters are received and updates intop as it
operates. The main program empties inbuf as it can and keeps inplace pointing to
the next character to be read. The main program fills outbuf, while keeping outop
updated to point to the next character to be stored. The transmission subroutine
empties outbuf as it can and keeps outplace pointing to the next
character to be read from out buf. These actions continue until the pointer to the
top of the buffer equals the pointer to the next character. The buffer is now empty,
and the pointers can be reset to the bottom of the buffer.
The buffer areas and pointers may be summarized as follows:
Outop: Pointer to outbuf that holds the address of the next character to be stored by
the main program for transmission
Outplace: Pointer to outbuf that holds the address of the next character to be
transmitted by the transmit subroutine
www.jntuworld.com
www.jntuworld.com
54
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Intop: Pointer to inbuf that holds the address of the next character received by the
receive subroutine
Inplace: Pointer to inbuf that holds the address of the next character to be read by
the main program
The main program and the transmit subroutine does not read data from a buffer
whenever the place pointer equals the top pointer, which indicates that the buffer is
empty. The programmer has to make an estimate of how large the buffers need to
be. Sometimes the general nature of the data is known when the system is in the
design phase. The programmer(s) for the two computers that are communicating
can define message length and frequency, arriving at a worst-case buffer size.
If the 8051 is part of a peripheral, such as a printer, that randomly receives large
quantities of data, then the buffer size is fixed at an economic and competitive
number using external RAM. For short and infrequent messages, internal RAM
may suffice. In both cases, the receiving subroutine should have a means of
communicating to the source of data when inbuf is becoming full so that the data
flow can be suspended while inbuf is emptied. Our example program falls
somewhere between these extremes; some external RAM will be needed, but not
32 kilobytes.
Registers RO and R1 of register banks 0 and 1 are used effectively as pointers to
the first 256d bytes of external RAM using MOVX instructions. For this example,
the buffer sizes are fixed at 128d bytes each, although there is no need for them to
be of equal size. Larger buffers can be constructed using the DPTR.
A program named "Modeone" handles communications between the 8051 and
another computer using serial data mode 1. Two 128d byte buffers in external
RAM store characters to be transmitted or received. RO and R \ of register bank 0
www.jntuworld.com
www.jntuworld.com
55
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
keep track of data flow for the receive buffer inbuf, located in external RAM
addresses OOh to 7Fh. RO and Rl of register bank I serve the transmit buffer
outbuf, external RAM addresses 80h to FFh. RO is the place pointer, RI the top
pointer to the buffers. The baud rate is set by timer I in the auto-reload mode to
1200 bits per second. Port pin 3.2 is set high when inbuf is I byte from a full
condition.
www.jntuworld.com
www.jntuworld.com
56
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
www.jntuworld.com
www.jntuworld.com
57
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
installation of the transmission lines used to carry the data. Baud rates for mode 3
are programmable using the overflows of timer 1 exactly as for
data mode 1. Baud rates as high as 83333 bits per second are possible using a 16
megahertz crystal. These rates are compatible with RS 485 twisted-pair
transmission lines. Data transmission using modes 2 and 3 features eleven bits per
character, as shown in
Figure 9.6. A character begins with a start bit, which is a high-to-low transition that
lasts one bit period, followed by 8 data bits, LSB first. The tenth bit of this
character is a programmable bit that is followed by a stop bit. The stop bit remains
in a high state for a minimum of one bit period.
Inspection of Figures 9.5 and 9.6 reveals that the only difference between mode 1
and mode 2 and 3 data transmission is the addition of the programmable tenth bit
in mode 2 and 3.
When the 8051 transmits a character in mode 2 and 3, the eight data bits are
whatever value is loaded in SBUF. The tenth bit is the value of bit SCON.3, named
TD8. This bit can be cleared or set by the program. Interrupt bit TI (SCON. 1) is
set after a character has been transmitted and must be reset by program action.
Characters received using mode 2 and 3 have the eight data bits placed in SBUF
and the tenth bit is in SCON.2, called RB8, if certain conditions are true. Two
conditions apply to receive a character. First, interrupt bit RI (SCON.O) must be
cleared before the last bit of the character is received, and second, bit SM2
(SCON.5) must be a 0 or the tenth bit must be a 1. If these conditions are met, then
the eight data bits are loaded in SBUF, the tenth bit is placed in RB8, and the
receive interrupt bit RI is set. If these conditions are not met, the character is
ignored, and the receiving circuitry awaits the next start bit. The significant
condition is the second. If RI is set, then the software has not read the previous
data (or forgot to reset RI), and it would serve no purpose to overwrite the
www.jntuworld.com
www.jntuworld.com
58
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
Mode three
A multiprocessor configuration that demonstrates the use of mode 3 is shown in.
An RS 485 twisted-pair transmission line is used to form a loop that has I5d 8051
microprocessors connected to the lines so that all data on the loop is common to all
serial ports. The 8051 has been programmed to be the talker, and the rest are
listeners. The purpose of the loop is to collect ten data bytes from each listener, in
www.jntuworld.com
www.jntuworld.com
59
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
sequential order. All listeners initialize SM2 to I after power-up, and the talker
configures all address
messages using a 1 in bit ten. Addressed listeners transmit ten data characters to
the talker with bit ten set to 0. The talker has SM2 set to 0 so that all
communications from listeners are acknowledged. Data characters from a listener
to the talker are ignored by the remaining listeners. At the end of the ten data bytes,
the addressed listener resets SM2 to 1. The data rate is set by timer 1 in the autoreload mode to be 83333 baud. That portion of the talker and listener program that
has to do with setting up the multiprocessor environment
will be programmed. The messages that are sent from the talker to the listeners are
called "canned" because the contents of each is known when the program is
written; the messages can be placed in ROM for later use. The subroutine "sendit"
in the talker program can send canned messages of arbitrary length, as long as each
message ends in the character $. Message contents from the listeners to the talker
are not known when the program is written. A version of sendit, "sndat," can still
be used if the message is constructed in the same manner as the canned messages
in the ROM of the talker program. The program "Modethree" sends a canned
address message to each of Fh listeners on a party-line loop using serial data mode
3. All canned messages are transmitted with bit ten set to 1; all received data from
www.jntuworld.com
www.jntuworld.com
60
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
kartheek.ravula
the addressed listener has bit ten set to 0. SM2 is set in all listeners and reset in the
talker.
www.jntuworld.com
www.jntuworld.com
61
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula
www.jntuworld.com
62
www.jwjobs.net
IV-I.T
EMBEDDED SYSTEMS
www.jntuworld.com
kartheek.ravula