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

Tài liệu Chương 4: Lập trình cho cổng vào - ra I/0 pdf

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 (118.74 KB, 9 trang )

ch"¬ng 4
LËp tr×nh cho cæng vµo - ra I/0

4.1 M« t¶ ch©n cña 8051.
!"# $% #&# '()*( +,-* #./ (0 1234 5+6 $7 18349 1:;349 <=3222> ?@A #B #&#
C,DA ?B*E +F C(&# *(/A9 #(G*E (H* *(I (/, ()*E #(J* <KL 5<A/M K*NO,*P L/C/EP>
$H*E +F $Q' +AR*E STL 5SA/$ TM/' L/C/EP> +) $H*E #(6U C(R*E #B #(J* ?V OO;
5OP/$MPWW ;(,U ;/XX,PX> '(Y #(Z*E ?@A #B [2 #(J* #(\ #&# #(]# *^*E C(&# *(/A *(I
+)\ X/ K_29 ?0#
RD
9 E(,
WR
9 ?`/ #(a9 $b M,cA +) *Ed'e ;f* U(g, MIA h Xi*E jk' Wl
(m*E #A*E #nU jk' U(,-* og* 1234 #B p2 #(J* +q, Wl #r*E +)\NX/ 6' (s* #(\ #&# ]*E
$7*E t-A #fA '(nU (s*e uAt *(,-*9 +Y (fA (v' #&# *() U(&' 'X,D* #(6*( Ww $7*E #(6U
?B*E +F [2 #(J* +q, (/, ()*E #(J* <KL *-* '/ #(a 'xU #(A*E jR 'g U(,-* og* *)te

























H×nh 4.1: =s ?y ol 'X6 #(J* #./ 1234e
uX-* (Y*( [e4 M) Ws ?y ol 'X6 #(J* #./ 1234e u/ '(nt Xi*E 'X\*E [2 #(J* '(Y #B
zp #(J* $)*( #(\ #&# #r*E L29 L49 Lp +) Lz +q, j{, #r*E #B 1 #(J*e ;&# #(J* #|*
MH, ?I}# $)*( #(\ *EAy* ~
;;
9 ?n' •N<9 #&# #(J*E,/\ ?k*E XuAO4 +) XuAOp '&,
MxU R=u #(\ U(ÐU #(l' ?`/ #(a AOE 'XAt #xU ?I}# ?`/ #(a *E\),
EA
9 #(\ U(ÐU #n'
#(Is*E 'XY*(
PSEN
e uX\*E 1 #(J* *)t '(Y 6 #(J* ~
;;
9 •N<9 XuAO49 XuAOp9 R=u
+)
EA
?I}# #&# (0 12z4 +) 1234 Ww $7*Ee H/t *B, #&#( C(&# M) #(Z*E U(g, ?I}#
P1.0

P1.1


P1.2

L4ez

P1.4

P1.5

P1.6

P1.7

RST

P0.0 (
AD0
)

Vcc

1

2

3

5

6


4

7

8

9

11

12

10

13

14

15

17

18

16

19

20


40

39

38

36

35

37

34

33

32

30

29

31

28

27

26


24

23

25

22

21


8051

(8031)

P0.1
(
AD1
)

P0.2
(
A
D2
)

P0.4
(
AD4
)


P0.5
(
AD5
)

P0.3
(
AD3
)

PSEN

P0.6
(
AD6
)

P2.5
(
A13
)

P2.3
(
A11
)

P2.1
(

A9
)

P2.7
(
A15
)

P2.
4
(
A12
)

P2.6
(
A14
)

P2.0
(
AB
)

P2.2
(
A10
)

(

RXD
)

P3.0

(
T
XD
)

P3.1

(
NT0
)

P3.2

(
NT1
)

P3.3

(
T
0
)

P3.4


(
T1
)

P3.5

(
WR
)

P3.6

(
RD
)

P3.7

XTAL2

XTAL1

GND

P0.6
(
AD6
)


EA/CPP

ALE/PROG

