You are on page 1of 92

CHAPTER 10

8051 SERIAL COMMUNICATION

SECTIONS
10.1 Basics of serial communication
10.2 8051 connection to RS232
10.3 8051 serial communication programming

SECTION 10.1
BASICS OF SERIAL
COMMUNICATION

8051 AND PC

The 8051 module connects to PC by using RS232.


RS232 is a protocol which supports half-duplex,
synchronous/asynchronous, serial communication.
We discuss these terms in following sections.

RS232
PC
COM 1 port

8051
MAX232

UART

SIMPLEX VS. DUPLEX TRANSMISSION


Simplex transmission: the data can sent in one direction.
Example: the computer only sends data to the printer.

Duplex transmission: the data can be transmitted and receive

Transmitter

Receiver

Transmitter
Receiver

Transmitter
Receiver
5

HALF VS. FULL DUPLEX


Half duplex: if the data is transmitted one way at a time.

Full duplex: if the data can go both ways at the same time.
Two wire conductors for the data lines.

Transmitter

Receiver

Receiver

Transmitter

Transmitter

Receiver

Receiver

Transmitter

FIGURE 10-2. SIMPLEX, HALF-, AND FULLDUPLEX TRANSFERS

Half Duplex

Full Duplex

Transmitter

Receiver

Receiver

Transmitter

Transmitter

Receiver

Receiver

Transmitter
7

PARALLEL VS. SERIAL


Computers transfer data in two ways:
Parallel
data is sent a byte or more a time (fast)
Only short distance between two systems
The 8-bit data path is expensive
Example: printer, hard disks
Serial
The data is sent one bit at a time (slow)
Long distance (rarely distortion)
cheap
The data can be transferred on the telephone line (by using
modem.)

FIGURE 10-1. SERIAL VERSUS PARALLEL


DATA TRANSFER (1/2)

Serial Transfer
Sender

Receiver

Parallel Transfer
Sender

D0

Receiver

D7

FIGURE 10-1. SERIAL VERSUS PARALLEL


DATA TRANSFER (2/2)

Serial Transfer
Sender

D0

Receiver

Parallel Transfer
Sender

D0-D7

Receiver

Other control lines

Other control lines


10

SERIAL COMMUNICATION

How to transfer data?


Sender:
The byte of data must be converted to serial bits using a parallel-inserial-out shift register.
The bit is transmitted over a single data line.
Receiver
The receiver must be a serial-in-parallel-out shift register to receive
the serial data and pack them into a byte.

register
parallel-in
serial-out

11101000001011
1

register
serial-in
parallel-out

8-bit
character

11

ASYNCHRONOUS VS. SYNCHRONOUS


Serial communication uses two methods:
In synchronous communication, data is sent in blocks of bytes.

In asynchronous communication, data is sent in bytes.

byte byte byte byte

preamble

sender

byte
sender

01011111 01010101

byte

receiver

byte
stop bit

start bit receiver

12

UART & USART


It is possible to write software to use both methods, but the
programs can be tedious and long.
Special IC chips are made for serial communication:
USART (universal synchronous-asynchronous receiver-transmitter)
UART (universal asynchronous receiver-transmitter)
The 8051 chip has a built-in UART.

13

8051 SERIAL COMMUNICATION


The 8051 has serial communication capability built into it.
Half-duplex
Asynchronous mode only.
How to detect that a character is sent via the line in the
asynchronous mode?
Answer: Data framing!

14

FRAMING (1/3)
Each character is placed in between start and stop bits. This is
called framing.
Figure 10-3. Framing ASCII A (41H)

Time (D0 first)


mark

stop
bit

goes out last D7

start
mark
bit

D0 goes out last

15

FRAMING (2/3)
The LSB is sent out first.
The start bit is 0 (low) and always one bit.
The stop bits is 1 (high).
The stop bit can be one (if 8 bits used in ASCII) or two bits (if 7
bits used in ASCII).
In asynchronous serial communication, peripheral chips and modems
can be programmed for data that is 7 or 8 bits.
When there is no transfer, the signal is 1 (high), which is
referred to as mask.

16

FRAMING (3/3)
We have a total of 10 bits for each character:
8-bits for the ASCII code
2-bits for the start and stop bits
25% overhead
In some systems in order to maintain data integrity, the parity
bit is included in the data frame.
In an odd-parity bit system the total number of bits, including the
parity bit, is odd.
UART chips allow programming of the parity bit for odd-, even-, and
no-parity options.

