Download as pdf or txt
Download as pdf or txt
You are on page 1of 44

I HC QUC GIA TP.

H CH MINH TRNG I HC BCH KHOA


KHOA IN-IN T
B MN K THUT IN T

CHNG 3

H VI IU KHIN 8051

3.6 Cng ni tip (Serial Port)

B mn K Thut in T - HBK

Ni dung
Gii thiu Chun EIA(Electronic Industries Association)-232E hoc RS232 Giao tip cng ni tip MCS-51/52 ng dng ca ch 0 ng dng ca ch 1 ng dng ca ch 2 & 3 Cc th d.

B mn K Thut in T - HBK

Truyn d liu ni tip


Truyn d liu khong cch xa Tc truyn d liu thp Truyn d liu ni tip ng b
Dng tn hiu clock ring ng b ha mch thu v pht. Thng dng khung d liu ln hn v nhanh hn.

Truyn d liu ni tip bt ng b


Khng cn tn hiu clock ring ng b ho chuyn d liu. Da trn k{ t. Mi k{ t c ng khung bng start bit v stop bit. Bn thu cn nhn dng start bit v stop bit nhn ng k{ t d liu.
B mn K Thut in T - HBK
4

Truyn d liu ni tip ng b (synchronous) v bt ng b (asynchronous) vi 8051

B mn K Thut in T - HBK

ng truyn d liu c bn
DTE: Data Terminal Equipment DCE: Data Communications Equipmnent

Communication link

DTE
Computer or terminal

DCE
Modem

DCE
Modem

DTE
Computer or terminal

Ngi ta c th s dng ng in thoi cng cng hoc dnh ring lm mi trng truyn d liu ni tip bt ng b. Modem c dng chuyn i d liu s thnh dng sng analog thch hp cho vic truyn trn ng dy in thoi v ngc li. C 2 kiu ng truyn: im n im v a im.
B mn K Thut in T - HBK
6

ng truyn im n im v a im
StationRx
Peer
Tx Rx Tx

Station
Peer

Master

Slave 1
Address 1
B mn K Thut in T - HBK

Slave 2
Address 2

Slave n
Address n
7

C bn v cc ng truyn
H thng 2 dy v 4 dy: 2 dy: tn hiu v t. 4 dy: 2 b 2 dy. Cc kiu ng truyn: n cng (Simplex link): ng dy dnh ring cho thu hoc pht ch khng c hai. Bn song cng (Half-duplex link): ng dy c th dng cho pht hoc thu nhng mi ln ch c 1 chiu. Song cng (Full-duplex link): Pht v thu c th tin hnh ng thi. ng truyn cn 4 dy.
B mn K Thut in T - HBK
8

C bn v cc ng truyn
Signal pattern for letter A (41H) Start bit Stop bit 5V 0V 0 1 0 0 0 0 0 1 0 1
Serial port

D0 D1 D2 D3 D4 D5 D6 D7
>+3V <-3V mark
B mn K Thut in T - HBK

RS232

space
9

EIA-232-E or RS-232
EIA-232-E or RS-232 can apply to the following data communication schemes:
Serial communications Synchronous and asynchronous Dedicated leased or private lines Switched service Two wire or four wire Point to point or multipoint

4 aspects in EIA-232-E interface: mechanical, functional, procedural, and electrical.


B mn K Thut in T - HBK
10

EIA-232-E Mechanical Characteristics


25-pin DB25 /9-pin DB9 plug connector.

B mn K Thut in T - HBK

11

DB-9 Signals

B mn K Thut in T - HBK

12

Cng ni tip ca 8051


Cng ni tip ca 8051 c th hot ng trn mt di rng tn s Chc nng:
Chuyn i song song ni tip khi xut Chuyn i ni tip song song khi nhn

B mn K Thut in T - HBK

13

S khi cng ni tip ca 8051

B mn K Thut in T - HBK

14

Cc c tnh ca cng ni tip 8051


Song cng (ful-duplex) C m khi thu (b m 1 byte): nu CPU c k t th nht trc
khi k t th 2 c nhn y th d liu s khng b mt

C 4 ch lm vic (0 - 3) Lp trnh d dng : Chn tc (c nh (on-chip OSC/12 hoc OSC/64), hoc thay i c (T1)) Chn ch lm vic Cho chy (SCON) D s dng Truyn d liu: MOV SBUF, A Nhn d liu: MOV A, SBUF
B mn K Thut in T - HBK
15

Thanh ghi iu khin cng ni tip SCON

B mn K Thut in T - HBK

16

Cc ch hot ng ca cng ni tip

Trc khi s dng cng ni tip, SCON c khi to tr vi ch ng, v v.v... Th d, cc lnh sau MOV SCON, #01010010B khi to tr cho cng ni tip ch 1 (SM0/SM1=0/1), cho php b thu (REN=1) v t c ngt pht (T1=1) ch b pht sn sng hot ng.
B mn K Thut in T - HBK
17

Ch 0:Thanh ghi dch 8 bit (1/3)


RXD l chn xut/nhp d liu TXD l ng ra xung nhp dch Tm bit c pht ra hay thu vo vi LSB i trc. Tc baud c nh l 1/12 tn s mch dao ng trn chip

B mn K Thut in T - HBK

18

Ch 0:Thanh ghi dch 8 bit (2/3)


Pht: c khi ng bng lnh ghi vo SBUF

B mn K Thut in T - HBK

19

Ch 0:Thanh ghi dch 8 bit (3/3)


Vic thu: c khi ng khi bit cho php b thu REN = 1 v RI = 0

B mn K Thut in T - HBK

20

Ch 1: UART 8 bit c tc baud thay i c (1/3)


ch 1, 10 bit c pht i trn TXD hoc c thu vo RXD. Cc bit ny bao gm 1 bit bt u (lun lun l 0), 8 bit d liu (LSB i trc), v 1 bit dng (lun lun l 1). hot ng b thu, bit dng i vo RB8 trong SCON. Trong 8051, tc baud c t bng tc trn ca Timer 1.

B mn K Thut in T - HBK

21

Ch 1: UART 8 bit c tc baud thay i c (2/3)


Vic pht c khi ng bng cch ghi vo SBUF, nhng khng tht s bt u cho n khi cnh xung k ca b m chia 16 cung cp tc baud cng ni tip. D liu c dch ra trn ng TXD bt u bng bit bt u (start bit), theo sau l 8 bit d liu, v k n l bit dng. Chu kz ca mi bit l nghch o ca tc baud c lp trnh trong timer. C ngt pht (TI) c t ln 1 ngay khi bit dng xut hin trn TXD .

s kin ng b ha
B mn K Thut in T - HBK
22

Ch 1: UART 8 bit c tc baud thay i c (3/3)


Vic thu c khi ng bi chuyn tip 1 sang 0 RXD. B m chia 16 c reset tc thi ng chnh cc s m vi chui bit n. Chui bit n c ly mu gia 16 ln m. Gi s b thu pht hin bit bt u hp l th tip tc nhn k t. Bit bt u c b qua v 8 bit d liu c nhp vo thanh ghi dch cng ni tip. Khi tt c 8 bit c nhp vo th xy ra: Bit th 9 (bit dng) c nhp vo RB8 trong SCON. SBUF c np vi 8 bit d liu, v C ngt ca b thu (RI) c t ln 1. Tuy nhin cc iu trn ch xy ra nu c cc iu kin sau: RI = 0, v SM2 = 1, v bit dng nhn c = 1, hoc SM2=0. Yu cu RI = 0 bo m rng phn mm c k t trc (v xa RI). iu kin th 2 th hi phc tp, nhng ch p dng trong ch truyn thng a x l. N hm { Khng c t RI ln 1 trong ch truyn thng a x l khi bit d liu th chn l 0.
B mn K Thut in T - HBK
23

Ch 2: UART 9 bit c tc baud c nh


Khi SM1 =0 v SM0 = 1, cng ni tip hot ng ch 2 nh UART 9 bit vi tc baud c nh. Mi mt bit c pht hoc thu: 1 bit bt u, 8 bit d liu, 1 bit d liu th 9 lp trnh c, v 1 bit dng. Khi pht, bit th 9 l ni dung ca bit TB8 trong SCON. Khi thu, bit th 9 thu c c t trong RB8. Tc baud ch 2 l 1/32 hay 1/64 tn s mch dao ng trn chip (xem thm mc tc baud cng ni tip).

B mn K Thut in T - HBK

24

Ch 3: UART 9 bit c tc baud thay i c Ch 3 ging vi ch 2 ngoi tr tc baud c lp trnh v c cung cp bi timer. Tht ra cc ch 1, 2, v 3 rt ging nhau. S khc bit l tc baud (c nh trong ch 2, thay i c trong ch 1 v 3) v s bit d liu (8 trong ch 1, 9 trong ch 2 v 3)

B mn K Thut in T - HBK

25

Khi to tr v truy cp cc thanh ghi cng ni tip


Cc tc v vi cng ni tip
Cho php b thu Truyn (thu/pht) d liu ni tip Thm bit kim tra chn l Cc c ngt t tc baud cho cng ni tip Truyn thng a x l

B mn K Thut in T - HBK

26

Cho php b thu Truyn d liu ni tip


S dng cc bit trong thanh ghi SCON Cho php b thu (REN bit 4)
SETB MOV REN Hoc SCON, #xxx1xxxxB ; vi x=0/1

Cc c ngt RI, TI: Cc c ny c bt ln bi phn cng nhng phi c xa bng phn mm.

RI = 1: B m nhn y; TI = 1: B m pht rng


2. Pht ni tip:
PHAT: JNB TI, $ CLR TI MOV SBUF,A RET
27

1. Thu ni tip:
NHAN: JNB RI, $ CLR RI MOV A, SBUF RET
B mn K Thut in T - HBK

Thm bit kim tra chn l


bit kim tra chn l - TB8
kim tra chn/l (nu khng c dng (*) l chn) ; qua bit nh C MOV C, P CPL C ; kim tra l (*) MOV TB8, C MOV SBUF, A ; ch 1: 7-bit + 1 parity-bit CLR ACC.7 MOV C, P MOV ACC.7, C MOV SBUF, A Nu Parity lun lun bng 1 c 2 bit dng
B mn K Thut in T - HBK
28

t tc baud cho cng ni tip

Cch t SMOD ln 1 MOV A,PCON SETB ACC.7 MOV PCON,A

B mn K Thut in T - HBK

29

S dng Timer 1 lm xung nhp tc baud


Khi to tr TMOD ch timer 8 bit t ng np li tr u (ch 2 ca timer) v t gi tr np li vo TH1 cho tc trn bng tc baud. TMOD c khi to tr nh sau: MOVTMOD, #0010xxxxB vi x c gi tr 0 hay 1 cn cho Timer 0. t tc baud rt thp bng cch dng Timer 1 ch 16 bit , vi TMOD = #0001xxxxB. Tuy nhin phi khi to tr li cc thanh ghi TL1/TH1 sau mi ln trn. Vic ny s c thc hin trong chng trnh phc v ngt. Mt la chn khc l cung cp xung nhp Timer1 bng xung nhp bn ngoi qua chn T1 (P3.5). Tc baud l 1/32 tc trn ca Timer 1. Do cng thc xc nh tc baud trong cc ch 1 v 3 l Tc baud = 1/32 Tc trn ca Timer 1 Th d: hot ng 1200 baud cn tc trn nh sau 1200 = 1/32 Tc trn ca Timer 1 Tc trn ca Timer 1 = 32 x 1200 = 38400 = 38.4 KHz -> Toverflow = 1/38.4 kHz = 26.04 s Vi XTAL=12 MHz -> TCLK = 1 s. Overflow cn Toverflow/TCLK 26 clocks Gi tr np cho timer 1 l -26
B mn K Thut in T - HBK
30

Tm tt tc baud

B mn K Thut in T - HBK

31

Th d 1: Khi to tr cho cng ni tip


Vit chui lnh khi to tr cng ni tip hot ng nh UART 8 bit vi tc 2400 baud. S dng Timer 1 cung cp xung nhp tc baud.

Bi gii. Vi th d ny, c 4 thanh ghi phi c khi to tr l: SCON, TMOD, TCON, v TH1. Gi tr cn khi to tr cho cc thanh ghi nh sau

ORG INIT: MOV MOV MOV SETB END

8100H SCON, #52H TMOD, #20H TH1, #-13 TR1

B mn K Thut in T - HBK

32

Th d 2:
Gi s 10 byte chui d liu c lu trong RAM ni t a ch 30H. Vit chng trnh gi chui d liu ny n cng ni tip ca 8051 (1200 baud, crystal 11.0592 MHz)
ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-24 SETB TR1 MOV R2,#10 MOV R0,#30H MOV A,@R0 ACALL SEND INC R0 DJNZ R2,LOOP SJMP DONE JNB TI,$ CLR TI MOV SBUF,A RET NOP END
;Serial port mode 1 ;Timer 1 mode 2 ;reload count for 1200 baud ;start Timer 1 ;number of loops ;starting address ;get data ;send data ;increase pointer ;loop 10 times

LOOP:

SEND:

;transmit buffer empty? No:check again ;yes: clear flag and ; send data ;return

DONE:

B mn K Thut in T - HBK

33

Th d 3
Gi s chui d liu c lu trong RAM ni t a ch 30H n 50H. Vit chng trnh gi chui d liu ny ra cng ni tip 8051 dng UART 8-bit, 2400 baud, 11.059-MHz crystal
ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-12 SETB TR1 MOV R0,#30H MOV A,@R0 ACALL SEND INC R0 CJNE R0,#51H,LOOP SJMP DONE JNB TI,$ CLR TI MOV SBUF,A RET NOP END

LOOP:

SEND:

DONE:
B mn K Thut in T - HBK

34

Th d 4
Vit chng trnh nhn 20-byte chui d liu t cng ni tip dng UART 8bit, 2400 baud, 11.059-MHz crystal v ghi vo RAM ni bt u t a ch 40H
ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-12 SETB TR1 MOV R2,#20 MOV R0,#40H LOOP: ACALL RECEIVE MOV @R0,A INC R0 DJNZ R2,LOOP SJMP DONE RECEIVE: JNB RI,$ CLR RI MOV A,SBUF RET DONE: NOP END B mn K Thut in T - HBK

;Serial port mode 1 ;Timer 1 mode 2 ;reload count for 2400 baud ;start Timer 1 ;number of loops ;starting address ;receive data ;store data ;increase pointer ;loop 20 times

;receive buffer full? No: check again ;yes: clear flag and ; receive data ;return

35

Th d 5
Vit chng trnh nhn 40-byte chui d liu t cng ni tip dng UART 8bit, 4800 baud, 11.059-MHz crystal v ghi vo RAM ni bt u t a ch 40H
ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-6 SETB TR1 MOV R2,#40 MOV R0,#40H LOOP: ACALL RECEIVE MOV @R0,A INC R0 DJNZ R2,LOOP SJMP DONE RECEIVE: JNB RI,$ CLR RI MOV A,SBUF RET DONE: NOP END B mn K Thut in T - HBK

;Serial port mode 1 ;Timer 1 mode 2 ;reload count for 4800 baud ;start Timer 1 ;number of loops ;starting address ;receive data ;store data ;increase pointer ;loop 20 times

;receive buffer full? No: check again ;yes: clear flag and ; receive data ;return

36

Th d 6: Chng trnh xut k t


Vit chng trnh con OUTCHR pht m ASCII 7 bit trong thanh ghi tch ly A ra cng nitip ca 8051 vi bit kim tra l c thm vo nh bit th 8. Tr v t chng trnh con khng lm thay i tr ca thanh ghi tch ly trc khi gi chng trnh con. Bi gii. Th d ny v th d k minh ha 2 trong s cc chng trnh con thng dng nht trn cc h vi tnh c gn thit b u cui RS232: xut k{ t (OUTCHR) v nhp k{ t (INCHAR). OUTCHR: MOV CPL MOV JNB CLR MOV CLR RET C, P C ACC.7, C TI, AGAIN TI SBUF, A ACC.7 ; t bit kim ra chn vo c C ; i sang kim tra l ; thm vo m k{ t ; TX c rnh ? Khng : kim tra li ; Truyn c xa c TI v ; gi k{ t ; b bit kim tra l v ; quay v
37

AGAIN:

B mn K Thut in T - HBK

Th d, cc lnh sau pht m ASCII cho ch Z n thit b ni tip gn vo cng ni tip ca 8051: MOV A, # Z CALL OUTCHR (tip tc)

B mn K Thut in T - HBK

38

Th d 7: Chng trnh con nhp k t


Vit chng trnh con INCHAR nhp 1 k t t cng ni tip ca 8051 v tr v vi m ASCII 7 bit trong thanh ghi tch ly. Bit kim tra l c t trong bit th 8 nhn c v t c nh ln 1 nu c sai v kim tra chn l. INCHAR: JNB RI, $ ; i k t CLR RI ; xa c MOV A, SBUF ; c k t vo A MOV C, P ; vi kim tra l trong A, P s = 1 CPL C ; b ch c li CLR ACC.7 ; b bit kim tra chn l RET

B mn K Thut in T - HBK

39

Th d 8
Gi s 10-byte chui d liu ASCII 8-bit c lu trong RAM ni t a ch 30H. Vit chng trnh pht chui d liu ny ra cng ni tip (4800 baud, crystal 11.0592 MHz) vi c kim tra l c truyn nh bit th 9.

B mn K Thut in T - HBK

40

Th d 8
ORG 0000H MOV SCON,#11010010B MOV TMOD,#00100000B MOV TH1,#-6 SETB TR1 MOV R2,#10 MOV R0,#30H LOOP: MOV A,@R0 MOV C,P CPL C MOV TB8,C ACALL SEND INC R0 DJNZ R2,LOOP SJMP DONE SEND: JNB TI,$ CLR TI MOV SBUF,A RET DONE: NOP END B mn K Thut in T - HBK ;Serial port mode 3 (9-bit) ;Timer 1 mode 2 ;reload count for 4800 baud ;start Timer 1 ;number of loops ;starting address ;get data ;put even parity bit in C flag ;convert to odd parity ;and move to the 9th data bit ;send data ;increase pointer ;loop 10 times ;check TI empty? No: check again ;yes: clear flag and ; send data ;return
41

Th d 9
Vit chng trnh nhn 40-byte chui d liu t cng ni tip dng UART 8-bit, 4800 baud, 11.059-MHz crystal v ghi ra RAM ngoi bt u t a ch 5000H
;Serial port mode 1 ;Timer 1 mode 2 ;reload count for 4800 baud ;start Timer 1 ;number of loops ;starting address ;receive data ;store data ;increase pointer ;loop 20 times
ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-6 SETB TR1 MOV R2,#40 MOV DPTR,#5000H LOOP: ACALL RECEIVE MOVX @DPTR,A INC DPTR DJNZ R2,LOOP SJMP DONE RECEIVE: JNB RI,$ CLR RI MOV A,SBUF RET DONE: NOP END B mn K Thut in T - HBK

;receive buffer full? No: check again ;yes: clear flag and ;receive data ;return

42

Exercise
Vit chng trnh nhn 50-byte chui d liu t cng ni tip dng UART 8-bit, 2400 bps, 11.059 MHz v kim tra:
Nu byte d liu l s chn th ghi vo RAM ni bt u t a ch 40H Nu byte d liu l s l th ghi ra RAM ngoi bt u t a ch 2000H

B mn K Thut in T - HBK

43

Ti liu tham kho


H Trung M, Vi x l{, Nh xut bn i hc Quc Gia Tp. HCM - 2003 I. Scott MacKenzie , The 8051 Microcontroller, 2nd Edition, Prentice-Hall, 1995 Slide bi ging thy H Trung M Slide bi ging thy L Ch Thng.

B mn K Thut in T - HBK

44

You might also like