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 (489.56 KB, 63 trang )
ỏn tt nghip
Kiu nh a ch trc tip c s dng truy xut cỏc bin nh hoc cỏc
thanh ghi trờn chip. Một byte c thờm vo theo opcoede dựng xỏc nh a
ch.
Direct Addressing
Opcode
Trong ch ny toỏn hng cha a ch cao ca ụ nh, a ch cao ca ụ
nh c xỏc nh bi 8 bit cũn a ch toỏn hng kia l thanh ghi.
Vớ dụ:
ADD
A,7FH
Cõu lnh ny thc hin cng ni dung ti ụ nh 7FH vi ni dung thanh
cha A, kt qu chuyn vo thanh cha A.
2.7.2 Ch a ch giỏn tip (Indirect Addressing).
Trong ch ny thỡ cỏc thanh ghi R0 v R1 cú th hot ng nh l cỏc
con tr v ni dung ca chỳng ch ra trong a ch RAM, ni m d liu c
c hay c ghi. Bit cú ý ngha thp nht ca opcode xỏc nh thanh ghi no
Opcode
i
(R0 hay R1) c s dng lm con trỏ.
Ch a ch ny dựng c vi RAM trong v RAM ngoi. Trong ch
ny mt toỏn hng l mt thanh ghi c s dng cha a ch ca ụ nh cũn
toỏn hng kia l thanh ghi. Nu a ch ca ụ nh l 8 bit ta cú th dựng cỏc
thanh ghi R0 ữ R7 ca cỏc bank hoc l Stack Pointer. Nu a ch l 16 bit ta cú
th dựng thanh ghi DPTR.
Vớ d:
ADD
A,@R0
Cõu lnh ny thc hin cng ni dung ụ nh cú a ch t trong thanh ghi
R0 vi ni dung thanh cha A, kt qu chuyn vo thanh cha A.
2.7.3 Ch a ch thanh ghi (Register Addressing).
Cỏc lnh s dng kiu nh a ch thanh ghi c mó húa bng cỏch dựng
3 bit thp nht ca opcode ch ra một thanh ghi bờn trong khụng gian a ch
Trng i Hc Bỏch Khoa H Ni
Opcode
n
n
n
trang 34
ỏn tt nghip
logic ny. mt m chc nng v a ch ca mt toỏn hng cú th c hỡnh
thnh thnh mt lnh ngn.
Trong ch ny toỏn hng ngun hoc toỏn hng ớch cú th l mt
trong 8 thanh ghi ca Bank thanh ghi ó chn.
Vớ dụ:
MOV
R0,B
MOV
A,R7
Mt vi lnh dựng c th cho 1 thanh ghi no ú nh thanh ghi A, DPTR....
khụng cn cỏc bit a ch. Bn thõn ca opcode ca lnh ó ch ra thanh ghi cn
thit. Cỏc lnh c bit liờn quan n thanh ghi ny tham chiu n thanh cha
bng ký hiu A , con tr d liu DPTR, b m chng trỡnh PC, c nh
C
2.7.4 Ch a ch tc thi (Immediate Addressing).
Khi toỏn hng ngun l mt hng s thay vỡ mt bin, hng s cú th a
vo lnh v õy l byte d liu tc thi
S nh a ch tc thi c tng trng bi ký hiu # c ng trc
mt hng s, 1 bin hoc mt biu thc s hc c s dng bi cỏc hng, cỏc
ký hiu v cỏc toỏn t. Trỡnh biờn dch tớnh toỏn giỏ tr v thay th d liu tc
Opcode
Immediate Data
thi. Byte lnh thờm vo cha tr s d liu tc thi nh sau:
Vớ dụ:
MOV
A,#100
; np vo thanh cha A số 100 c s 10
MOV
A,#10H
; np vo thanh cha A số 10 c s 10
Trng i Hc Bỏch Khoa H Ni
trang 35
ỏn tt nghip
2.7.5 Ch a ch thanh ghi ch s (Register Addressing).
Ch ny ch yu dựng tra bng. trong ch ny thỡ a ch ngun
v a ch ớch c tớnh bng cỏch cng giỏ tr trong ACC vi a ch c s.
a ch c s cú th l DPTR ( Data Pointer ) hoc l PC (Program Counter ).
Base Register
Offset
PC (or PDTR)
ACC
Effective Address
Vớ dụ :
MOV
DPTR,#8100H
MOV
A,#0
MOV
A,@A+DPTR
II.8 Timer/counter
Bộ vi iu khin 8051 cú 2 Timer/Counter 16 bit, c 2 timer ny cú th
hot ng nh Timer hay Counter. Khi hot ng nh Timer thỡ giỏ tr ca nú li
tng lờn 1 sau mi chu k mỏy. Khi hot ng nh Counter thỡ giỏ tr ca nú tng
lờn 1 tng ng vi s xut hin sn sung ti cỏc chõn T0, T1. Mi
Timer/Counter ny li cú 4 ch lm vic. Vic khi to hot ng cho cỏc
Timer/Counter ny phi da trờn 2 thanh ghi TMOD v TCON.
a. Thanh ghi TMOD ( Timer/Counter Mode Control Register)
7
6
5
4
3
2
1
0
GATEC/TM1M0GATEC/TM1M0
Timer 1
Timer 0
GATE : l bit iu khin cng. Khi bit TRx trong TCON c set bng 1
v chõn GATE = 1 thỡ b nh thi/m ch hot ng khi chõn
INTx mc cao(iu khin phn cng). Khi GATE = 0 thỡ b nh
thi/m ch hot ng khi TRx =1(iu khin mm).
Trng i Hc Bỏch Khoa H Ni
trang 36
ỏn tt nghip
C/T: bớt chn chc nng m hay nh thi cho b m/nh thi. Khi
C/T=0 thỡ hot ng nh thi, khi C/T = 1 thỡ hot ng m.
M1: bit chn ch ( xem bng di)
M0: bit chn ch ( xem bng di)
M1 M0
0
0
0
1
1
0
1
1
0
1
2
3
Ch la chn
B nh thi 13 bit
B nh thi/m 16 bit
B nh thi/m 8 bit t ng np li
Timer 0 hot ng nh 2 bộ timer 8 bit riờng bit
Timer 1 khụng hot ng.
b. Thanh ghi TCON ( Timer/Counter Control Register)
Thanh ghi ny cú tỏc dng iu khin b nh thi/m.
7
6
5
4
3
2
1
TF1
TR1 TF0
TR0
IE1
IT1
IE0
Bit7(TF1)
0
IT0
:C bỏo trn ca b nh thi 1. Nú c set bi phn cng
khi b nh thi/m b trn. Nú c xoỏ bi phn mm
hoc bi phn cng khi trỡnh phc v ngt c tr n.
Bit 6(TR1) :Bit iu khin b nh thi 1 hot ng. Nú oc set/xoỏ
bng phn mm iu khin b nh thi hot ng hoc
ngng hot ng.
Bit5 (TF0)
:C trn b nh thi 0.
Bit 4(TR0)
:Bit iu khin b nh thi 0 hot ng
Bit 3(IE1)
:C ngt ngoi 1 theo sn. Nú c t bi phn cng khi
sn xung ca ngt ngoi a vo chõn INT1 c phỏt hin
v nú c xoỏ bi phn cng khi ngt c x lý.
Bit 2(IT1)
:Bit iu khin chn loi ngt. Nú c set/xúa bng phn
mm xỏc nh ngt thuc loi tỏc ng cnh hay tỏc ng
theo mc thp.
Bit1(IE0)
:Bit c ngt ngoi tỏc ng cnh.
Trng i Hc Bỏch Khoa H Ni
trang 37
ỏn tt nghip
Bit0(IT0)
:Bit iu khin chn loi ngt
c. Cỏc ch hot ng ca Timer/Counter
+ Ch 0: ú l ch nh thi 13 bit. Byte cao ca b nh thi THx
c ghộp vúi 5 bit thp ca byte thp ca b nh thi TLx to thnh mt b
nh thi 13 bit. Tớn hiu ngt xut hin khi cú s m trn, vỡ vy nú cú th m
c ln nht l 213 hay 8192 xung nhp.
Timer
clock
TLx
(5 bit)
THx
(8 bit)
Chế độ 0
TFx
Overflow
Flag
+ Ch 1: Ch ny l ch dnh thi 16 bit. Xung clock t vo cỏc
thanh ghi nh thi cao v thp kt hp. Khi cú xung clock thỡ b nh thi s
m lờn 0000H, 0001H, 0002H. Mt trn s xut hin nu cú s trn t
FFFFH sung 0000H v nú s set c trn bng 1 v b m s tip tc m. C
trn l bit TFx trong thanh ghi iu khin nh thi TCON, bit ny c c
hoc ghi bi phn mm. Trong ch ny nú cú th m c ln nht l 2 16 =
65535 xung nhp.
Timer
clock
TLx
THx
Chế độ 1
TFx
Overflow
Flag
+ Ch 2: ú l ch t ng np li 8 bit. Byte thp ca b nh thi
hot ng nh thi 8 bit trong khi ú byte cao ca b nh thi lu gi giỏ tr
np li. Khi cú s m trn t FFh sung 00h thỡ ngoi vic c ca b nh thi
c set lờn 1 m giỏ tr trong THx cũn c np vo TLx. Vic m s tip tc
t giỏ tr ny cho n khi xy ra mt trn k tip. Ch ny rt thun tin cho
vic trn b nh thi trong mt khong thi gian xỏc nh v tun hon khi cỏc
Timer
TLx
thanh ghi TMOD v THx ó c khi ng.
clock
reload
THx
Trng i Hc Bỏch Khoa H Ni
Chế độ 0
TFx
Overflow
Flag
trang 38
ỏn tt nghip
+ Ch 3: ch 3 l ch nh thi chia x v cú hot ng khỏc
nhau cho tng b nh thi. B nh thi 0 ch 3 c chia lm 2 b nh
thi 8 bit hot ng riờng r TL0 v TH0, mi b nh thi s set cỏc c tng
ng TF0 v TF1 khi xy ra trn.
B nh thi 1 khụng hot ng ch 3 nhng cú th khi ng bng
cỏch chuyn b nh thi ny vo mt trong cỏc ch khỏc. C trn TF1 ca
b nh thi 1 khụng b nh hng bi b nh thi 1 khi xy ra trn vỡ TF1
c ni vi b nh thi 8 bit TH0.
Ch 3 ch yu cung cp thờm mt b nh thi 8 bit na. khi b nh
thi 0 ch 3, b nh thi 1 cú th hot ng bng cỏch chuyn b ny ra
khi ch 3 hoc vo ch 3.
II.9 cỏc ngun ngt
Cỏc ngun ngt c t ti a ch t 0003H ữ 0023H trong b nh
chng trỡnh. Khi cú ngt thỡ CPU s nhy ti vựng m nú phc v ngt, Nu
chng trỡnh phc v ngt nm trong khong 8 byte thỡ nú s phc v ngt ngay
trong vựng ú. Nu chng trỡnh ngt ln hn 8 byte v cỏc ngun ngt ang
phc v thỡ thỡ s nhy vt sang vựng ngt sau ú thc hin chng trỡnh
ngt. khi cú mt ngt xut hin v c CPU chp nhn, chng trỡnh chớnh b
ngt thỡ cỏc thao tỏc sau õy xy ra:
- Hon tt vic thc thi lnh hin hnh
- B m chng trỡnh PC c ct vo Stack
- Trng thỏi ngt hin hnh c lu gi li.
Trng i Hc Bỏch Khoa H Ni
trang 39
ỏn tt nghip
- B m chng trỡnh PC c np a ch vect ca trỡnh phc v ngt
ISR.
- ISR c thc thi.
Bng cỏc vect ngt:
Ngun ngt
Ngt ngoi 0
Ngt ngoi 1
Do b nh thi 1
Do b nh thi 0
Do cng ni tip
C
IE0
TF0
IE1
TF1
RI&TI
a ch
0003H
000BH
0013H
001BH
0023H
Cỏch s dng ngt:
t bớt EA ( Enable All) trong thanh ghi IE = 1
t bit tng ng vi ngt trong thanh ghi IE lờn 1
Bt u phc v ngt ti a ch tng ng vi ngt.
iu khin hot ng ca ngt ta cú 2 thanh ghi tng ng. Thanh ghi
IE iu khin cho phộp cỏc ngt hot ng. Thanh ghi IP iu khin mc u tiờn
cho cỏc ngt.
Thanh ghi IE(Interrupt Enable Register)
7
EA
6
---
5
---
4
ES
3
ET1
2
EX1
1
ET0
0
EX0
EA(IE.7): bit cho phộp cỏc ngt hot ng
EA=0: khụng cho phộp ngt no c hot ng
EA=0: cho phộp cỏc ngt c hot ng.
- - - (IE.6): khụng s dng
- - - (IE.5): khụng s dng
ES
(IE.4) : Cho phộp hay khụng cho phộp truyn nhn ni tip
ET1 (IE.3) : Cho phộp hay khụng cho phộp ngt Timer 1
EX1 (IE.2) : Cho phộp hay khụng cho phộp ngt ngoi 1.
ET0(IE.1) : Cho phộp hay khụng cho phộp ngt Timer 0.
EX1 (IE.0) : Cho phộp hay khụng cho phộp ngt ngoi 0.
Trng i Hc Bỏch Khoa H Ni
trang 40
ỏn tt nghip
Th t u tiờn cỏc ngt
iu khin hot ng ca cỏc ngt ta cú thanh ghi IE iu khin.
Thanh ghi ny dựng cho phộp cỏc ngt hot ng. t th t u tiờn ca
cỏc ngt thỡ ta s dng thanh ghi IP. Theo mc nh thỡ cỏc ngt cú mc u tiờn
t cao sung thp nh sau:
IE0
TF0
IE1
IF1
RI& TI
Mc cao nht
Mc thp
nht
Bảng : Thứ tự u tiên của ngắt
Khi khụng mun s dng theo th t u tiờn mc nh ú thỡ ta cú th t
cỏc bit tng ng trong thanh ghi IP = 1 quy nh mc u tiờn.
Thanh ghi IP ( Interrupt Register )
7
---
6
---
5
---
4
PS
3
PT1
2
PX1
1
PT0
0
PX0
- - - ( IP.7 ): Khụng s dng ( t bng 0)
- - - ( IP.6 ): Khụng s dng ( t bng 0)
- - - ( IP.5 ): Khụng s dng ( t bng 0)
PS
(IP.4) : Mc u tiờn ngt cho cng ni tip.
PT1 (IP.3) : Mc u tiờn ngt cho Timer 1
PX1 (IP.2) : Mc u tiờn ngt cho ngt ngoi 1
PT0 (IP.1) : Mc u tiờn ngt cho Timer 0
PX0 (IP.0) : Mc u tiờn ngt cho ngt ngoi 0
Trng i Hc Bỏch Khoa H Ni
trang 41
ỏn tt nghip
II.10 Giao din truyn tin ni tip
Cng ni tip cú th truyn v nhn ng thi. Nú cng l b m nhn
ngha l nú cú th nhn byte th 2 trc khi byte trc ú c c t thanh ghi
nhn. Tuy nhiờn byte th nht s b mt i nu tip tc nhn byte tip theo. C 2
thanh ghi truyn v nhn u l cỏc thanh ghi cú chc nng c bit(SBUF).
Vic ghi vo SBUF l np vo thanh ghi truyn cũn vic c d liu t SBUF l
vic nhn d liu v. Cng ni tip cú 4 ch hot ng
+ Mode 0: ch ny nú hot ng nh thanh ghi dch. D liu vo/ra
ni tip qua RxD/TxD, u ra dch theo xung ng h. 8 bit c nhn bt u
t LSB. Tc truyn baud l 1/12 tn s xung ca thch anh.
+ Mode 1: D liu vo ra ni tip qua RxD/TxD. 10 bit d liu c nhn
hoc truyn bao gm 1 bit Start ( thng l mc 0), 1 bit Stop ( thng mc 1)
v 8 bit d liu bt u t LSB. ch ny thỡ khi nhn d liu thỡ bit Stop s
c chuyn vo bit RB8 trong thanh ghi chc nng c bit.
+ Mode 2: D liu vo ra ni tip qua RxD/TxD. 11 bit d liu c
truyn hoc nhn bao gm 1 bit Start ( thng l mc 0)8 bit d liu bt u t
LSB, 1 bit Stop ( thng mc 1). Khi truyn d liu thỡ bit th 9 c chuyn
vo bit TB8 trong SCON cú th t l 1 hoc 0 hoc cng cú th l bit kim tra
chn l. Khi nhn d liu thỡ bit th 9 s c chuyn vo bit RB8 trong SCON
trong khi ú thỡ bit Stop b b qua. Tc baud cú th l 1/32 hoc 1/64 tn s
xung thch anh.
+ Mode 3: D liu vo ra ni tip qua RxD/TxD. 11 bit d liu c
truyn hoc nhn bao gm 1 bit Start ( thng l mc 0)8 bit d liu bt u t
LSB, 1 bit cho phộp lp trỡnh, 1 bit Stop ( thng mc 1). Khi truyn d liu
thỡ bit th 9 c chuyn vo bit TB8 trong SCON cú th t l 1 hoc 0 hoc
cng cú th l bit kim tra chn l ( P) trong PSW). Khi nhn d liu thỡ bit th 9
s c chuyn vo bit RB8 trong SCON trong khi ú thỡ bit Stop b b qua. Tc
baud cú th thay i c.
Trong c 4 ch hot ng trờn thỡ:
- Khi gi d liu phi c khi to v s dng SBUF nh thanh ghi ớch
Trng i Hc Bỏch Khoa H Ni
trang 42
ỏn tt nghip
- Khi nhn d liu: Mode 0 phi cú iu kin RI=0 v REN =0.
- Cỏc ch khỏc Nu bit REN = 1 thỡ bit start bt u c nhn.
Ch truyn a kờnh:
Trong ch 2 v 3 cũn c dựng cho vic truyn a kờnh, trong ch
ny thỡ bit d liu nhn c cũn bit 9 c chuyn vo RB8 sau ú l bit Stop.
Cng c lp trỡnh sao cho khi bit Stop nhn c thỡ ngt ni tip c tớch
cc khi RB8 = 1. Nột c trng l cho phộp t bit SM2 trong SCON, bng cỏch
ny cho phộp s dng ch truyn a kờnh.
Khi trm ch(MASTER) mun gi mt gúi d liu ti mt trong cỏc trm
t (SLAVE), u tiờn trm ch gi mt byte a ch xỏc nhn trm t no
chun b nhn d liu. Byte a ch ny khỏc vi byte d liu l trong byte a
ch thỡ bit th 9 bng 1 cũn trong byte d liu thỡ bit th 9 bng 0. Khi SM2 = 1
thỡ khụng cú trm t no b ngt khi ang truyn d liu, tuy nhiờn vi byte a
ch thỡ tt c u b ngt. Vỡ vy trm t lỳc no cng phi kim tra xem byte
nhn c v xem nú cú phi a ch ca mỡnh nhn c hay khụng. Nu
khụng phi a ch ca mỡnh nú vn t SM2 ng thi bỏo bn v b qua cỏc
byte d liu n. Bit SM2 khụng cú tỏc dng trong Mode 0, trong Mode 1 cú th
dựng kim tra giỏ tr ca bit Stop. Khi nhn nu SM2=1 thỡ ngt nhn s
khụng cú tỏc dng tr khi bit Stop oc nhn.
Tc Baud trong truyn ni tip
i vi Mode 0:
Tốc độ truyền : Baud rate =
1
12
lần tần số xung thạch anh
i vi Mode 2:
2 SMOD
Tốc độ truyền : Baud rate =
lần tần số xung thạch anh.
64
1
SMOD = 0: Baud rate =
lần tần số xung thạch anh.
64
1
SMOD = 0: Baud rate =
lần tần số xung thạch anh.
32
i vi Mode 1, Mode 3:
Trng i Hc Bỏch Khoa H Ni
trang 43