Download - GIAO TIẾP NỐI TIẾP VI ĐIỀU KHIỂN 8051
-
I HC QUC GIA TP.H CH MINHTRNG I HC BCH KHOA
KHOA IN-IN T B MN K THUT IN T
11
CHNG 3
H VI IU KHIN 8051
-
B mn K Thut in T - HBK
3.6 Cng ni tip (Serial Port)
2
-
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.
3
-
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.
4
-
B mn K Thut in T - HBK
Truyn d liu ni tip ng b (synchronous) v bt ng b (asynchronous) vi 8051
5
-
B mn K Thut in T - HBK
ng truyn d liu c bn
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.
6
DTE DCE DCE DTE
Computer or
terminal
Modem Modem Computer or
terminal
Communication linkDTE: Data Terminal EquipmentDCE: Data Communications Equipmnent
-
B mn K Thut in T - HBK
ng truyn im n im v a im
7
Master
Slave 1 Slave 2 Slave n
Address 1 Address 2 Address n
Station Station
Peer Peer
Tx
TxRx
Rx
-
B mn K Thut in T - HBK
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.
8
-
B mn K Thut in T - HBK
C bn v cc ng truyn
9
5V
0V
>+3V
-
B mn K Thut in T - HBK
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.
10
-
B mn K Thut in T - HBK
EIA-232-E Mechanical Characteristics
25-pin DB25 /9-pin DB9 plug connector.
11
-
B mn K Thut in T - HBK
DB-9 Signals
12
-
B mn K Thut in T - HBK
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
13
-
B mn K Thut in T - HBK
S khi cng ni tip ca 8051
14
-
B mn K Thut in T - HBK
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 trckhi 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
15
-
B mn K Thut in T - HBK
Thanh ghi iu khin cng ni tip SCON
16
-
B mn K Thut in T - HBK
Cc ch hot ng ca cng ni tip
17
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
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
18
-
B mn K Thut in T - HBK
Ch 0:Thanh ghi dch 8 bit (2/3)
19
Pht: c khi ng bng lnh ghi vo SBUF
-
B mn K Thut in T - HBK
Ch 0:Thanh ghi dch 8 bit (3/3)
20
Vic thu: c khi ng khi bit cho php b thu REN = 1 v RI = 0
-
B mn K Thut in T - HBK
Ch 1: UART 8 bit c tc baud thayi 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.
21
-
B mn K Thut in T - HBK
Ch 1: UART 8 bit c tc baud thayi 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 .
22
s kin ng b ha
-
B mn K Thut in T - HBK
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 creset tc thi ng chnh cc s m vi chui bit n. Chui bit n cly mu gia 16 ln m.
Gi s b thu pht hin bit bt u hp l th tip tc nhn k t. Bit bt uc b qua v 8 bit d liu c nhp vo thanh ghi dch cng ni tip. Khi ttc 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 thnga x l. N hm { Khng c t RI ln 1 trong ch truyn thng a x lkhi bit d liu th chn l 0.
23
-
B mn K Thut in T - HBK
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 cngni tip).
24
-
B mn K Thut in T - HBK
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. Skhc bit l tc baud (c nh trong ch 2, thay i c trong ch 1 v 3) v s bit dliu (8 trong ch 1, 9 trong ch 2 v 3)
25
-
B mn K Thut in T - HBK
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
26
-
B mn K Thut in T - HBK
S dng cc bit trong thanh ghi SCON
Cho php b thu (REN bit 4)
SETB REN Hoc
MOV 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
27
Cho php b thu Truyn d liu ni tip
1. Thu ni tip:
NHAN: JNB RI, $
CLR RI
MOV A, SBUF
RET
2. Pht ni tip:
PHAT: JNB TI, $
CLR TI
MOV SBUF,A
RET
-
B mn K Thut in T - HBK
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
28
Thm bit kim tra chn l
-
B mn K Thut in T - HBK
t tc baud cho cng ni tip
29
Cch t SMOD ln 1MOV A,PCON
SETB ACC.7
MOV PCON,A
-
B mn K Thut in T - HBK
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
30
-
B mn K Thut in T - HBK
Tm tt tc baud
31
-
B mn K Thut in T - HBK
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
32
ORG 8100H
INIT: MOV SCON, #52H
MOV TMOD, #20H
MOV TH1, #-13
SETB TR1
END
-
B mn K Thut in T - HBK
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)
33
ORG 0000H
MOV SCON,#01010010B ;Serial port mode 1
MOV TMOD,#00100000B ;Timer 1 mode 2
MOV TH1,#-24 ;reload count for 1200 baud
SETB TR1 ;start Timer 1
MOV R2,#10 ;number of loops
MOV R0,#30H ;starting address
LOOP: MOV A,@R0 ;get data
ACALL SEND ;send data
INC R0 ;increase pointer
DJNZ R2,LOOP ;loop 10 times
SJMP DONE
SEND: JNB TI,$ ;transmit buffer empty? No:check again
CLR TI ;yes: clear flag and
MOV SBUF,A ; send data
RET ;return
DONE: NOP
END
-
B mn K Thut in T - HBK
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
34
ORG 0000H
MOV SCON,#01010010B
MOV TMOD,#00100000B
MOV TH1,#-12
SETB TR1
MOV R0,#30H
LOOP: MOV A,@R0
ACALL SEND
INC R0
CJNE R0,#51H,LOOP
SJMP DONE
SEND: JNB TI,$
CLR TI
MOV SBUF,A
RET
DONE: NOP
END
-
B mn K Thut in T - HBK
Th d 4 Vit chng trnh nhn 20-byte chui d liu t cng ni tip dng UART 8-
bit, 2400 baud, 11.059-MHz crystal v ghi vo RAM ni bt u t a ch 40H
35
ORG 0000H
MOV SCON,#01010010B ;Serial port mode 1
MOV TMOD,#00100000B ;Timer 1 mode 2
MOV TH1,#-12 ;reload count for 2400 baud
SETB TR1 ;start Timer 1
MOV R2,#20 ;number of loops
MOV R0,#40H ;starting address
LOOP: ACALL RECEIVE ;receive data
MOV @R0,A ;store data
INC R0 ;increase pointer
DJNZ R2,LOOP ;loop 20 times
SJMP DONE
RECEIVE:
JNB RI,$ ;receive buffer full? No: check again
CLR RI ;yes: clear flag and
MOV A,SBUF ; receive data
RET ;return
DONE: NOP
END
-
B mn K Thut in T - HBK
Th d 5 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 vo RAM ni bt u t a ch 40H
36
ORG 0000H
MOV SCON,#01010010B ;Serial port mode 1
MOV TMOD,#00100000B ;Timer 1 mode 2
MOV TH1,#-6 ;reload count for 4800 baud
SETB TR1 ;start Timer 1
MOV R2,#40 ;number of loops
MOV R0,#40H ;starting address
LOOP: ACALL RECEIVE ;receive data
MOV @R0,A ;store data
INC R0 ;increase pointer
DJNZ R2,LOOP ;loop 20 times
SJMP DONE
RECEIVE:
JNB RI,$ ;receive buffer full? No: check again
CLR RI ;yes: clear flag and
MOV A,SBUF ; receive data
RET ;return
DONE: NOP
END
-
B mn K Thut in T - HBK
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 C, P ; t bit kim ra chn vo c C
CPL C ; i sang kim tra l
MOV ACC.7, C ; thm vo m k{ t
AGAIN: JNB TI, AGAIN ; TX c rnh ? Khng : kim tra li
CLR TI ; Truyn c xa c TI v
MOV SBUF, A ; gi k{ t
CLR ACC.7 ; b bit kim tra l v
RET ; quay v
37
-
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)
38
-
B mn K Thut in T - HBK
Th d 7: Chng trnh con nhp k t
Vit chng trnh con INCHAR nhp 1 k t t cng ni tip ca8051 v tr v vi m ASCII 7 bit trong thanh ghi tch ly. Bit kimtra l c t trong bit th 8 nhn c v t c nh ln 1 nuc 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
39
-
B mn K Thut in T - HBK
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.
40
-
B mn K Thut in T - HBK
Th d 8
41
ORG 0000H
MOV SCON,#11010010B ;Serial port mode 3 (9-bit)
MOV TMOD,#00100000B ;Timer 1 mode 2
MOV TH1,#-6 ;reload count for 4800 baud
SETB TR1 ;start Timer 1
MOV R2,#10 ;number of loops
MOV R0,#30H ;starting address
LOOP: MOV A,@R0 ;get data
MOV C,P ;put even parity bit in C flag
CPL C ;convert to odd parity
MOV TB8,C ;and move to the 9th data bit
ACALL SEND ;send data
INC R0 ;increase pointer
DJNZ R2,LOOP ;loop 10 times
SJMP DONE
SEND: JNB TI,$ ;check TI empty? No: check again
CLR TI ;yes: clear flag and
MOV SBUF,A ; send data
RET ;return
DONE: NOP
END
-
B mn K Thut in T - HBK
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
42
ORG 0000H
MOV SCON,#01010010B ;Serial port mode 1
MOV TMOD,#00100000B ;Timer 1 mode 2
MOV TH1,#-6 ;reload count for 4800 baud
SETB TR1 ;start Timer 1
MOV R2,#40 ;number of loops
MOV DPTR,#5000H ;starting address
LOOP: ACALL RECEIVE ;receive data
MOVX @DPTR,A ;store data
INC DPTR ;increase pointer
DJNZ R2,LOOP ;loop 20 times
SJMP DONE
RECEIVE:
JNB RI,$ ;receive buffer full? No: check again
CLR RI ;yes: clear flag and
MOV A,SBUF ;receive data
RET ;return
DONE: NOP
END
-
B mn K Thut in T - HBK
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
43
-
B mn K Thut in T - HBK
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.
44