ươ
ố ế
ạ ộ
Ch
ng X: Ho t đ ng port n i ti p
ớ
I. Gi
ệ
i thi u:
ề
ữ ệ
ề
ẫ
ế
ể
ữ ệ
ườ
ộ
ầ
ặ
ng c n 8 ho c nhi u
ỉ
ế ị
t b ch cách xa
ữ ệ
ề
ng dây d n đ truy n d li u đ n m t thi
c ướ
ề
ử
ộ
c g i đi t ng bít m t so
ớ
ữ ệ
ặ
ượ
ề
ừ
ượ
ộ
ề
c truy n đi
ể
ậ
ổ ố ế
ượ
ố ế
ữ ệ
ớ ữ ệ
c truy xu t qua các chân TXD và RXD. D li u
ữ ệ
ượ
c phát
ượ
c thu (nh p) qua chân RXD (P3.0) và d li u đ
ấ
ố
Các máy tính truy n d li u theo hai cách: Song song và n i
ề
ế
ti p. Trong truy n d li u song song th
ườ
đ
vài b
ố ế
Trong truy n thông n i ti p d li u đ
ề
v i truy n song song thì m t ho c nhi u byte đ
ộ
cùng m t lúc.
chuy n đ i n i ti p sang song song v i d li u nh p.
ấ
Port n i ti p đ
ậ
đ
(xu t) qua chân TXD(P3.1)
ố ế
ạ ộ
ữ
ượ
c gi
ọ
c thu và đ
ế
th hai đ
ầ
c thu đ y đ thì
ị ấ
ứ
ệ
ề
t cho phép ph n m m
ấ ế
ậ
ỉ
B đ m port n i ti p (SBUF)
ữ
ch 99H nh n d
ở ạ
đi
ố ế
ặ
ể
ể
Thanh ghi đi u khi n port n i ti p (SCON)
ở ạ
đi
ạ
ố ế
ỉ
ứ
ỉ
ch
ạ
ch bit ch a các bit tr ng
ể
ề
Port n i ti p cho ho t đ ng song công (full duplex: thu
ờ
ồ
ệ
và phát đ ng th i) và đ m thu (receiver buffering)
ộ
ự ẽ ượ
trong
cho phép m t ký t
s đ
ự
ứ
ự
ậ
ượ
c nh n. N u CPU đ c ký t
khi ký t
th hai đ
ủ
ượ
ự ứ
ấ ướ
ứ
c khi ký t
th nh t tr
ẽ
ữ ệ
d li u s không b m t.
ầ
ặ
Hai thanh ghi ch c năng đ c bi
ố ế
truy xu t đ n port n i ti p là: SBUF và SCON.
ộ ệ
ệ
li u đ thu ho c phát
ề
98H là thanh ghi có đi
thái và các bit đi u khi n
II. Các thanh ghi PORT
ệ ố ế
ừ ộ ệ
ừ
ữ ệ
ượ
c phát
c ghi vào SBUF và đ
ộ ệ
ợ
ẽ ượ
ng h p này nó là b đ m phát
c n p vào SBUF thông qua ngõ RXD và
ấ ữ ệ
ể
ữ ệ
ọ
ượ
ộ ệ
ợ
ng h p này nó là b đ m thu
thanh ghi SBUF đ truy xu t d li u thu
ườ
ủ
ể ấ ừ ộ ố ế b dao
1. Thanh ghi đ m n i ti p SBUF(Serial Buffer Register)
Thanh ghi SBUF đóng vai trò v a là b đ m phát
ộ ệ
v a là b đ m thu:
ẽ ượ
ầ
D li u c n phát đi s đ
ườ
qua ngõ TXD, trong tr
ạ
D li u thu s đ
ữ ệ ừ
đ c d li u t
c, trong tr
đ
ộ
ố
ộ ặ ử ụ T c đ baud c a port n i ti p có th l y t
đ ng trên chip ho c s d ng timer.
ủ
ấ
C u trúc c a thanh ghi SBUF:
ị
D Thanh ghi d ch CLK
SBUF
CLK (Chỉ ghi) Q
SBUF
ỉ ọ
(ch đ c)
Baud rate clock
(transmit)
SBUF
ỉ ọ
(ch đ c)
ộ
BUS n i 8051
ữ ệ
ệ
Ví d :ụ các l nh ghi d li u vào
ọ ữ ệ ừ
SBUF và đ c d li u t
SBUF
ị
MOV SBUF, # 40H
; phát giá tr 40H qua port
ố ế
n i ti p
ủ
ộ
; phát n i dung c a A qua
ố ế
ọ
ữ ệ
; đ c d li u thu đ
ượ ừ
c t
ố ế
MOV SBUF, A
port n i ti p
MOV A, SBUF
port n i ti p
ố ế
ề
ể
Thanh ghi đi u khi n port n i ti p
SCON
ứ
ộ ệ
ế
ệ
ỗ
ờ
TI đ
ề
ầ
Đ c xóa b ng ph n m m
ộ ệ
ủ
ầ
ặ
ậ
ắ
ự
ượ
c đ t lên m c 1 khi b đ m thu đã đ y (đã nh n đ 1 ký t )
ứ
ầ
ề
ế ộ
ượ
ứ
c phát trong ch đ UART 9bit, bit này đ
ặ
c đ t
ề
ặ
REN = 1: Cho phép thu
REN = 0: c mấ
ắ
TI : c ng t phát
ặ
ượ
c đ t lên m c 1 khi b đ m phát đã r ng (k t thúc vi c phát
1ký t ). ự
ằ
ượ
ờ
RI : c ng t thu
RI đ
ằ
ượ
Đ c xóa b ng ph n m m
ượ
TB8: bit th 9 đ
ằ
ho c xóa b ng ph n m m
ứ
ầ
ượ
ế ộ
c trong ch đ UART 9bit
RB8: bit th 9 thu đ
SM2:
ố ế
ộ
ở
ọ
ử
ề
ch đ truy n thông đa x lý trong
SM2 =1: Port n i ti p h at đ ng
ẽ
ế ộ
ờ
ượ
ứ
ặ
ế
c đ t lên 1 n u bit th 9
ượ
ế ộ
các ch đ 2 và 3; bit c RI s không đ
thu đ
c là 0
ế ộ
ạ
ọ
SM0, SM1: ch n ch đ ho t
đ ng:ộ
ế ộ
ữ ệ
ố ế
ớ
ỳ
ị
ộ
ấ ứ ệ
ướ
ố
ằ
ả ể
c khi phát ph i ki m tra b đ m
ườ
ữ
c kh i đ ng b ng b t c l nh nào ghi d
ộ ệ
ng RXD (P3.0)
ỗ
ị
ử
c g i ra đ
ng TXD (P3.1). M i bit phát
ệ
ỳ
ấ ở
ở
ế ộ ạ ộ
Các ch đ ho t đ ng
ị
Ch đ thanh ghi d ch 8 bit (Mode 0)
ượ
c vào và ra qua ngõ RXD.
D li u n i ti p đ
ị
ấ
ị
Ngõ TXD là ngõ xu t xung nh p d ch, v i 1 chu k xung nh p
ặ
ẽ ượ
ị
c phát ho c thu
d ch thì 1 bit s đ
ầ
ớ
ặ
ượ
ữ ệ
c phát ho c thu v i bit đ u tiên là bit LSB
D li u đ
ố ị
ố
ầ
ở
ộ
1/12 t n s dao đ ng trên chip
T c đ baud c đ nh
ở ộ
ự ượ
ệ
Vi c phát ký t
đ
ệ
li u vào thanh ghi SBUF, tr
ữ ệ
ỗ
phát đã r ng. D li u d ch ra ngòai trên đ
ượ
ị
ớ
ườ
v i các xung nh p đ
ợ ệ
đi h p l
(trên RXD) trong m t chu k máy, tín hi u xung
ở ề
ố
ậ
nh p xu ng th p
ộ
S3P1 và tr v cao
S6P1.
ượ
Vi c thu đ
c kh i đ ng khi cho phép b thu
ặ
ở ộ
ữ ệ
ườ
ư
ị
ể ắ ầ
ượ
ế ế
ố ế
ị
ắ ầ
ở ạ
ả
ng
ở ộ
ộ
ệ
ắ
ắ ổ
(REN) = l và ng t thu (RI)= 0. Quy t c t ng quát
ắ ầ
ể
ươ
ng trình đ kh i đ ng
đ t REN khi b t đ u ch
ậ
ồ
port n i ti p, r i xóa RI đ b t đ u nh n d li u.
c đ a ra đ
Khi RI b xóa, các xung nh p đ
ng
ỳ
ữ ệ
TXD, b t đ u chu k máy k ti p và d li u
ị
ấ
ị ở ườ
ng RXD. L y xung nh p
đ
theo xung nh p
ườ
ố ế
ữ ệ
cho d li u và port n i ti p x y ra
c nh đ
ủ
c a TXD.
Vi D :ụ
ể
ữ ệ
Ch
ng trình con đ phát 1byte d li u
ở ộ
ở ứ
c kh i đ ng khi bit cho phép REN
ờ
m c 1 và c
ự ượ
đ
ở ứ
m c 0
ữ ệ
Ch
ươ
PHAT: JNB TI,$
CLR TI
MOV SBUF, A
RET
ệ
Vi c thu ký t
ắ
ng t thu RI
ươ
ể
ng trình con dùng đ thu 1byte d li u:
THU: JNB RI,$
CLR RI
MOV A, SBUF
RET
ớ ố ộ
Ch đ 1 (UART 8 bit v i t c đ
ổ ượ
c):
ế ộ ư
ộ ố ế
ồ Trong ch đ 1, port n i ti p c a 89c51 ho t đ ng nh 1
ổ
ộ ạ ộ
ộ ố
ụ ớ
ự ữ ệ ướ
ộ ụ
d li u đi tr
ở ứ
m c cao. Đôi khi xen thêm bit ki m tra ch n l
ữ ệ ố
ổ ữ ệ ủ song song
ể
ổ ữ ệ ừ ố ế n i ti p thành
ế ộ
baud thay đ i đ
ủ
b thu phát không đ ng b 8 bit có t c đ baud thay đ i
(UART – Universal Asynchronous Receiver Transmitter).
ố ế
ữ ệ
ộ
ỗ
B UART là m t d ng c thu phát d li u n i ti p v i m i
ấ
ở ứ
m c th p và theo sau
c là bit start
ký t
ẵ ẻ
ể
bit stop
ủ
ạ ộ
ữ
gi a bit d li u cu i cùng và bit stop. Ho t đ ng ch
ừ
ế
y u c a UART là chuy n đ i d li u phát t
ế
ố ế
sang n i ti p và bi n đ i d li u thu t
song song.
ữ ệ
ượ ị
Quá trình phát d li u:
ầ
SBUF đ
ng TXD c d ch ra ngoài trên đ
ằ ườ
ữ ệ
ẽ ượ ệ ấ ặ c đ t lên 1 khi xu t hi n bit Stop
ượ c TXD.
ế ậ ượ t l p và đ c qui
ộ
ườ ề ả ằ ị ng truy n: b ng ngh ch đ o
T c đ baud: do ng
ở ố
ủ
Th i gian c a 1 bit trên đ
ộ ữ ệ
Ghi d li u c n phát vào SBUF .
ữ ệ ừ
D li u t
ắ ầ
b t đ u b ng bit Start, theo sau là 8bit d li u và sau
cùng là bit Stop
ắ
ờ
C ng t phát TI s đ
trên đ
ố
ườ ậ
ộ
i l p trình thi
ủ
ị
đ nh b i t c đ tràn c a Timer1.
ờ
ủ ố
c a t c đ baud.
ữ ệ
Quá trình thu d li u:
ạ
ừ
Đ c kh i đ ng b ng m t s chuy n tr ng thái t
ộ ự
ườ
ể
ng RXD.
Vi c thu d li u b t đ u b ng 8 bit d li u đ
(cid:0)
ượ
ở ộ
ằ
ứ
ố
ứ
m c 1 xu ng m c 0 trênđ
ữ ệ
ượ
ằ
ắ ầ
ữ ệ
ệ
c
ượ
ứ
ị
c
Stop bit ( bit th 9) đ
d ch vào trong SBUF
ờ
ộ
ư
c RI
đ a vào bit RB8 thu c thanh ghi SCON
= 1
(cid:0)
ố ộ
Ch đ 2 UART 9 bit t c đ baud
ế ộ
ố ị
c đ nh
ồ ữ ệ
ữ ệ ể ậ ượ ứ ch đ này d li u thu/phát có 11bit bao g m 1bit Start,
c)
ữ ệ
ố
ế ộ
8 bit d li u, 1bit d li u th 9 (có th l p trình đ
và cu i cùng là 1bit Stop
ứ ữ ệ ữ ệ ượ Khi phát thì bit d li u th 9 chính là d li u đ
ể
ẵ ư
c đ a
vào bit TB8 trong thanh ghi SCON (có th là parity
ặ ẻ
ch n ho c l )
ứ ượ ư Khi thu thì bit d li u th 9 đ c đ a vào bit RB8 trong
ữ ệ
thanh ghi SCON
ố ộ ặ ằ ổ T c đ baud không đ i và b ng fOSC/32 (ho c 64)
ố ộ
Ch đ 3 UART 9 bit t c đ baud
ổ ượ
c
ế ộ
thay đ i đ
Ch đ này gi ng nh
ượ
ở
ấ
ệ
ộ
ế ộ
ế ộ
ộ
ạ ừ ố
ư ở
ế ộ
ố
ế ộ
ch đ 2 ngo i tr t c đ
ể ậ
ấ
ượ
baud có th l p trình đ
c cung c p
c và đ
ố
ế ộ
ậ
b i Timer.Th t ra các ch đ 1, 2, 3 r t gi ng
ố ị
ở ố
t c đ baud (c đ nh
nhau. Cái khác bi
t là
ế ộ
ổ
trong ch đ 2, thay đ i trong ch đ 1 và 3) và
ế
ở ố
s bit data (8 bit trong ch đ 1,9 trong ch
ộ
đ 2 và 3).
ố ộ
ố ế
ủ
T c đ baud c a port n i ti p
ữ ệ
ố
ượ
ề
ơ
ị
ộ
T c đ baud là s bit d li u đ
c truy n trong 1 giây. Đ n v tính
ộ
Đ t o t c đ baud thì kh i đ ng cho Timer 1 tràn sau m t
ộ
ờ
ộ
ố
là bit/giây (bps)
ể ạ ố
kho ng th i gian t
ớ ố
ng ng v i t c đ baud.
ở
ề
ố
ở ộ
ứ
ưở
ng b i 1 bit trong thanh ghi đi u
ả
ộ
ể
T c đ baud cũng b nh h
ồ
ươ
ị ả
ấ
ấ
ố
ủ
ộ
khi n ngu n cung c p (PCON) bit 7 c a PCON là bit SMOD.
ế ộ
ặ
Đ t bit SMOD lên 1 làm g p đôi t c đ baud trong các ch đ 1,
2 và 3.
ị
ể ặ
ị
ỉ
c đ nh đ a ch theo bit, nên đ đ t bit SMOD
Vì PCON không đ
ầ
ệ
ả
ượ
lên 1 c n ph i theo các l nh sau:
ờ ủ
ị ệ
ượ
ề
ị
ấ
MOV A,PCON ; l y giá tr hi n th i c a PCON
ặ
SETB ACC.7 ; đ t bit SMOD lên 1
MOV PCON,A ; ghi giá tr ng
c v PCON
ố ộ
ế ộ
T c đ baud cho ch đ 0:
ố ộ
ế ộ
T c đ baud cho ch đ 1,3:
te
Timer
overflowra
1
Baudrate
SMOD
;
1
16
te
Timer
overflowra
1
(cid:0) (cid:0)
Baudrate
SMOD
;
0
32
(cid:0) (cid:0)
ố ộ
ế ộ
T c đ baud cho ch đ 2:
ể ạ
VD: S d ng Timer 1 đ t o xung
ử ụ
ị ố ộ
nh p t c đ baud
ế ộ
i (ch đ 2)
ế ộ
ế ộ
ự ạ ạ
n p l
ẻ
ế ộ
ế ộ
ế ộ
ế ộ
ế ộ
ế ộ
ọ
Ch n ch đ cho Timer 1:
Ch đ 13 bit (ch đ 0)
Ch đ 16 bit (ch đ 1)
Ch đ 8 bit t
Ch đ chia x (ch đ 3)
ị ợ
ể
ố ế ạ ố
ộ
ố
ạ
N p giá tr thích h p vào thanh ghi TH1 đ có t c đ
ộ
tràn đúng, t o ra t c đ baud cho port n i ti p.
ọ ố ộ Ch n t c đ baud:
ọ
ạ
ị ầ
ố ộ
ể
G i M là giá tr c n n p cho thanh ghi
ầ
TH1 đ có t c đ Baud theo yêu c u
ị ể ạ d ng th p phân và hex) đ đ t
ậ
ở ạ
ợ
ng h p sau.
ớ ầ ố b) 4800 n u SMOD = 1 v i t n s XTAL =
ụ
Ví d 1:Tìm giá tr TH1 (
ườ
ố ộ
t c đ baud cho các tr
ế
a) 9600
11.0592MHz
ầ ố ố
V i t n s XTAL = 11.0592MHz và SMOD = 1 ta có t n s
ớ ầ
ấ
c p cho Timer 1 là
ớ
fTimer = f OSC/12 = 11.0592MHz / 12 = 921600Hz
Baudrate = 921600 /16 = 57600 v i SMOD =1
ậ
a) 57600/9600 = 6 do v y TH1 = 6 hay TH1 = FAH
ậ
b) 57600/4800 = 12 do v y TH1 = 12 hay TH1 = F4H
ế ằ
ụ ạ ố ộ
ộ
ạ
ộ
t r ng b
Ví d : T o t c đ baud 1200bps bi
ử ụ
dao đ ng trên chip s d ng th ch anh 12MHz
ả ử ộ Ta có fosc =12MHz
Suy ra: ftimer = fosc/12 =12MHz/12 =1MHz
Ttimer = 1/ ftimer = 1/106 = 1µs
T c đ tràn timer 1 là ( gi s bit SMOD trong thanh ghi
ị ằ
ố
PCON có giá tr b ng 0):
Ta có f baud = f tràn T1 / 32
Suy ra f tràn T1 = f baud x 32 = 1200x32 = 38400Hz
Suy ra T tràn T1 = 1/ f tràn T1 = 1/38400 = 26µs
ị ầ
ạ
Nh v y giá tr c n n p cho thanh ghi timer là 26
T tràn T1 =26Ttimer
ư ậ
ươ ể ề ữ ệ
ng trình con đ truy n d li u trong thanh ghi A
ế ằ ộ
ọ
ố ế
t r ng port n i ti p h at đ ng
ầ ố ạ ớ ố ộ
ử ụ
ụ ở
trên)
ở ộ
ố
ố ế
ộ
ể
ự ầ
ể
ờ
ở ộ
ầ
ể ạ ố
S d ng Timer1 đ t o t c đ baud (gi ng ví d
ề
Kh i đ ng thanh ghi đi u khi n port n i ti p:
UART 8bit : Mode 1 (SM0 SM1= 0 1)
SM2=0
Set bit c TI =1 đ phát ký t
l n đ u tiên ngay khi kh i đ ng
MOV TMOD,#20H
MOV TH1,#26
SETB TR1
MOV SCON,#0100 0010B
CALL PHAT
PHAT: JNB TI,$
CLR TI
MOV SBUF,A
RET
END
ế
t ch
VD: Vi
ở ế ộ
ố ế
ra port n i ti p. Bi
ch đ
UART 8bit v i t c đ baud là 1200bps, t n s th ch anh là
12MHz
ế ươ ữ ệ ừ ố ế t ch port n i ti p.
ớ ố ch đ UART 8 bit v i t c
MOV TMOD,#20H
MOV TH1,#26
SETB TR1
MOV SCON,#0101 0000B
JNB RI,$
CLR RI
MOV A, SBUF
END
ậ
ng trình nh n 1 byte d li u t
ở ế ộ
ộ
ọ
ố ế
t r ng port n i ti p h at đ ng
ầ ố ạ VD: Vi
ế ằ
Bi
ộ
đ baud là 1200bps, t n s th ch anh là 12MHz.
Ví Dụ
ậ
ế
ụ
ở ổ
ữ ệ
Hãy vi
ng trình nh n liên t c d li u 8 bít
ế
ươ
t ch
ử
ổ
ỳ
ể ạ
ầ
ộ
c ng
ạ
P0 và g i nó đ n c ng P1 trong khi nó cùng lúc t o
ộ
ra m t sóng vuông chu k 200μs trên chân P2.1. Hãy
ố
ử ụ
s d ng b Timer 0 đ t o ra sóng vuông, t n s
ủ
c a 8051 là XTAL = 11.0592 MHz.
ử ụ ộ ở ự ộ ạ ạ ị ạ Ta s d ng b Timer0 đ ng n p l i) giá tr n p
ế ộ
ch đ 2 (t
cho TH0 là 100/1.085μs = 92.
ORG 0000H
ORG 0030H
;
ộ
ữ ệ ậ ổ
ọ
ấ
ặ
CPL P2.1
MAIN:TMOD, #02H; Ch n b Timer0,
MOV P0, #0FFH
MOV TH0, # 92
MOV IE, #82H ; L y P0 làm c ng vào nh n d li u
; Đ t TH0 = A4H cho 92
; IE = 1000 0010 cho phép Timer0
ộ
c ng P0
ữ ệ
ế
ậ
ữ ệ
ậ ổ
ể ữ ệ
ở ộ
SETB TR0 ; Kh i đ ng b Timer0
ừ ổ
BACK:MOV A, P0 ; Nh n d li u vào t
ể
MOV P1, A ; Chuy n d li u đ n c ng P1
ế ụ
SJMP BACK ; Ti p t c nh n và chuy n d li u
END
Vi D :ụ
ể ạ
ậ
Hãy vi
ng trình
ế ạ
t l
i ch
ớ
bài t p 2 đ t o sóng
ấ
ứ
ả
ố
ớ
thi
ế ầ
t t n s XTAL =
ử ụ
ộ ị
ờ
ươ
ở
ứ
vuông v i m c cao kéo dài 1085μs và m c th p
dài 15μs v i gi
11.0592MHz. Hãy s d ng b đ nh th i Timer1.
ầ ử ụ
ủ ộ ị
ờ
ế ộ
Vì 1085μs là 1000 × 1085μs nên ta c n s d ng ch đ
1 c a b đ nh th i Timer1.
ORG 0000H
LJMP MAIN
ORG 001BH
LJMP ngat
ORG 0030H
MAIN: MOV TMOD, #10H
MOV P0, #0FFH
MOV TL1, #018H
MOV TH1, #0FCH
MOV IE, #88H
ừ ộ
; D ng b Timer1
DJNZ R2, HERE
SETB TR1
BACK:MOV A, P0
MOV P1, A
SJMP BACK
Ngat: CLR TR1
CLR P2.1
MOV R2, #4
HERE:
MOV TL1, #18H
MOV TH1, #0FCH
SETB TR1
SETB P2.1
RETI
END
Ví D :ụ
ổ
ươ
ở ộ
ố ế ở
Vi
ề
t ch
ộ
ề
ầ
ố ế
ồ
ậ
ổ
ự
nh n ra P0 (gi
ế
ế
ng trình kh i đ ng c ng n i ti p
ch
ế
ộ
ớ ố
đ UART 8 bit v i t c đ truy n 4800 bps. Vi
t
ầ
ố ế
ổ
ISR cho c ng n i ti p theo yêu c u: truy n tu n
ổ
ế
ự
ự ừ
‘A’ đ n ‘Z’ ra c ng n i ti p đ ng
t
t
các ký t
ự ế
ố ế
ỗ ầ
ờ
đ n c ng n i ti p thì nh n
th i m i l n có ký t
ố
ả ử ầ
ậ
ấ
ề
s t n s
v và xu t ký t
ạ
th ch anh là 11.0592 MHz).
ố ế
ủ
ổ
ỉ
ị
ORG 0000h
LJMP main
ORG 0023h ; Đ a ch ISR c a c ng n i ti p LJMP
Serial_ISR
ề
truy n đ u tiên
ố ế
i công n i ti p
Main:
TMOD,#20h
MOV TH1,#(6)
ộ
ố
MOV TL1,#(6) ; T c đ 4800 bps SETB TR1
ầ
ự
MOV R7,#’A’ ; Ký t
ắ ạ
MOV IE,#90h ; Cho phép ng t t
SETB TI ;Cho phép truy n ề
SJMP $
ế
ả
ậ
ắ
Serial_ISR:
JNB RI, Transmit ; N u không ph i ng t do nh n
ự
ề
ký t
ậ
thì truy n CLR RI
ự
MOV A,SBUF ; Nh n ký t
ấ
MOV P0,A ; Xu t ra Port 0
SJMP exitSerial
ự
ề
; Truy n ký t
ự
Transmit:
CLR TI
MOV A,R7
MOV SBUF,A ; Truy n ký t
INC R7 ; Qua ký t
ề
ự ế
k
ư
ề
ế ụ
CJNE R7,#’Z’+1,exitSerial ; N u ch a truy n’Z’ thì
ượ ạ
c l
ế
i thì
ề ừ
ự
ề
; ti p t c truy n, ng
ắ ầ
MOV R7,#’A’ ; b t đ u truy n t
ký t
‘A’
exitSerial:
RETI
END