17

DATA TRANSFER RATE (1/2)


How fast is the data transferred?
Three methods to describe the speed:
Baud rate is defined as the number of signal changes per second.
The rate of data transfer is stated in Hz (used in modem).
Date rate is defined as the number of bits transferred per second.
Each signal has several voltage levels.
The rate of data transfer is stated in bps (bits per second).
Effective data rate is defined as the number of actual data bits
transferred per second.
Redundant bits must be removed

18

DATA TRANSFER RATE (2/2)


The data transfer rate depends on communication ports
incorporated into that system.
Ex: 100-9600 bps in the early IBM PC/XT
Ex: 56K bps in Pentium-based PC
The baud rate is generally limited to 100kHz.

19

EXAMPLE OF DATA TRANSFER RATE (1/2)

Data is sent in the following asynchronous mode:


2400 baud rate
each signal has 4 voltage levels (-5V, -3V, 3V, 5V)
one start bit, 8-bit data, 2 stop bits

Time (D0 first)


stop stop
mark
bit bit

00

11

10

01

10

00

8-bit character

11

11

start
mark
bit

20

EXAMPLE OF DATA TRANSFER RATE (2/2)


2400 baud = 2400 signals per second =2400 Hz
4 voltage level: Log24=2
2 bits is sent in every signal change
Data rate = 2 * 2400 Hz = 4800 bps
Effective ratio = 8 / (1+8+2) =8/11
Effective data rate = data rate * effective ratio = 4800 * 8 /
11=3490.9

21

RS232 STANDARD
RS232 is an interfacing standard which is set by the Electronics
Industries Association (EIA) in 1960.
RS232 is the most widely used serial I/O interfacing standard.
RS232A (1963), RS232B (1965) and RS232C (1969), now is RS232E
Define the voltage level, pin functionality, baud rate, signal
meaning, communication distance.

22

RS232 VOLTAGE LEVEL

The input and output voltage of RS232 is not of


the TTL compatible.
RS232 is older than TTL.
We must use voltage converter (also referred to
as line driver) such as MAX232 to convert the
TTL logic levels to the RS232 voltage level,
and vice versa.
MAX232, TSC232, ICL232

RS 232 Voltage
25V
logic 0
3V
-3V

undefined
logic 1

-25V
23

MAX232

MAX232 IC chips are commonly referred to as line drivers.

RS232
PC
COM 1 port
TTL voltage
level

8051
MAX232
RS232 voltage
level

UART
TTL voltage
level

24

RS232 PINS
Figure 10-4 shows the RS232 connector DB-25.
Table 10-1 shows the pins and their labels for the RS232 cable.
DB-25P : plug connector (male)
DB-25S: socket connector (female)
Figure 10-5 shows DB9 connector and Table 10-2 shows the
signals.
IBM version for PC.
All the RS 232 pin function definitions of Tables 10-1 and 10-2
are from the DTE point of view.

25

FIGURE 10-4. RS232 CONNECTOR DB-25

14

13

25

26

TABLE 10-1: RS232 PINS (DB-25) FOR DTE


(1/2) Pin Description
1

Protective ground

Transmitted data (TxD)

Received data (RxD)

Request to send (RTS)

Clear to send (CTS)

Data set ready (DSR)

Signal ground (GND)

Data carrier detect (DCD)

9/10

Reserved for data testing

11

Unassigned

12

Secondary data carrier detect

13

Secondary clear to send


27

TABLE 10-1: RS232 PINS (DB-25) FOR DTE


(2/2) Pin Description
14

Secondary transmitted data

15

Transmit signal element timing

16

Secondary received data

17

Receive signal element timing

18

Unassigned

19

Secondary request to sent

20

Data terminal ready (DTR)

21

Signal quality detector

22

Ring indicator

23

Data signal rate select

24

Transmit signal element timing

25

Unassigned

28

FIGURE 10-5. DB-9 9-PIN CONNECTOR

29

TABLE 10-2: IBM PC DB-9 SIGNALS FOR


DTE
Pin

Description

Data carrier detect (DCD)

Received data (RxD)

Transmitted data (TxD)

Data terminal ready (DTR)

Signal ground (GND)

Data set ready (DSR)

Request to send (RTS)

Clear to send (CTS)

Ring indicator (RI)