*l, ?D #(\ (c '(l*E M)j +,c# j) C(R*E #f* o,v' ok +, ?,@A C(,D* '(Ak# (0 1234 (/t
12z4e ;|* (/, #(J* C(&# M)
PSEN
+) AOE ?I}# Ww $7*E #(. tvA 'X\*E #&# (c '(l*E
$ù/ 'X-* 12z4e
4e ;(J* ~
;;
: ;(J* Wl [2 M) ~
;;
#nU ?,c* &U *EAy* #(\ #(6Ue NEAy* ?,c* &U M)
+3~e
pe ;(J* •N<: ;(J* •N<: ;(J* Wl p2 M) •N<e
ze ;(J* XuAO4 +) XuAOp:
1234 #B jk' ok E,/\ ?k*E 'X-* #(6U *(I*E *B t-A #fA #B jk' xA*E ?y*E (y
*E\), ?D #(Ht *Be Bk E,/\ ?k*E '(H#( /*( '(Iê*E xAt-* *(n' ?I}# *l, 'q, #&# #(J*
?fA +)\ XuAO4 5#(J* 4:> +) XuAOp 5#(J* 41>e Bk E,/\ ?k*E '(H#( /*( ?I}# *l,
'q, XuAO4 +) XuAOp #ò*E #f* (/, '7 ?,c* E,& 'X` z2UTe !k' U(6/ #./ '7 ?,c* ?I}#
*l, xAl*E ?n' *(I ?I}# 'XY*( o)t 'X-* (Y*( [ep/e
;f* U(g, MIA h Xi*E #B *(,@A 'l# ?k C(&# *(/A #./ (0 1234e ul# ?k ?I}# #\,
*(I M) 'f* Wl #ù# ?H, #./ ok E,/\ ?k*E ?I}# *l, 'q, #(J* XuAOe ~6 $79 jk' #(6U
4p!Hz (\"# '(nU (s*e uIs*E 'ù *(I +xt '(Y jk' ok +, ?,@A C(,D* #ò*E t-A #fA jk'
',*( '(D #B 'f* Wl C(R*E Mq* (s* p2!Hze K(, 1234 ?I}# *l, 'q, jk' ok E,/\ ?k*E
',*( '(D '(H#( /*( +) #nU *EAy* '(Y '/ #B '(D qA/* W&' 'f* Wl 'X-* #(J* XuAOp oi*E
j&t (,c* WB*Ee NvA '/ qAtv' ?`*( Ww $7*E jk' *EAy* 'f* Wl C(&# ok E,/\ ?k*E
'(H#( /*( #(G*E (H* *(I M) ok E,/\ ?k*E uuO '(Y *B WÏ ?I}# *l, 'q, #(J* XuAO49
#|* #(J* XuAOp '(Y ?D (ë C(R*E *l, *(I (Y*( [epoe













H×nh 4.2: /> Nl, XuAO 'q, 1234 o> Nl, XuAO 'q, *EAy* ?y*E ok *E\),e
[e ;(J* R=ue
;(J* Wl : M) #(J* '&, MxU RE=Eue NB M) jk' ?fA +)\ +) #B j]# '6#( #ù# #/\
5oY*( '(Iê*E ë j]# '(nU>e K(, #nU xA*E #/\ 'q, #(J* *)t '(Y ok +, ?,@A C(,D* WÏ '&,
MxU +) Cv' '(Z# j0, (\H' ?k*Ee §,@A *)t '(Iê*E ?I}# #\, *(I M) Wù '&, ox' *EAy*e K(,
C6#( (\H' '&, ox' *EAy* WÏ M)j jn' j0, E,& 'X` 'X-* #&# '(/*( E(,e Bg*E [e4 #A*E #nU
jk' #&#( M,c' C- #&# '(/*( E(, #./ 1234 +) #&# E,& 'X` #./ #(Z*E W/A C(, '&, ox'
*EAy*e
B¶ng 4.1: •,& 'X` jk' Wl '(/*( E(, W/A RE=Eue



C2

C1

30pF


XTAL2

XTAL1

GND

XTAL2

XTAL1

GND

NC

EXTERRNAL

OSCILLATAOR

SIGNAL
Register Reset Value
PC 0000
ACC 0000
B 0000
PSW 0000
SP 0000
DPTR 0007
0000

OIA h Xi*E E,& 'X` #./ ok ?vj #(Is*E 'XY*( L; M) 2 C(, '&, MxU ?D ÐU ;LU *HU
jm Mc*( ?fA ',-* 'õ ok *(q RO! 'H, +` 'X6 *E^* *(q 2222e §,@A *)t #B *E(Ü/ M) '/

U(g, ?"' $|*E ?fA ',-* #./ jm *EAy* 'H, +` 'X6 *E^* *(q 2 #./ RO! +Y ?Jt M) jm
;LU 'Ü*( '(]# +) 'Yj Mc*( ?fA ',-*e HY*( [ez 'XY*( o)t (/, #&#( *l, #(J* R=u +q,
jH#( ox' *EAy*e



NNNNNNNNNNNNNNNNNNNNNNNN











H×nh 4.3: /> !H#( '&, ox' *EAy* RE=Eue
o> !H#( '&, ox' *EAy* +q, <Po\A*#Pe
N(ij M)j #(\ ?fA +)\ RE=Eu #B (,cA qAg '(Y *B U(g, #B 'l, '(,DA p #(A Cú
j&te H/t *B, #&#( C(&#9 xA*E #/\ U(g, CÐ\ $), 'l, '(,DA p #(A Cú j&t 'XIq# C(, *B
xAl*E '(nUe
uX\*E 1234 jk' #(A Cú j&t ?I}# ?`*( *E(Ü/ oi*E 4p #(A Cú $/\ ?k*E *(I
?m *B, ë #(Is*E z +) ?I}# 'XY*( o)t 'H, +` 'X6 [e4e
3e ;(J*
EA
:
;&# '()*( +,-* (0 1234 *(I 18349 :1;34 (\"# <=3222 ?@A #B RO! 'X-*
#(6U MIA #n' #(Is*E 'XY*(e uX\*E #&# 'XIê*E (}U *(I +xt '(Y #(J*

EA
?I}# *l, 'q,
~
;;
e §l, +q, #&# '()*( +,-* #. (0 *(I 12z4 +) 12zp j) C(R*E #B RO! 'X-* #(6U '(Y
jm #(Is*E 'XY*( ?I}# MIA #n' ë 'X-* ok *(q RO! *E\), +) #(Z*E ?I}# *HU #(\
12z4_zpe <\ +xt9 ?l, +q, 12z4 '(Y #(J*
EA
U(g, ?I}# *l, ?n' ?D o&\ Xi*E jm
#(Is*E 'XY*( ?I}# #n' ë *E\),e
EA
#B *E(Ü/ M) 'XAt #xU *E\), 5Ex'PX*/M A##PWW> M)
#(J* Wl z4 'X-* +F C,DA <KLe NB M) jk' #(J* ?fA +)\ +) U(g, ?I}# *l, (\"# +q, ~
;;

(\"# •N<e H/t *B, #&#( C(&# M) *B C(R*E ?I}# ?D (ëe
Vcc

Vcc

10
m
F

8.2K

RST

30
m

F

X2

3
1

EA/Vpp

19

9

18

+

30
m
F

3
1

9

EA/Vpp

X1


X1

X2

RST

8.2K

10
m
F

11.0592 MHz

ë #(Is*E 4[ #(Z*E '/ WÏ 'XY*( o)t #&#( 12z4 Ww $7*E #(J* *)t Cv' (}U +q,
PSEN
?D 'XAt #xU #&# #(Is*E 'XY*( ?I}# #n' 'X-* ok *(q RO! ë *E\), 12z4e uX\*E
#&# #(6U 1234 +q, ok *(q RO! 'X-* #(6U *(I 18349 1:;34 (\"# <=3222 '(Y
EA
?I}# *l, +q, ~
;;
e
VÝ dô 4:
Hmt 'Yj #(A Cú j&t ?l, +q, /> XuAO = 44e23:p!Hz o> XuAO = 46!Hze
Lêi gi¶i:
/> 44e23:p!Hz_4p = :p4e6CHze
;(A Cú j&t = 4_:p4e6CHz = 4e213mWe
o> 46!Hz_4p = 4ezzz!Hz
;(A Cú j&t = 4_4ezzz!Hz = 2e83mWe
;&# #(J* jR 'g 'X-* ?Jt U(g, ?I}# *l, j) C(R*E #f* '()*( +,-* *)\ ?I}# Ww

$7*Ee ;|* (/, #(J* $Iq, ?Jt ?I}# Ww $7*E #(. tvA 'X\*E (c '(l*E $ù/ 'X-* 12z4 +)
WÏ ?I}# 'XY*( o)t #(, ',v' ë #(Is*E 44e
6e ;(J*
PSEN
:
§Jt M) #(J* ?fA X/ #(\ U(ÐU #n' #(Is*E 'XY*( 5LX\EX/j ='\XP E*/oMP> 'X\*E
(c '(l*E $ù/ 'X-* 12z4 '(Y #(Is*E 'XY*( ?I}# #n' ë ok *(q RO! *E\), '(Y #(J* *)t
?I}# *l, 'q, #(J* OE #./ RO!e ;(, ',v' ?I}# o)* ë #(Is*E 4[e
8e ;(J* AOE:
;(J* #(\ U(ÐU #(l' ?`/ #(a AOE M) #(J* ?fA X/ +) ?I}# '6#( #ù# #/\e K(, *l,
12z4 'q, ok *(q *E\), '(Y #r*E 2 #ò*E ?I}# #nU ?`/ #(a +) $b M,cAe H/t *B, #&#(
C(&# 12z4 $y* ?`/ #(a +) $b M,cA qA/ #r*E 2 ?D ',v' C,cj Wl #(J*e ;(J* AOE ?I}# Ww
$7*E ?D U(J* C-*( ?`/ #(a +) $b M,cA oi*E #&#( *l, 'q, #(J* • #./ #(6U 8[O=z8ze
§,@A *)t ?I}# *B, #(, ',v' ë #(Is*E 4[e
1e ;&# #(J* #r*E +)\ X/ +) #&# #(]# *^*E #./ #(Z*Ee
Bl* #r*E L29 L49 Lp +) Lz ?@A Ww $7*E 1 #(J* +) 'H\ '()*( #r*E 1 o6'e un' #g
#&# #r*E C(, RE=Eu ?@A ?I}# #nA (Y*( *(I #&# ?fA X/9 W½* W)*E ?D ?I}# Ww $7*E
*(I #&# #r*E ?fA X/e !Al* Ww $7*E #r*E *)\ 'X\*E Wl #&# #r*E *)t M)j ?fA +)\ '(Y
*B U(g, ?I}# MxU 'XY*(e
:e ;r*E L2e
;r*E 2 #(,vj 'n' #g 1 #(J* 5'õ #(J* zp ?v* z:>e NB #B '(D ?I}# $%*E *(I
#r*E ?fA X/9 ?D Ww $7*E #&# #(J* #./ #r*E 2 +õ/ M)j ?fA X/9 +õ/ M)j ?fA +)\ '(Y
j{, #(J* U(g, ?I}# *l, 'q, jk' ?,c* 'Xë CÐ\ o-* *E\), 42CWe §,@A *)t M) $\ jk'
'(ù# 'v M) #r*E L2 M) jk' j)*E jë C(&# +q, #&# #r*E L49 Lp +) Lze K(&, *,cj j&*E
jë ?I}# Ww $7*E 'X\*E #&# #(6U !O= +@ #(õ*E jù# *)\ ?B *B E,l*E *(I ;RNMP#N's
(ë ?l, +q, #&# #(6U uuOe uX\*E on' Cú (c '(l*E *)\ Ww $7*E 18349 1:;34 (\"#
<=3222 '/ '(Iê*E *l, #r*E L2 'q, #&# ?,c* 'Xë CÐ\9 XPj (Y*( [e[ oi*E #&#( *)t '/
#B ?I}# #&# IA ?,Dj #./ #r*E L2 #(\ #g ?fA X/ +) ?fA +)\e ~q, *(b*E ?,c* 'Xë CÐ\
*E\), ?I}# *l, C(, '&, MxU #r*E L2 ?I}# #nA (Y*( *(I jk' #r*E ?fA X/e ~6 $79 ?\H*
jm W/A ?Jt WÏ M,-* '7# Ew, X/ #r*E L2 #&# E,& 'X` 33[ +) AAHe


MOV A, #554
BACK: MOV P0, A
ACALL DELAY
CPL A
SJMP BACK
















Hình 4.4: ;r*E L2 +q, #&# ?,c* 'Xở Cé\e
/> ;r*E L2 ?fA +)\: ~q, #&# ?,c* 'Xở ?I}# *l, 'q, #r*E L2 *(ij ?D 'H\ *B '()*(
#r*E ?fA +)\ '(Y *B U(g, ?I}# MxU 'XY*( oi*E #&#( E(, 4 'q, 'n' #g #&# o,'e
Đ\H* jm $Iq, ?Jt Wẽ #nA (Y*( L2 MZ# ?fA M) ?fA +)\ oi*E #&#( E(, 4 ?v* *B
+) W/A ?B $b M,cA *(x* ?I}# 'ừ *B ?I}# Ew, ?v* L4e
o>
MOV A,#FFH ; Gán A = FF dạng Hex
MOV P0, A ; Tạo cổng P0 làm cổng đầu vào bằng cách

; Ghi tất cả các bit của nó.
BACK: MOV A, P0 ; Nhận dữ liệu từ P0
MOV P1, A ; Gửi nó đến cổng 1
SJMP BACK ; Lặp lại

o> ~/, 'X| CéU #./ #r*E L2: N(I 'XY*( o)t 'X-* (Y*( [e49 #r*E L2 ?I}# E&* A<2 N
A<8 #(\ U(éU *B ?I}# Ww $7*E +ừ/ #(\ ?`/ #(a9 +ừ/ #(\ $b M,cAe K(, *l, 1234_z4 'q,
ok *(q *E\), '(Y #r*E 2 #A*E #nU #g ?`/ #(a +) $b M,cA 1234 $y* $b M,cA +) ?`/ #(a
qA/ #r*E L2 ?D ',v' C,cj Wl #(J*e AOE o&\ *vA L2 #B ?`/ #(a (/t $b M,cA C(, AOE N
2 *B #nU $b M,cA <2 N <8e <\ +xt9 AOE ?I}# Ww $7*E ?D '&#( ?`/ #(a +) $b M,cA +q,
Wự 'X} E,ZU #./ #(l' 8[O=z8z j) '/ Wẽ o,v' #7 '(D ở #(Is*E 4[e
42e ;r*E L4e
;r*E L4 #ũ*E #(,vj 'n' #g 1 #(J* 5'ừ #(J* 4 ?v* #(J* 1> *B #B '(D ?I}# Ww
$7*E *(I ?fA +)\ (\"# ?fA X/e =\ +q, #r*E L2 '(Y #r*E *)t C(R*E #f* ?v* ?,c* 'Xở
Cé\ +Y *B ?m #B #&# ?,c* 'Xở Cé\ o-* 'X\*Ee uX\*E qA& 'XY*( '&, MHU '(Y #r*E L4 ?I}#
#nA (Y*( *(I jk' #r*E ?fA X/e ~6 $79 ?\H* jm W/A Wẽ Ew, M,-* '7# #&# E,& 'X` 33 +)
AAH X/ #r*E L4e

MOV A, #55H
BACK: MOV P1, A
Vcc

10K

P0
.0

P0
.1


P0
.2

L2
ez

P0
.4

P0
.5

P0
.6

P0
.7

DS5000

8751
8951
Port 0

ACALL DELAY
SJMP BACK

;r*E L4 *(I ?fA +)\: ĐD o,v* #r*E L4 '()*( ?fA +)\ '(Y *B U(g, ?I}# MxU
'XY*( oi*E #&#( E(, jk' ?v* 'n' #g #&# o,' #./ *Be Oh $\ +@ ?,@A *)t ?I}# o)* ở j7#
M7# AUUP*$,x ;epe uX\*E ?\H* jm W/A9 #r*E L4 MZ# ?fA ?Is# #nA (Y*( *(I #r*E ?fA

+)\ oi*E #&#( E(, 4 +)\ #&# o,' #./ *B +) W/A ?B $b M,cA *(x* ?I}# 'ừ #r*E *)t ?I}#
#n' +)\ R89 R6 +) R3e

MOV A, #0FFH ; Nạp A = FF ở dạng hex
MOV P1, A ; Tạo cổng P1 thành cổng đầu vào bằng
; cách ghi 1 vào các bit của nó.
MOV A, P1 ; Nhận dữ liệu từ P1
MOV R7, A ; Cất nó vào thanh ghi R7
ACALL DELAY ; Chờ
MOV A, P1 ; Nhận dữ liệu khác từ P1
MOV R6, A ; Cất nó vào thanh ghi R6
ACALL DELAY ; Chờ
MOV A, P1 ; Nhận dữ liệu khác từ cổng P1
MOV R5, A ; Cất nó vào thanh ghi R5

44e ;r*E Lp:
;r*E Lp #ũ*E #(,vj 1 #(J* 5#&# #(J* 'ừ p4 ?v* p1>e NB #B '(D ?I}# Ww $7*E
*(I ?fA +)\ (\"# ?fA X/ E,l*E *(I #r*E L49 #r*E Lp #ũ*E C(R*E #f* ?,c* 'Xở Cé\ +Y
*B ?m #B #&# ?,c* 'Xở Cé\ o-* 'X\*Ee K(, '&, MxU9 '(Y #r*E Lp ?I}# #nA (Y*( *(I jk'
#r*E ?fA X/e ~6 $79 ?\H* jm W/A Wẽ Ew, M,-* '7# X/ #r*E Lp #&# E,& 'X` 33H +) AAHe
ĐB M) 'n' #g #&# o,' #./ Lp M-* xAl*E M,-* '7#e

MOV A, #55H
BACK: MOV P2,A
ACALL DELAY
CPL A
SJMP BACK

/> ;r*E Lp *(I ?fA +)\e
ĐD 'H\ #r*E Lp *(I ?fA +)\ '(Y *B U(g, ?I}# MxU 'XY*( oi*E #&#( E(, #&# Wl 4

'q, 'n' #g #&# #(J* #./ *Be Đ\H* jm W/A ?Jt ?fA ',-* #nA (,*( Lp M) #r*E +)\ oi*E
#&#( E(, jk' ?v* 'n' #g #&# #(J* #./ *B +) W/A ?B $b M,cA *(x* ?I}# 'ừ Lp ?I}# Ew,
M,-* '7# ?v* L4e

MOV A, 0FFH ; Gán A giá trị FF dạng Hex
MOV P2, A ; Tạo P2 là cổng đầu vào bằng cách
; ghi một đến các chân của nó
BACK: MOV A, 2 ; Nhận dữ liệu từ P2
MOV P1, A ; Gửi nó đến P1
SJMP BACK ; Lặp lại

o> ~/, 'X| CéU #./ Lpe
uX\*E #&# (c '(l*E $ự/ 'X-* 18349 1:;34 +) <=3222 '(Y Lp ?I}# $%*E *(I
?fA X/ ?s* E,g*e uAt *(,-* 'X\*E (c '(l*E $ự/ 'X-* 12z4p '(Y #r*E Lp U(g, ?I}#
$%*E #%*E +q, L2 ?D 'H\ X/ ?`/ #(a 46 oX' ?l, +q, ok *(q *E\),e N(I #(a X/ 'X-* (Y*(
[e4 #r*E Lp #ũ*E ?I}# #(a ?`*( *(I M) A1 N A43 o&\ #(]# *^*E CéU #./ *Be ~Y jk'
ok 12z4 #B C(g *^*E 'XA*E #xU 6[C ot'P ok *(q *E\),9 *B #f* jk' ?Iờ*E ?`/ #(a 46
o6'e uX\*E C(, Le2 #A*E #nU 1 o,' '(nU qA/ A2 N A8e ;R*E +,c# #./ Lp M) #A*E #nU
#&# o6' ?`/ #(a A1 N A43e H/t *B, #&#( C(&# C(, 12z4?I}# *l, 'q, ok *(q *E\), '(Y
Lp ?I}# $%*E #(\ 1 o6' #./ ?`/ #(a 46 o,' +) *B C(R*E '(D $%*E #(\ +)\ X/e Đ,@A *)t
Wẽ ?I}# 'XY*( o)t #(, ',v' ở #(Is*E 4[e
uừ *(b*E 'XY*( o)t 'X-* ?Jt '/ #B '(D Cv' MAx* Xi*E 'X\*E #&# (c '(l*E $ự/
'X-* #&# ok +, ?,@A C(,D* 18349 1:;34 (\"# <=3222 '(Y '/ #B z #l*E L29 L4+) Lp #(\
#&# '(/\ '&# +)\ X/ +) *(I '(v M) #B '(D ?. #(\ #&# ]*E $7*E +q, (fA (v' #&# ok +,
?,@A C(,D*e ;|* #nU Lz M)?D $)*( #(\ *Ed' +) '/ Wẽ #%*E o)* $Iq, ?Jte
44 N ;r*E Lz:
;r*E Lz #(,vj 'r*E #k*E M) 1 #(J* 'ừ #(J* 42 ?v* #(J* 48e NB #B '(D ?I}#
Ww $7*E *(I ?fA +)\ (\"# ?fA X/e ;l*E Lz C(R*E #f* #&# ?,c* 'Xở Cé\ #ũ*E *(I L4
+) Lpe !"# $% #l*E Lz ?I}# #nA (Y*( *(I jk' #l*E ?fA X/ C(, '&, MxU9 *(I*E ?Jt
C(R*E U(g, M) #&#( *B ?I}# ]*E $7*E U(r o,v* *(n'e ;l*E Lz #B #(]# *^*E or xA*E

M) #A*E #nU jk' Wl '6* (,cA qA/* 'X0*E ?"# o,c' #(G*E (H* *(I #&# *Ed'e Bg*E [ep
#A*E #nU #&# #(]# *^*E C(&# #./ #l*E Lze u(R*E ',* *)t &U $7*E #(\ #g 1234 +)
12z4e
Bảng 4.2: ;&# #(]# *^*E C(&# #./ #l*E Lz

Bít của cống P3 Chức năng chân số
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
Nhận dữ liệu (RXD)
Phát dữ liệu (TXD)
Ngắt 0(INT0)
Ngắt 1(INT1)
Bộ định thời 0 (TO)
1 Bộ định thời 1(T1)
Ghi (WR)
Đọc (RD)
10
11
12
13
14
15
16
17


;&# o,' Lze2 +) Lze4 ?I}# $%*E #(\ #&# '6* (,cA *(x* +) U(&' $b M,cA 'X\*E
'XAt@* '(R*E $b M,cA *l, ',vUe XPj #(Is*E 42 ?v' o,v' #&# #(Z*E ?I}# *l, E(éU *(I
'(v *)\e ;&# o,' Lzep +) Lzez ?I}# $)*( #(\ #&# *Ed' *E\), +) #(Z*E ?I}# 'XY*( o)t
#(, ',v' ở #(Is*E 44e B,' Lze[ +) Lze3 ?I}# $%*E #(\ #&# ok ?`*( '(-j 2 +) 4+) #(,
',v' ?I}# 'XY*( o)t ở #(Is*E :e ;Al, #%*E #&# o,' Lze6 +) Lze8 ?I}# #nU #(\ #&# '6*
(,cA E(, +) ?0# #&# ok *(q *E\), ?I}# *l, 'q, #&# (c '(l*E $ự/ 'X-* 12z4e ;(Is*E
4[ Wẽ 'XY*( o)t #&#( #(Z*E ?I}# Ww $7*E *(I '(v *)\ 'X\*E #&# (c '(l*E $ự/ 'X-*
12z4e uX\*E #&# (c '(l*E $ự/ 'X-* 18349 1:;34 (\"# <z3222 '(Y #&# #(J* Lze6 +)
Lze8 ?I}# $%*E #(\ +)\ N X/ #|* #&# #(J* C(&# #./ Lz ?I}# Ww $7*E oY*( '(Iờ*E
'X\*E +/, 'X| #(]# *^*E '(/t ?r,e
4.2 Lập trình vào - ra: thao tác bit.
4.2.1 các cách khác nhau để truy cập toàn bộ 8 bit.
uX\*E ?\H* j) $Iq, ?Jt #ũ*E *(I 'X\*E *(,@A +6 $7 +)\ X/ 'XIq# ?Jt '\)* ok
1 o,' #./ #r*E L4 ?I}# #xUe

BACK: MOV A, # 55H
MOV P1,A
ACALL DELAY
MOV A, #0AAH
MOV P1, A
ACALL DELAY
SJMP BACK

Đ\H* j) 'X-* #(l' j{, o,' #./ L4 jk' #&#( M,-* '7#e ;(Z*E '/ ?m '(d*E jk'
o,v* '(v #./ #(Is*E 'XY*( 'X-* 'XIq# ?Be BJt E,ờ '/ #B '(D +,v' MH, ?\H* jm 'X-* '(P\
#&#( (,cA qAg (s* oi*E #&#( 'XAt #xU 'Xự# ',vU #r*E j) C(R*E qA/ '(/*( E(, 'r*E
*(I W/A:

BACK: MOV P1, # 55H

ACALL DELAY
MOV P1, #00H
CALL DELAY
SJMP BACK

u/ #B '(D +,v' jk' $H*E C(&# #./ ?\H* j) 'X-* oi*E Cỹ '(Ax' ?0# N Ww/ ?r,
E(, *(I ở j7# [epep $Iq, ?Jte
4.2.2 Đặc điểm Đọc- sửa đổi - ghi (Read - Modify Write).
;&# #l*E 'X\*E 1234 #B '(D ?I}# 'XAt #xU oi*ECỹ '(Ax' ?I}# E0, M) Đ0#NWw/
?r,NE(,e Đ"# ?,Dj *)t ',v' C,cj Xn' *(,@A $|*E Mc*( oi*E #&#( Cv' (}U 'n' #g z '(/\
'&#: 4?0# #l*E9 p Ww/ ?r, *B+) z E(, *B X/ #l*E +)\ jk' Mc*( ?s*e Đ\H* j) $Iq, ?Jt
'XIq# (v' ?"' 242424245*(` U(J*> +)\ #l*E 4e =/A ?BMc*( XOR L49 #2TTH '(ự#
(,c* U(éU MRNE6#( OR M\H, 'Xừ M) XOR 'X-* #l*E U4 +q, 4444 4444 5 *(` U(J* > +) W/A
?B E(, Cv' qAg 'Xở MH, #l*E L4e

MOV P1, #55H ; P1 = 01010101
AGAIN: XLR P1,# 0FFH ; EX - 0R P1 với 1111 1111
ACALL DELAY
SJMP AGAIN

OIA h Xi*E Mc*( X2R #./ 33H +) TTH Wẽ #(\ Cv' qAg M) AAHe uIs*E 'ự *(I
+xt Mc*( X2R #./ AAH +q, TTH MH, #(\ E,& 'X` Cv' qAg M) 33He ;&# Mc*( MRNE6#(
?I}# 'XY*( o)t ở #(Is*E 8e
4.2.3. Khả năng đánh địa chỉ theo bít của các cống
;B *(,@A MZ# #(Z*E '/ #f* 'XAt #xU #(a 4 (\"#p o6' #./ #l*E '(/t +Y 'XAt #xU
#g 1 o,' #./ #r*Ee !k' ?,Dj jH*( #./ #&# #r*E 1234 M) #(Z*E #B C(g *^*E 'XAt #xU
'ừ*E o6' X,-*E Xẽ j) C(R*E M)j '(/t ?r, #&# o6' #|* MH, 'X\*E #r*E ?B +6 $79 ?\H* j)
$Iq, ?Jt #(l' o,' L4ep M,-* '7#:

BACK: CPL P1.2 ; Lấy bù 2 chỉ riêng bit P1.2

ACALL DELAY
SJMP BACK

!k' o,v* '(D C(&# #./ ?\H* jm 'X-* M):

AGACN: SETB P1.2 ; Chỉ thay đổi bít P1.2 lên cao
ACALL DELAY
CLR P1.2 ; Xoá bít P1.2 xuống thấp
ACALL DELAY
SJMP AGAIN

OIA h Xi*E o6' L4ep M) o6' '(] z #./ #r*E L49 +Y o6' '(] *(n' M) L4e2 +) o,' '(]
(/, M) L4e4 +e+eee
Bg*E [ez 'XY*( o)t #&# o6' #./ #&# #r*E +)\ X/ #./ 1234e XPj +6 $7 [ep +@
'(/\ '&# o6' #./ #&# o6' +)\ N X/e OIA h Xi*E 'X\*E +6 $7 [ep #&# o,' C(R*E $%*E ?v*
M) C(R*E o` g*( (Iở*Ee ĐJt M) C(g *^*E ?&*( ?`/ #(a '(P\ o,' #./ #&# #r*E +)\ N X/
+) M) jk' 'X\*E *(b*E ?,Dj jH*( *(n' #./ ok +, ?,@A C(,D* 1234e
Ví dụ 4.2: (mt +,v' #(Is*E 'XY*( '(ự# (,c* #&# #R*E +,c# W/A:
/> <At 'XY (,D* '(` o,' L4ep #(\ ?v* C(, *B M-* #&U
o> K(, L4ep M-* #/\9 (mt E(, E,& 'X` [3H +)\ #r*E L2
#> w, jk' xA*E #/\ xAl*E '(nU 5HN'\NO> 'q, Lpez
Lời giải:

SET P1.2 ; Tạo bit P1.2 là đầu vào
MOV A, #45H ; Gán A = 45H
AGAIN: JNB P1.2, AGAIN ; Thoát khi P1.2 = 1
MOV P0, A ; Xuất A tới cổng P0
SETB P2.3 ; Đ"a P2.3 lên cao
CLR P2.3 ; Tạo P2.3 xuống thấp để có xung H-T0-L


uX\*E #(Is*E 'XY*( *)t Mc*( JNB L4ep9 A;N 5JNB #B *E(ĩ/ M) *(gt *vA
C(R*E o,'> ở MH, +|*E M"U #(\ ?v* C(, L4ep #(I/ M-* #/\e K(, L4ep M-* #/\ *B '(\&' X/
C(F, +|*E M"U E(, E,& 'X` [3H 'q, #r*E L2 +) 'H\ X/ xA*E HN'\NO oi*E #(A{, #&# Mc*(
=EuB +) ;ORe

×