Tải bản đầy đủ (.pdf) (19 trang)

Lập trình giao tiếp nối tiếp doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (162.8 KB, 19 trang )

Xung & Hoi1
1.Giớithiệu
2.Sơđồ khốivàchân
3.Tổchứcbộnhớ
4.Cácthanhghichứcnăng đặcbiệt(SFR)
5.Dao độngvàhoạt độngreset
6.Tậplệnh
7.Cácmode định địachỉ (addressing modes)
8.LậptrìnhIO
9.Tạotrễ
10.LậptrìnhTimer/Counter
11.
11.
L
L


p
p
tr
tr
ì
ì
nh
nh
giao
giao
ti
ti
ế
ế


p
p
n
n


i
i
ti
ti
ế
ế
p
p
(serial
(serial
comm
comm
programming)
programming)
12.Lậptrìnhngắt(interrupt programming)
13.Lậptrìnhhợpngữ
Xung & Hoi2
11-1. Giớithiệu
•Port nốitiếphoạt độngsong công(full duplex), nghĩalàcó
khả năngthuvàphát đồngthời
•Sửdụng2 thanhghichứcnăng đặcbiệt SBUF (địachỉ byte là
99H) & SCON (địachỉ byte là98H) để truyxuấtport nốitiếp
•Việc ghilênSBUF sẽ nạpdữliệu để phát, vàviệc đọcSBUF
sẽ truyxuấtdữliệu đãnhận được à thựcracó2 SBUF riêng

rẽ
•SCON chứacácbit trạngtháivà điềukhiển, thanhnày được
định địachỉ bit
•Tầnsốhoạt độngcủaport nốitiếphay còngọilà tốc độ baud
(baud rate) cóthể cốđịnhhoặcthay đổi
Xung & Hoi3
Clk SBUF Q
(write only)
SBUF
(read only)
D
Shift Register
Clk
Baud rate clock
(phát)
Baud rate clock
(thu)
TXD
(P3.1)
8051 internal bus
RXD
(P3.0)
Xung & Hoi4
11-2. Thanhkhi điềukhiểnport nốitiếp
SM1, SM0: chọnchếđộ củaport nốitiếp
SM2: chophéptruyềnthông đaxửlý
REN: chophépthu, phải đượcset để nhậncáckýtự
TB8:bit thứ 9 đượcphát ở chếđộ 2 & 3
RB8:bit thứ 9 nhận được
TI: cờ ngắtphát, đượcset ngaysaukhikếtthúcviệcphát1

kýtự; đượcxóabởiphầnmềm
RI: cờ ngắtthu, đượcset ngaysaukhikếtthúcviệcthu1
kýtự; đượcxóabởiphầnmềm
SM0 SM1 SM2 REN RB8TB8 RITI
SCON
Xung & Hoi5
11-3. Cácchếđộ hoạt động
SM0SM1ModeMôtả Tốcđộ baud
000ThanhghidịchCốđịnh(f
OSC
/12)
011UART 8-bit Thay đổi (thiếtlập
bởibộđịnhthời)
102UART 9-bitCốđịnh(f
OSC
/12
hoặcf
OSC
/64)
113UART 9-bit Thay đổi (thiếtlập
bởibộđịnhthời)
Xung & Hoi6
11-3-1. Thanhghidịch8-bit (mode 0)
•Khiphátvàthudữliệu8-bit, bit LSB đượcpháthoặcthutrước
tiên
•Tốcđộ baud cốđịnh= f
OSC
/12
•ChânRxDdùngchocảviệcthuphátdữliệutrongkhiTxD
dùnglàmchânxuấtclock dịchbit

•Phát:
–GhivàoSBUF
–Dữliệu đượcdịchrangoàitrênchânRxD(P3.0)
–Xungclock dịchbit đượcgửiratrênchânTxD(P3.1)
–Mỗibit hợplệtruyền đitrênRxDtrong1 chukỳmáy
Xung & Hoi7
•Thu:
–Chỉđượckhởi độngkhiREN = 1 & RI = 0, nghĩalàphảiset
REN = 1 ở thời điểmbắtđầuchươngtrình& xóaRI để bắt
đầucôngviệcthudữliệu
–Dữliệu đượcdịchvàochânRxDbởixungclock dịchbit
(tác độngsườnlên)
•1 Ứngdụngcủamode 0:
–Mởrộngthêmcácngõracho8051
8051
TxD(P3.1)
RxD(P3.0)
Clock
Shift Regsiter
Data
8 ngõramởrộng
Xung & Hoi8
11-3-2. UART 8-bit cótốcđộ baud thay
đổi(mode 1)
•UART làbộthuphátdữliệunốitiếpvớimỗikýtựdữliệu
được đứngtrướcbởi1 bit start và đứngsaubởi1 bit stop.
Thỉnhthoảng1 bit parity đượcchènvào.
•Hoạt độngchủ yếucủaUART làbiếndữliệupháttừ// thành
ntvàbiếndữliệuthutừntthành//
•CờngắtphátTI đượcset bằng1 ngaykhibit stop xuấthiện