30

RS232 HANDSHAKING SIGNALS


Many of the pins of the RS232 connector are used for
handshaking signals.
DTR (data terminal ready)
DSR (data set ready)
RTS (request to send)
CTS (clear to send)
RTS and CTS are hardware control flow signals.
DCD (carrier detect, or data carrier detect)
RI (ring indicator)
They are not supported by the 8051 UART chips.

31

COMMUNICATION FLOW (1/2)

PC (DTE)
RI
DCD

modem
(DCE)

Telephone is ringing
Connection between two
modems is set
PC is ready

DTR
DSR
RTS

modem is ready
PC wants to sent data
modem is ready to receive
transmit data

CTS
TxD, RxD
32

COMMUNICATION FLOW (2/2)

While signals DTR and DSR are used by the PC and modem,
respectively, to indicate that they are alive and well.
TRS and CTS control the flow of data.
When the PC wants to send data, it asserts RTS.
If the modem is ready (has room) to accept the data, it sends back
CTS.
If, for lack of room, the modem does not activate CTS, and PC will
deassert DTR and try again.

33

DTE AND DCE


Communication Equipments are classified as
DTE (data terminal equipment)
Terminals and computers that send and receive data
DCE (data communication equipment)
Communication equipment (only for transfer data)
Ex: modem

DTE view DCE view


DTE

TxD

RxD

RxD

TxD

PC GND
Com1

DCE

DCE

GND
modem

Telephone
Line

DTE

RxD

TxD

TxD

RxD

GND
modem

GND
PC Com1

34

IBM PC/COMPATIBLE COM PORTS


IBM PC has 2 COM ports.
Both COM ports have RS232-type connectors.
For mouse, modem
We can connect the 8051 serial port to the COM port of a PC for
serial communication experiments.

DTE view

RS232

DTE view

PC
COM 1 port

8051
MAX232

UART

35

NULL MODEM CONNECTION


The simplest connection between a PC and microcontroller
requires a minimum of three pins, TxD, RxD, and GND.
Figure 10-6 shows null modem connection

DTE

DTE

DTE

DTE

TxD

TxD

TxD

TxD

RxD

RxD

RxD

RxD

PC
Com1

ground

8051-based
board

PC
Com1

ground

PC
Com1

36

RS422 & RS485


By using RS232, the limit distance between two PCs is about
15m.
It works well even the distance=30m.
If you want to transfer data with long distance (ex: 300m), you
can use RS422 or RS485.

37

SECTION 10.2
8051 CONNECTION TO RS232

38

TXD AND RXD PINS IN THE 8051


In 8051, the data is received from or transmitted to
RxD: received data (Pin 10, P3.0)
TxD: transmitted data (Pin 11, P3.1)
TxD and RxD of the 8051 are TTL compatible.
The 8051 requires a line driver to make them RS232
compatible.
One such line driver is the MAX232 chip.

39

FIGURE 4-1. 8051 PIN DIAGRAM


PDIP/Cerdip

data transfer
start/stop
input event

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
(RXD)P3.0
(TXD)P3.1
(INT0)P3.2
(INT1)P3.3
(T0)P3.4
(T1)P3.5
(WR)P3.6
(RD)P3.7
XTAL2
XTAL1
GND

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

8051
(8031)

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

Vcc
P0.0(AD0
)P0.1(AD1)
P0.2(AD2
)P0.3(AD3)
P0.4(AD4)
P0.5(AD5)
P0.6(AD6)
P0.7(AD7)
EA/VPP
ALE/PROG
PSEN
P2.7(A15)
P2.6(A14)
P2.5(A13)
P2.4(A12)
P2.3(A11)
P2.2(A10)
P2.1(A9)
P2.0(A8)

40

MAX232 (1/2)

MAX232 chip converts from RS232 voltage levels to TTL voltage


levels, and vice versa.
MAX232 uses a +5V power source which is the same as the source
voltage for the 8051.

8051
MAX232
11

11

P3.0 10
RxD

12

P3.1
TxD

14

2 5

13

DB-9

41

MAX232 (2/2)
MAX232 has two sets of line drivers.
Figure 10.7 shows the inside of MAX232.
MAX232 requires four capacitors ranging from 1 to 22 F. The most
widely used value for these capacitors is 22F.
MAX233 performs the same job as the MAX232 but eliminates
the need for capacitors.
Note that MAX233 and MAX232 are not pin compatible.
Figure 10.8 (a) shows the inside of MAX233
Figure 10.8 (b) shows the connection to the 8051

42

FIGURE 10-7 (A): INSIDE MAX232


Vcc
+
C1
+
C2
11
12
10
9

TTL side

1
3
4

16

MAX232

5
T1IN
R1OUT

T1OUT
R1IN

T2IN
R2OUT

T2OUT
R2IN

15

C3
+
C4
+
14
13
7
8

RS232 side

43

FIGURE 10-7: (B) MAX232S CONNECTION


TO THE 8051 (NULL MODEM)
8051
MAX232
P3.1 11
TxD

11

P3.0 10
RxD

12

14

2 5

13

DB-9
TTL-compatible

RS232-compatible

44

FIGURE 10-8: (A) INSIDE MAX233


Vcc
13
14
12
17
2
3
1
20

TTL side

MAX233

11
15
16
10

T1IN
R1OUT

T1OUT
R1IN

T2IN
R2OUT

T2OUT
R2IN

5
4
18
19

RS232 side
45

FIGURE 10-8: (B) MAX233S CONNECTION


TO THE 8051 (NULL MODEM)
8051
MAX233
P3.1 11
TxD

P3.0 10

RxD

TTL-compatible

2 5

DB-9
RS232-compatible

46

SECTION 10.3
8051 SERIAL COMMUNICATION
PROGRAMMING

47

PC BAUD RATES
110 bps
PC supports several baud rates.
You can use netterm,
terminal.exe, stty, ptty to
send/receive data.
Hyperterminal supports baud
rates much higher than the
ones list in the Table.

150
300
600
1200
2400
4800
9600 (default)
19200
Note: Baud rates supported by
486/Pentium IBM PC BIOS.

48

BAUD RATES IN THE 8051 (1/2)

The 8051 transfers and receives data serially at many different


baud rates by using UART.
UART divides the machine cycle frequency by 32 and sends it to
Timer 1 to set the baud rate.
Signal change for each roll over of timer 1

11.0592 MHz

XTAL
oscillator

12

Machine cycle
frequency
921.6 kHz

32

28800 Hz

By UART To timer 1
To set the
Baud rate

Timer 1
49

BAUD RATES IN THE 8051


Timer 1, mode 2 (8-bit, auto-reload)
Define TH1 to set the baud rate.
XTAL = 11.0592 MHz
The system frequency = 11.0592 MHz / 12 = 921.6 kHz
Timer 1 has 921.6 kHz/ 32 = 28,800 Hz as source.
TH1=FDH means that UART sends a bit every 3 timer source.
Baud rate = 28,800/3= 9,600 Hz

50

EXAMPLE 10-1 (1)


With XTAL = 11.0592 MHz, find the TH1 value needed to have the
following baud rates. (a) 9600 (b) 2400 (c) 1200
Solution:
With XTAL = 11.0592 MHz, we have:
The frequency of system clock = 11.0592 MHz / 12 = 921.6 kHz
The frequency sent to timer 1 = 921.6 kHz/ 32 = 28,800 Hz
(a) 28,800 / 3 = 9600

where -3 = FD (hex) is loaded into TH1

(b) 28,800 / 12 = 2400 where -12 = F4 (hex) is loaded into TH1


(c) 28,800 / 24 = 1200 where -24 = E8 (hex) is loaded into TH1
Notice that dividing 1/12th of the crystal frequency by 32 is the
default value upon activation of the 8051 RESET pin.

51

TABLE 10-4: TIMER 1 TH1 REGISTER


VALUES FOR VARIOUS BAUD RATES

Baud Rate

TH1 (Decimal)

TH1 (Hex)

9600

-3

FD

4800

-6

FA

2400

-12

F4

1200

-24

E8

Note: XTAL = 11.0592 MHz.

52

REGISTERS USED IN SERIAL TRANSFER


CIRCUIT
SUBF (Serial data buffer)
SCON (Serial control register)
PCON (Power control register)
You can see Appendix H (pages 416-417) for details.
PC has several registers to control COM1, COM2.

53

SBUF REGISTER
Serial data register: SBUF
MOV SBUF,#A ;put char A to transmit
MOV SBUF,A
;send data from A
MOV A,SUBF
;receive and copy to A
An 8-bit register
Set the usage mode for two timers
For a byte of data to be transferred via the TxD line, it must be
placed in the SBUF.
SBUF holds the byte of data when it is received by the 8051;s RxD
line.
Not bit-addressable