trênTxD
1 / baud rate
D0D1D2D3D4D5D6D7
Start
bit
Stop
bit
TI (ready
for more
data)
TxD
TI
Xung & Hoi9
•Việcnhận đượckhởi độngbởi1 chuyểntrạngtháitừ1 xuống
0 trên đườngRxD(bit start)
•Bit start sau đó đượcbỏqua & 8 bit dữ liệusau đó đượcnhận
tuầntựvàothanhghidịchbit củaport nốitiếp. Khicả8 bit
đượcnhận, tacó:
–Bit thứ 9 (bit stop) à RB8 củaSCON
–8 bit dữ liệu đượcnạpvàoSBUF
–CờngắtthuRI đượcset
•Note: Các điềutrênchỉ xảyranếutrước đócờRI = 0
Xung & Hoi10
11-4. Khởi độngvàtruyxuấtcácthanhghi
•Chophépnhận: REN trongSCON phải đượcset bởiphần
mềm để chophépnhậnkýtự
SETBREN
Hoặc
MOVSCON, #xxx1xxxxB
•Thêmvàobit chẵnlẻ:bit P trongPSW đượcset hoặcxóa ở

mỗichukỳmáy để thiếtlậpviệckiểmtrachẵncho8 bit chứa
trongA
MOVC, P; đưabit kiểmtrachẵnvàoTB8
MOVTB8, C; bit nàytrở thànhbit thứ 9
MOVSBUF, A; dichuyển8 bit dữ liệuvàoSBUF
Xung & Hoi11
•Cáccờngắt: RI vàTI đượcset bằngphầncứngnhưngphải
xóabằngphầnmềm
CTC nhận1 kýtựqua port nốitiếpnhư sau:
INCHAR:JNBRI, $
CLRRI
MOVA, SBUF
RET
CTC phát1 kýtựqua port nt:
OUTCHAR:JNBTI, $
CLRTI
MOVSBUF, A
RET
Xung & Hoi12
11-5. Tốc độ baud củaport nốitiếp
¸12
On-chip
OSC
Baud rate
clock
¸64
On-chip
OSC
Baud rate
clock

¸32
SMOD=0
SMOD=1
¸32
Timer 1
overflow
Baud rate
clock
¸16
SMOD=0
SMOD=1
Mode 0
Mode 2
Mode 1 & 3
Xung & Hoi13
Dùngtimer 1 làmxungclock tốc độ baud
•Thôngthườngkhởi độngthanhghiTMOD ở chếđộ tựđộng
nạplại8-bit (mode 2) & đặtgiátrị nạplạithíchhợpvàothanh
ghiTH1 để cótốcđộ tràn đúng, từđótạoratốcđộ baud
•MOVTMOD, #0010xxxxB ;for timer 1
•Baud rate = Timer 1 overflow / 32 hay /16 tùythuộcgiátrị bit
SMOD
Xung & Hoi14
Bàitoán11.1
•Tínhtoáncácgiátrị nạplạichothanhghiTH1 đốivớicáctốc
độ baud 9600, 4800, 2400, 1200 (XTAL = 11,0592MHz)?
~7%8929-7 (F9H)1129600
0,16%1202-26 (E6H)0121200
0%1200-24 (E8H)011,05921200
0%2400-12 (F4H)

0
11,05922400
0%4800-6 (FAH)011,05924800
0%9600-3 (FDH)011,05929600
0%19200-3 (FDH)111,059219200
Saisố
Tốcđộ baud
thựctế
Giátrị nạp
choTH1
SMOD
Tầnsốthạch
anh(MHz)
Tốc độ
baud
Xung & Hoi15
Tómlại:
NếuPCON.7 = 0
•TH1 = 256 -((Crystal / 384) / Baud)
NếuPCON.7 =1
•TH1 = 256 -((Crystal / 192) / Baud)
Làmvdvớibaud rate 19200 để chứngtỏvaitròbit SMOD
11.059Mhz crystal:
•TH1 = 256 -((Crystal / 384) / Baud)
TH1 = 256 -((11059200 / 384) / 19200 )
TH1 = 256 -((28799) / 19200)
TH1 = 256 -1.5 = 254.5
Xung & Hoi16
•Nếuset 254 ta đạt được14,400 baud cònvới255 ta đạt được
28,800 baud

•Set PCON.7 (SMOD). Ta có:
TH1 = 256 -((Crystal / 192) / Baud)
TH1 = 256 -((11059200 / 192) / 19200)
TH1 = 256 -((57699) / 19200)
TH1 = 256 -3 = 253
Kếtluậnvới19,200 baud (11.0592MHz crystal) taphải:
1.CấuhìnhPort nốitiếpmode 1 or 3
2.Timer 1 hoạt độngmode 2 (8-bit auto-reload)
3.Set TH1 bằng253
4.Set PCON.7 (SMOD)
Xung & Hoi17
Cácbàitoán

E
BT11.1. Khởi độngport nt: Viếtchuỗilệnhkhởi độngport
nốitiếphoạt độngnhư 1 UART 8-bit vớitốcđộ baud 2400.
Dùngtimer 1 để cungcấpxungclock tốc độ baud?

E
BT11.2. CTC xuấtkýtự: ViếtCTC mangtênOUTCHAR
phátmãASCII 7-bit chứatrongA raport nốitiếpvớibit kiểm
trachẵnlàbit thứ 8. Việctrở về từ CTC phảikhônglàmthay
đổinộidung thanhchứaA?

E
BT11.3. CTC thukýtự: ViếtCTC mangtênINCHAR để
thu1 kýtự từport nốitiếp& trả về mãASCII 7-bit trongA.
Sử dụngkiểmtrachẵntrongbit thứ 8 thu đượcvàset cờ nhớ
bằng1 nếucólỗichẵnlẻ?
Xung & Hoi18

MAX 232
Xung & Hoi19

×