54

SCON REGISTER
Serial control register: SCON
SM0, SM1 Serial port mode specifier
REN
(Receive enable) set/cleared by software to
enable/disable reception.
TI
Transmit interrupt flag.
RI
Receive interrupt flag.
SM2 = TB8 = TB8 =0 (not widely used)

(MSB
)SM0 SM1 SM2 REN

TB8 RB8

TI

(LSB
) RI

* SCON is bit-addressable.

55

SM0, SM1
SM1 and SM0 determine the framing of data.
SCON.6 (SM1) and SCON.7 (SM0)
Only mode 1 is compatible with COM port of IBM PC.
See Appendix A.3.

SM1 SM0

Mode

Operating Mode

Baud Rate

Shift register

Fosc./12

8-bit UART

Variable by timer1

9-bit UART

Fosc./64 or Fosc./32

9-bit UART

Variable

56

SM2
SCON.5
SM2 enables the multiprocessor communication for mode 2 &
3.
We make it 0 since we are not using the 8051 in a
multiprocessor environment.
SM2=0 : Single processor environment
SM2=1 : multiprocessor environment

57

REN (RECEIVE ENABLE)


SCON.4
Set/cleared by software to enable/disable reception.
REN=1
It enable the 8051 to receive data on the RxD pin of the 8051.
If we want the 8051 to both transfer and receive data, REN must be
set to 1.
SETB SCON.4
REN=0
The receiver is disabled.
The 8051 can not receive data.
CLR SCON.4

58

TB8 (TRANSFER BIT 8)


SCON.3
TB8 is used for serial modes 2 and 3.
The 9th bit that will be transmitted in mode 2 & 3.
Set/Cleared by software.

59

RB8 (RECEIVE BIT 8)


SCON.2
In serial mode 1, RB8 gets a copy of the stop bit when an 8-bit
data is received.

60

TI (TRANSMIT INTERRUPT FLAG)


SCON.1
When the 8051 finishes the transfer of the 8-bit character, it
raises the TI flag.
TI is raised by hardware at the beginning of the stop bit in
mode 1.
Must be cleared by software.

61

RI (RECEIVE INTERRUPT)
SCON.0
Receive interrupt flag. Set by hardware halfway through the
stop bit time in mode 1. Must be cleared by software.
When the 8051 receives data serially via RxD, it gets rid of the
start and stop bits and place the byte in the SBUF register.
Then 8051 rises RI to indicate that a byte.
RI is raised at the beginning of the stop bit.

62

FIGURE 10-9. SCON SERIAL PORT


CONTROL REGISTER (BIT ADDRESSABLE)
SM0 SM1 SM2 REN TB8 RB8

TI

RI

SM0

SCON.7

Serial port mode specifier

SM1

SCON.6

Serial port mode specifier

SM2

SCON.5

Used for multiprocessor communication. (Make it 0)

REN

SCON.4

Set/cleared by software to enable/disable reception.

TB8

SCON.3

Not widely used.

RB8

SCON.2

Not widely used.

TI

SCON.1

Transmit interrupt flag. Set by hardware at the beginning of


the stop bit in mode 1. Must be cleared by software.

RI

SCON.0

Receive interrupt flag. Set by hardware halfway through the


stop bit time in mode 1. Must be cleared by software.

Note: Make SM2, TB8, and RB8 = 0.

63

TRANSFER DATA WITH THE TI FLAG (1/2)


The following sequence is the steps that the 8051 goes through
in transmitting a character via TxD:
1. The byte character to be transmitted is written into the SBUF
register.
2. It transfers the start bit.
3. The 8-bit character is transferred one bit at a time.
4. The stop bit is transferred.

8-bit char
TI

SBUF
UART

bit by bit
TxD

64

TRANSFER DATA WITH THE TI FLAG (2/2)

Sequence continuous:
5. During the transfer of the stop bit, the 8051 raises the TI flag,
indicating that the last character was transmitted and it is ready to
transfer the next character.
6. By monitoring the TI flag, we know whether or not the 8051 is
ready to transfer another byte.
We will not overloading the SBUF register.
If we write another byte into the SBUF before TI is raised, the
untransmitted portion of the previous byte will be lost.
We can use interrupt to transfer data in Chapter 11.
7. After SBUF is loaded with a new byte, the TI flag bit must be
cleared by the programmer.

65

PROGRAMMING THE 8051 TO TRANSFER


DATA
SERIALLY (1/2)
1.
Use the timer 1 in mode 2

MOV TMOD,#20H

2.

Set the value TH1 to chose baud rate. Look at the Table
10-4.

MOV TH1,#FDH
;Baud rate = 9600bps

3.

Set SCON register in mode 1.

MOV SCON,#50H

4.

Start the timer.

SETB TR1

66

PROGRAMMING THE 8051 TO TRANSFER


DATA
SERIALLY (2/2)
5.
Clear TI flag.

raise when
sending into
the stop
The character byte to be transferred serially is written
bit
the SBUF register.
TI=0

MOV SBUF,#A
transfer data

6.

7.

8.

CLR TI

Keep monitoring the Transmit Interrupt (TI) to see if it is


raised.

HERE: JNB TI, HERE


To transfer the next character, go to Step 5.

67

EXAMPLE 10-2
Write a program for the 8051 to transfer letter A
serially at 4800
baud, continuously.
Solution:
MOV

TMOD,#20H

;timer 1, mode 2

MOV

TH1,#-6

;4800 baud rate

MOV

SCON,#50H

;8-bit,1 stop,REN enabled

SETB TR1

;start timer 1

AGAIN: MOV

SBUF,#A

;letter A to be transferred

HERE:

JNB

TI,HERE

;wait for the last bit

CLR

TI

;clear TI for next char

SJMP AGAIN

;keep sending A

68

EXAMPLE 10-3 (1/2)


Write a program to transfer the message YES
serially at 9600
baud, 8-bit data, 1 stop bit. Do this continuously.
Solution:
MOV

TMOD,#20H ;timer 1, mode 2

MOV

TH1,#-3

MOV

SCON,#50H

;9600 baud

SETB TR1
AGAIN:MOV

A,#Y

;transfer Y

ACALL TRANS
MOV

A,#E

;transfer E

ACALL TRANS
MOV

A,#S

;transfer S

ACALL TRANS
SJMP AGAIN

;keep doing it

69

EXAMPLE 10-3 (2/2)


;serial data transfer subroutine
TRANS:MOV

SBUF,A

HERE: JNB TI,HERE


transfer
CLR

TI

;load SBUF
;wait for last bit to
;get ready for next byte

RET

70

RECEIVE DATA WITH THE RI FLAG (1/2)


The following sequence is the steps that the 8051 goes through
in receiving a character via RxD:
1. 8051 receives the start bit indicating that the next bit is the
first bit of the character to be received.
2. The 8-bit character is received one bit at a time.When the
last bit is received, a byte is formed and placed in SBUF.

RxD

bit by bit

UART

SBUF
RI

8-bit
character
71

RECEIVE DATA WITH THE TI FLAG (2/2)

Sequence continuous:
3. The stop bit is received. During receiving the stop bit, the 8051
make RI=1, indicating that an entire character was been received
and must be picked up before it gets overwritten by an
incoming character.
4. By monitoring the RI flag, we know whether or not the 8051 has
received a character byte.
If we fail to copy SBUF into a safe place, we risk the loss of the
received byte.
We can use interrupt to transfer data in Chapter 11.
5. After SBUF is copied into a safe place, the RI flag bit must be
cleared by the programmer.

72

PROGRAMMING THE 8051 TO RECEIVE


DATA
SERIALLY (1/2)
1.
Use the timer 1 in mode 2

MOV TMOD,#20H

2.

Set the value TH1 to chose baud rate. Look at the Table
10-4.

MOV TH1,#FDH
;Baud rate = 28800bps

3.

Set SCON register in mode 1.

MOV SCON,#50H

4.

Start the timer.

SETB TR1

73

PROGRAMMING THE 8051 TO RECEIVE


DATA
SERIALLY (2/2)
5.
Clear RI flag.

raise when getting


theifstop
Keep monitoring the Receive Interrupt (RI) to see
it isbit

6.

CLR RI

raised.

HERE:
7.

8.

JNB RI, HERE

RI=0
receive data

When RI is raised, SBUF has the whole byte. Move the


content of SBUF to a safe place.

MOV A,SBUF
To receive the next character, go to Step 5.

74

EXAMPLE 10-4
Program the 8051 to receive bytes of data serially, and
put them in
P1. Set the baud rate at 4800, 8-bit data, and 1 stop bit.
Solution:
MOV

TMOD,#20H ;timer1, mode 2 (auto reload)

MOV

TH1,#-6

MOV

SCON,#50H ;8-bit, 1 stop, REN enabled

SETB TR1

;4800 baud
;start timer 1

RI,HERE

;wait for char to come in

MOV

A,SBUF

;save incoming byte in A

MOV

P1,A

;send to port 1

CLR

RI

;get ready to receive next byte

HERE: JNB

SJMP HERE

;keep getting data

75

EXAMPLE 10-5 (1/4)


Assume that the 8051 serial port is connected to
the COM port of the IBM PC, and on the PC we
are using the terminal.exe program to send
and receive data serially.
P1 and P2 of the 8051 are connected to LEDs and
switches, respectively.
Write an 8051 program to
(a) send to the PC the message We Are Ready,
(b)
receive any data sent by the PC and
put it on LEDs connected to P1, and
(c)
get data on switches connected to P2
and send it to the PC serially.
The program should perform part (a) once, but
parts (b) and (c) continuously.
Use the 4800 baud rate.
76

EXAMPLE 10-5 (2/4)


8051
To
PC
COM
port

TxD
RxD

P1

LED

P2

SW

Solution:
ORG

MOV

P2,#0FFH

MOV

TMOD,#20H

MOV

TH1,#0FAH

MOV

SCON,#50H

;make P2 an input port


;4800 baud rate

SETB TR1

;start timer 1

MOV

;load pointer for message

DPTR,#MYDATA

77

EXAMPLE 10-5 (3/4)


MOV
message
H_1:

CLR
MOVC
JZ

(a)

DPTR,#MYDATA
A
A,@A+DPTR
B_1

;if last character get out

DPTR

SJMP H_1

(b)

;get the character

ACALL SEND
INC

(c)

;load pointer for

B_1:

MOV

A,P2

;next character
;read data on P2

ACALL SEND

;transfer it serially

ACALL RECV

;get the serial data

MOV

;display it on LEDs

P1,A

SJMP B_1

;stay in loop indefinitely

78

EXAMPLE 10-5 (4/4)


;-----------serial data transfer. ACC has the data
SEND:

MOV

SBUF,A

H_2:

JNB

TI,H_2

CLR

TI

;load the data


;stay here until last bit gone
;get ready for next char

RET
;-------------- Receive data serially in ACC
RECV:

JNB

RI,RECV

;wait here for char

MOV

A,SBUF

;save it in ACC

CLR

RI

;get ready for next char

RET
;---------------The message to send
MYDATA:DB
END

We Are Ready,0
79

DOUBLING THE BAUD RATE IN THE 8051


There are two ways to increase the baud rate of data transfer
in the 8051:
1. To use a higher frequency crystal.
It is not feasible in many situations since the system
crystal is fixed.
Many new crystal may not be compatible with the IBM PC
serial COM ports baud rate.
2. To change a bit in the PCON register.
This is a software way by setting SMOD=1.

80

PCON REGISTER
SMOD

Double baud rate. If Timer 1 is used to


generate baud and SMOD=1, the baud
rate is doubled when the Serial Port is
used in modes 1,2,3

GF1,GF0 General purpose flag bit.


PD

Power down bit. Setting this bit


activates Power Down operation in
the 80C51BH. (precedence)

IDL

Idle Mode bit. Setting this bit activates


Idle Mode operation in the 80C51BH.

(MSB
)
SMOD

--

--

--

GF1 GF2

PD

* PCON is not bit-addressable. See Appendix H. p410

(LSB
)IDL
81

SMOD FLAG OF THE PCON REGISTER


Power control register: PCON
MOV A, PCON
SETB ACC.7
MOV PCON,A
;we dont want to modify other bits
An 8-bit register
Not bit-addressable
SCOM=0: default
SCOM=1: double the baud rate
See Table 10-5

82

TABLE 10-5: BAUD RATE COMPARISON


FOR SMOD = 0 AND SMOD =1
TH1 (Decimal)

(Hex)

SMOD = 0

SMOD = 1

-3

FD

9,600

19,200

-6

FA

4,800

9,600

-12

F4

2,400

4,800

-24

E8

1,200

2,400

Note: XTAL = 11.0592 MHz.


11.0592 MHz

XTAL
oscillator

12

SMOD = 1
Machine
To
57600
Hz
16
timer 1
cycle freq.
to set
28800 Hz baud
921.6 kHz
32
rate83
SMOD = 0

BAUD RATES FOR SMOD=0


When SMOD=0, the 8051 divides 1/12 of the crystal frequency
by 32, and uses that frequency for timer 1 to set the baud
rate.
XTAL = 11.0592 MHz
The system frequency = 11.0592 MHz / 12 = 921.6 kHz
Timer 1 has 921.6 kHz/ 32 = 28,800 Hz as source.
TH1=256 - Crystal frequency/(12*32*Baud rate)
Default on reset
See Appendix A, page 363

84

BAUD RATES FOR SMOD=1


When SMOD=0, the 8051 divides 1/12 of the crystal frequency
by 16, and uses that frequency for timer 1 to set the baud
rate.
XTAL = 11.0592 MHz
The system frequency = 11.0592 MHz / 12 = 921.6 kHz
Timer 1 has 921.6 kHz/ 16 = 57,600 Hz as source.
TH1=256 - Crystal frequency/(12*16*Baud rate)

85

EXAMPLE 10-6 (1/2)


Assuming that XTAL = 11.0592 MHz for the following
program,
state (a) what this program does, (b) compute the
frequency used by
timer 1 to set the baud rate, and (c) find the baud rate of
the data
transfer.
Solution:
(a) This program transfers ASCII letter B (01000010 binary)
continuously.
(b) and (c) With XTAL = 11.0592 MHz and SMOD = 1
11.0592 / 12 = 921.6 kHz machine cycle frequency.
921.6 /16 = 57,600 Hz frequency used by timer 1 to set the
baud rate.
57,600 / 3 = 19,200, the baud rate.

86

EXAMPLE 10-6 (2/2)


MOV

A,PCON

SETB ACC.7
;SMOD=1, double baud rate

MOV

PCON,A

MOV

TMOD,#20H ;Timer 1, mode 2,auto reload

MOV

TH1,#-3

MOV

SCON,#50H ;8-bit data,1 stop bit, RI enabled

;19200 baud rate

SETB TR1

;start Timer 1

MOV

A,#B

;transfer letter B

TI

;make sure TI=0

MOV

SBUF,A

;transfer it

H_1:JNB

TI H_1

;check TI

A_1:CLR

SJMP A_1

;do again
87

EXAMPLE 10-7
Find the TH1 value (in both decimal and hex) to set the baud
rate to each of the following: (a) 9600 Hz (b) 4800 Hz if
SMOD =1
Assume that XTAL = 11.0592 MHz.
Solution:
With XTAL = 11.0592 and SMOD = 1,
11.0592 / 12 = 921.6 kHz machine cycle frequency.
921.6 /16 = 57,600 Hz frequency used by the timer 1
(a) 57,600 / 9600 = 6 TH1 = -6 or TH1 = FAH.
(b) 57,600 / 4800 = 12 TH1 = -12 or TH1 = F4H.

88

EXAMPLE 10-8
Find the baud rate if TH1 = -2, SMOD = 1, and XTAL = 11.0592
MHz. Is this baud rate supported by IBM/compatible PCs?
Solution:
With XTAL = 11.0592 and SMOD = 1, we have timer 1 frequency
= 57,600 Hz. The baud rate is 57,600 / 2 = 28,800. This baud
rate is
not supported by the BIOS of the PC; however, the PC can be
programmed to do data transfer at such a speed. The software
of
many modems can do this. Also, Hyperterminal in Windows 95
(and higher) supports this and other baud rates.

89

YOU ARE ABLE TO (1/2)


Contract and compare serial versus parallel communication
List the advantages of serial communication over parallel
Explain serial communication protocol
Contrast synchronous versus asynchronous communication
Contrast half- versus full-duplex transmission
Explain the process of data framing

90

YOU ARE ABLE TO (2/2)


Describe data transfer rate and bps rate
Define the RS232 standard
Explain the use of the MAX232 and MAX232 chips
Interface the 8051 with an RS232 connector
Discuss the baud rate of the 8051
Describe serial communication features of the 8051
Program the 8051 for serial data communication

91

HOMEWORK
Chapter 10 Problems 3,8,15,36,38,39,47

92

You might also like