You are on page 1of 17

CHƯƠNG 15

Phép ghép 8031/51 vӟi 8255


Như đã nói ӣ chương 14 trong quá trình nӕi ghép 8031/51 vӟi bӝ nhӟ
ngoài thì hai cәng P0 và P2 bӏ mҩt. Trong chương này chúng ta sӁ trình bày làm
thӃ nào đӇ mӣ rӝng các cәng vào/ ra I/O cӫa 8031/51 bҵng viӋc nӕi nó tӟi chíp
8255.
 
Trong mөc này ta nghiên cӭu
8255 như là mӝt trong nhӳng chíp vào/ V   V
ra đưӧc sӱ dөng rӝng rãi nhҩt. Trưӟc V   V
hӃt ta mô tҧ nhӳng đһc tính cӫa nó và V   V

PA0   V
sau đó chӍ ra cách nӕi 8031/51 vӟi 8255
V    
như thӃ nào?  
V 



!   T

8255 là mӝt chíp IP 4 chân 


  ÷ 

(xem hình 15.1). Nó có 3 cәng truy cұp     
đưӧc riêng biӋt. Các cәng đó có tên A, V     
B và C đӅu là các cәng 8 bit. Các cәng  
V     
V   

này đӅu có thӇ lұp trình như cәng đҫu 
V   
vào hoһc đҫu ra riêng rӁ và có thӇ thay
V   
đәi mӝt cách năng đӝng. Ngoài ra, các
V   
cәng 8255 có khҧ năng bҳt tay. o vұy V
V  
cho phép giao diӋn vӟi các thiӃt bӏ khác  V
V  
cũng có giá trӏ tín hiӋu bҳt tay như các     V
PB0
máy in chҷng hҥn. Khҧ năng bҳt tay cӫa V    V
8255 sӁ đưӧc bàn tӟi ӣ mөc 15.3. V    4V
 

‘  Chíp 8255.




   
 
Cҧ 8 bít cӫa cәng A PA0 - PA7 có thӇ đưӧc lұp trình như 8 bit đҫu vào
hoһc 8 bit đҫu ra hoһc cҧ 8 bít hai chiӅu vào/ ra.S

 
÷ V
RD V 

WR V

 



CS

‘  Sơ đӗ khӕi cӫa 8255.




   

Cҧ 8 bit cӫa cәng B có thӇ đưӧc lұp trình hoһc như 8 bit đҫu vào hoһc 8
bit đҫu ra hoһc cҧ 8 bit hai chiӅu vào/ ra.
"

   

Tҩt cҧ 8 bit cӫa cәng C (PC0 - PC7) đӅu có thӇ đưӧc lұp trình như các bit
đҫu vào hoһc các bit đҫu ra. 8 bit này cũng có thӇ đưӧc chia làm hai phҫn: Các
bit cao (PC4 - PC7) là CU và các bit thҩp (PC0 - PC3) là CL. Mӛi phҫn có thӇ
đưӧc dùng hoһc làm đҫu vào hoһc làm đҫu ra. Ngoài ra tӯng bit cӫa cәng C tӯ
PC0 - PC7 cũng có thӇ đưӧc lұp trình riêng rӁ.
#

  RD $% WR 
Đây là hai tín hiӋu điӅu khiӇn tích cӵc mӭc thҩp tӟi 8255 đưӧc nӕi tӟi các
chân dӳ liӋu RD và WR tӯ 8031/51 đưӧc nӕi tӟi các chân đҫu vào này.


 &'()*+,,
Các chân dӳ liӋu D0 - D7 cӫa 8255 đưӧc nӕi tӟi các chân dӳ liӋu cӫa bӝ
vi điӅu khiӇn đӇ cho phép nó gӱi dӳ liӋu qua lҥi giӳa bӝ vi điӅu khiӇn và chíp
8255.
- ./0/1
Đây là đҫu vào tín hiӋu tích cӵc mӭc cao tӟi 8255 đưӧc dùng đӇ xoá thanh
ghi điӅu khiӇn. Khi chân RESET đưӧc kích hoҥt thì tҩt cҧ các cәng đưӧc khӣi tҥo
lҥi như các cәng vào. Trong nhiӅu thiӃt kӃ thì chân này đưӧc nӕi tӟi đҫu ra
RESET cӫa bus hӋ thӕng hoһc đưӧc nӕi tӟi đҩt đӇ không kích hoҥt nó. Cũng như
tҩt cҧ các chân đҫu vào cӫa IC thì nó cũng có thӇ đӇ hӣ.


  2 $% CS 
Trong khi CS chӑn toàn bӝ chíp thì A0 và A1 lҥi chӑn các cәng riêng
biӋt. Các chân này đưӧc dùng đӇ truy cұp các cәng A, B, C hoһc thanh ghi điӅu
khiӇn theo bҧng 15.1. Lưu ý CS là tích cӵc mӭc thҩp.
3
45
! 
Trong khi các cәng A, B và C đưӧc dùng đӇ nhұp và xuҩt dӳ liӋu thì thanh
ghi điӅu khiӇn phҧi đưӧc lұp trình đӇ chӑn chӃ đӝ làm viӋc cӫa các cәng này. Các
cәng cӫa 8255 có thӇ đưӧc lұp trình theo mӝt chӃ đӝ bҩt kǤ dưӟi đây.
p 
  Đây là chӃ đӝ vào/ ra đơn giҧn. Ӣ chӃ đӝ này các cәng A,
B CL và CU có thӇ đưӧc lұp trình như đҫu vào hoһc đҫu ra. Trong chӃ đӝ này thì
tҩt cҧ các bit hoһc là đҫu vào hoһc là đҫu ra. Hay nói cách khác là không có điӅu
khiӇn theo tӯng bit riêng rӁ như ta đã thҩy ӣ các cәng P0 - P3 cӫa 8051. Vì đa
phҫn các ӭng dөng liên quan đӃn 8255 đӅu sӱ dөng chӃ đӝ vào/ ra đơn gi ҧn này
nên ta sӁ tұp chung đi sâu vào chӃ đӝ này.
 p
p  Trong chӃ đӝ này các cәng A và B có thӇ đưӧc dùng như
các cәng đҫu vào hoһc đҫu ra vӟi các khҧ năng bҳt tay. Tín hiӋu bҳt tay đưӧc cҩp
bӣi các bit cӫa cәng C (sӁ đưӧc trình bày ӣ mөc 15.3).
 
  Trong chӃ đӝ này cәng A có thӇ đưӧc dùng như cәng vào/
ra hai chiӅu vӟi khҧ năng bҳt tay và các tín hiӋu bҳt tay đưӧc cҩp bӣi các bit cәng
C. Cәng B có thӇ đưӧc dùng như ӣ chӃ đӝ vào/ ra đơn giҧn hoһc ӣ chӃ đӝ có bҳt
tay Mode1. ChӃ đӝ này sӁ không đưӧc trình bày trong tài liӋu này.
ChӃ đӝ BS : Đây là chӃ đӝ thiӃt lұp/ xoá bit (Bit Set/ eset). ӣ chӃ đӝ này chӍ có
nhӳng bit riêng rӁ cӫa cәng C có thӇ đưӧc lұp trình (sӁ đưӧc trình bày ӣ mөc
15.3).
6 Chӑn cәng cӫa 8255.
c     

   
    
   
    !"# 
 $ % "&'())* 

:4!9 :4!9

      


 

V48 3456 V4:8 


,012 ,09!8 67))84 ;>4?6V
3456 , ,3456 =V+
,  2!89!8 1 = Mode 1 ,09!8
3456 V4:8 ,2!89!8
676)84 ;<996:V Port B
,3456  =V+ 1 = Input
,3456 ,09!8 0 = Output
$,3456 ,2!89!8

‘ " Đӏnh dҥng tӯ điӅu khiӇn cӫa 8255 (chӃ đӝ vào/ ra).
" 
45$%78!9)6 
Hãng Intel gӑi chӃ đӝ 0 là chӃ đӝ vào/ ra cơ sӣ. Mӝt thuұt ngӳ đưӧc dùng
chung hơn là vào/ ra đơn giҧn. Trong chӃ đӝ này thì mӝt cәng bҩt kǤ trong A, B,
C đưӧc lұp trình như là cәng đҫu vào hoһc cәng đҫu ra. Cҫn lưu ý rҵng trong chӃ
đӝ này mӝt cәng đã cho không thӇ vӯa làm đҫu vào lҥi vӯa làm đҫu ra cùng mӝt
lúc.
:&;
Hãy tìm tӯ điӅu khiӇn cӫa 8255 cho các cҩu hình sau:
Tҩt cҧ các cәng A, B và C đӅu là các cәng đҫu ra (chӃ đӝ 0).
PA là đҫu vào, PB là đҫu ra, PCL bҵng đҫu vào và PCH bҵng đҫu ra.
<))6)
Tӯ hình 15.3 ta tìm đưӧc:
+   , -.  /+  , -
#=>)?"8$@) 
Chíp 8255 đưӧc lұp trình mӝt trong bӕn chӃ đӝ vӯa trình bày ӣ trên bҵng
cách gӱi mӝt byte (hãng Intel gӑi là mӝt tӯ điӅu khiӇn) tӟi thanh ghi điӅu khiӇn
cӫa 8255. Trưӟc hӃt chúng ta phҧi tìm ra các đӏa chӍ cәng đưӧc gán cho mӛi cәng
A, B, C và thanh ghi điӅu khiӇn. Đây đưӧc gӑi là ánh xҥ cәng vào/ ra (mapping).
Như có thӇ nhìn thҩy tӯ hình 15.4 thì 8255 đưӧc nӕi tӟi mӝt 8031/51 như
thӃ nó là bӝ nhӟ AM. ĐӇ viӋc sӱ dөng các tín hiӋu D và W . Phương pháp
nӕi mӝt chíp vào/ ra bӝ nhӟ vì nó đưӧc ánh xҥ vào không gian bӝ nhӟ. Hay nói
cách khác, ta sӱ dөng không gian bӝ nhӟ đӇ truy cұp các thiӃt bӏ vào/ ra. Vì ly???
do này mà ta dùng lӋnh MOVX đӇ truy cұp AM và OM. Đӕi vӟi mӝt 8255
đưӧc nӕi tӟi 8031/51 thì ta cũng phҧi dùng lӋnh MOVX đӇ truyӅn thông vӟi nó.
ĐiӅu này đưӧc thӇ hiӋn trên ví dө 15.2.
:&;
‘ p 
a) Hãy tìm các đӏa chӍ vào/ ra đưӧc gán cho cәng A, B, C và thanh ghi điӅu
khiӇn.
b) Hãy lұp trình 8255 cho các cәng A, B và C thành các cәng đҫu ra.
c) ViӃt mӝt chương trình đӇ gӱi 55H và AAH đӃn cәng liên tөc.
<))6)
a) Đӏa chӍ cơ sӣ dành cho 8255 như sau:

                  
              
$  $ $ $ $ $ $ $ $ $ $ $ %    , -V

$  $ $ $ $ $ $ $ $ $ $ $ %    , -V

$  $ $ $ $ $ $ $ $ $ $ $ %    , -V

$  $ $ $ $ $ $ $ $ $ $ $ %    , -


b) Byte (tӯ) điӅu khiӇn cho tҩt cҧ các cәng như đҫu ra là 80H như đưӧc tính ӣ ví
dө 15.1.
c)
  32  @A -   .B#"#
  32  V@A -  .
C9 D )E ) )F
8 !"# 
  32% G V@  .%!H88B#"# 
  32  @A-   . I,
 0
J  32  V@A -  .KD)E)V
  32% G V@  .>HL)I)/8)V
  0
  V   .KD)E)V 
  32% G V@  .>HL)I)/M8)V 
  0
  V   .KD)E)V
  32% G V@  .>HL)I)/M8)V
  V>     .>HL)I)/M88 
  >> >N   .O
  P3V   0
  .Q98R)

÷
RD
V
V 
WR

V CS WR RD

> V
 

   V
V  DQ  
V
  
V   74LS373
     
OC




‘ # Nӕi ghép 8051 vӟi 8255 cho ví dө 15.2.
:&;"
‘ p 
a) Tìm các đӏa chӍ cәng vào ra đưӧc gán cho các cәng A, B, C và thanhg ghi điӅu
khiӇn.
b) Tìm byte điӅu khiӇn đӕi vӟi PA bҵng đҫu vào, PB bҵn g đҫu ra, PC bҵng đҫu ra
c) ViӃt mӝt chương trình đӇ nhұn dӳ liӋu tӯ PA gӱi nó đӃn cҧ cәng B và cәng C.
<))6)
a) Giҧ sӱ tҩt các các bit không dùng đӃn là 0 thì đӏa chӍ cәng cơ sӣ cho 8255 là
1000H. o vұy ta có:
 -7SV. -7SV . -7SVTS  -7S8 !"# 
b) Tӯ điӅu khiӇn cho trưӡng hӧp này là 10010000 hay 90H.
c)
 32  @A - .V7SU!TS4@V 7SU!:@V7SU!: 
 32  V@A - .
C9 D )E ) )F 8   !
"#
 32% G V@ .%!H88B !"# 
 32  V@A - .KD)EV
 32% @G V .
W5X7Y!8BV 
 0
  V  .KD)EV 
 32% G V@ . Z5X7Y!:V 
 0
  V  .KD)EV
 32% G V@ . Z5X7Y!:V

÷
RD
V
V  W

V
W D
c
 V
> G 
  V 
V   [ 
 V
V   V V  
      
2



‘  Nӕi ghép 8051 tӟi 8255 cho ví dө 15. 3.


Đӕi vӟi ví dө 15.3 ta nên dùng chӍ lӋnh EQU cho đӏa chӍ các cәng A, B, C
và thanh ghi điӅu khiӇn CNTPO T như sau:
 V2 [<  -
 V2 [<  -
 V2 [<  -
 
V2 [<  -

 32  @A -   . V7S U!TS4@V 7SU! :@ V
7SU!:
 32  V@A
V2 .
C9 D )E )F ) 8   !
"#
 32% G V@  .%!H88B !"# 
 32  V@A
V2 .KD)EV 
 32% V@V2  .
W5X7Y!V 
 0
  @G V  .KD)EV 
 32% V   . Z5X7Y!:V 
 0
  V   .KD)EV
 32% V@  . Z5X7Y!:V
4\))]8#TQ87C'^!J 
2
 N [<  -   %I)DVU!TS4@V TSVU!: 
 V [<  -  .KD)E)_^`)F

  32 @A2
 N
  32 V@A Va .
C9D)E)
  32%G V@  .%!H88B !"# 
  32 V@A V .KD)E)
 

ĐӇ ý trong ví dө 15.2 và 15.3 ta đã sӱ dөng thanh ghi PT vì đӏa chӍ cơ


sӣ gán cho 8255 là 16 bit. NӃu đӏa chӍ cơ sӣ dành cho 8255 là 8 bit, ta có thӇ sӱ
dөng các lӋnh ³MOVX A, @ 0´ và ³MOVX @ 0, A´ trong đó 0 (hoһc 1)
giӳ đӏa chӍ cәng 8 bit cӫa cәng. Xem ví dө 15.4, chú ý rҵng trong ví dө 15.4 ta sӱ
dөng mӝt cәng lôgíc đơn giҧn đӇ giҧi mã đӏa chӍa cho 8255. Đӕi vӟi hӋ thӕng có
nhiӅu 8255 ta có thӇ sӱ dөng 74LS138 đӇ giҧi mã như sӁ t rình bày ӣ ví dө 15.5.

A&!
!B!
C &&D ()!E 
Trong các ví dө 15.4 và 15.4 ta giҧi mã các bít đӏa chӍ A0 - A7, tuy nhiên
trong ví dө 15.3 và 15.2 ta đã giҧi mã mӝt phҫn các đӏa chӍ cao cӫa A8 - A15.
ViӋc giҧi mã tӯng phҫn này dүn đӃn cái gӑi là các bí danh cӫa đӏa chӍ (Address
Aliases). Hay nói cách khác, cùng cәng vұt lý giӕng nhau có các đӏa chӍ khác
nhau, do vұy cùng mӝt cәng mà đưӧc biӃt vӟi các tên khác nhau. Trong ví dө
15.2 và 15.3 ta có thӇ thay đәi tӕt x thành các tә hӧp các sӕ 1 và 0 khác nhau
thành các đӏa chӍ khác nhau, song vӅ thӵc chҩt chúng tham chiӃu đӃn cùng mӝt
cәng vұt lý. Trong tài liӋu thuyӃt minh phҫn cӭng cӫa mình chúng ta cҫn phҧi
bҧo đҧm ghi chú đҫy đӫ các bí danh đӏa chӍa nӃu có sao cho mӑi ngưӡi dùng biӃt
đưӧc các đӏa chӍ có sҹn đӇ hӑ có thӇ mӣ rӝng hӋ thӕng.
:&;#

p 
a) Hãy tìm các đӏa chӍ cәng vào/ ra đưӧc gán cho các cәng A, B, C và thanh ghi
điӅu khiӇn.
b) Tìm tӯ điӅu khiӇn cho trưӡng hӧp PA là đҫu ra, PB là đҫu vào, PC - PC3 là
đҫu vào và CP4 - CP7 là đҫu ra.
c) ViӃt mӝt chương trình đӇ nhұn dӳ liӋu tӯ PB và gӱi nó ra PA. Ngoài ra, dӳ
liӋu tӯ PC1 đưӧc gӱi đӃn CPU.
<))6)
a) Các đӏa chӍ cәng đưӧc tìm thҩy như sau:

 c     KD)E 


      - 
     -  
     - 
     -  !"# 

b) Tӯ điӅu khiӇn là 10000011 hay 83H.


)+
2
 N  [<  -  .V7SU!:@V @V>7SU!TS4 
V2   [<   -
 V2   [<  -
V2   [<  -

V2  [<  -
   
   32  @A2
 N 
   32  @A2
 N .V@V<7SU!:@V TS
V>7SU!TS4
 32   @A
V2 .
C9 D )E )F )
8 !"# 
   32% G @  .%!H88B !"# 
   32   @A V2 .
C9D)EV  
   32% @G   .K*)V 
        .EQV; -+ 
   32% G @  . Z]QV 
   32   @AV2 .
C9D)EV
   32% @G   .K*)V>
   
>  @A b-  .69U)4
   V   .:49U)4TS8H9 
   32% G @  . ZQV<

÷
RD
V
V 
WR

WR RD
CS
V

>   V 
V     V
 [  >
>   V<
V  
      
2



‘ -Nӕi ghép 8051 vӟi 8255 cho ví dө 15.4.
:&;
Hãy tìm đӏa chӍ cơ sӣ cho 8255 trên hình 15.7.
<))6)

 23  2       KD)E
          
        -

V ÷
   
  
  ÷ 
N
 G 2A
  G 2B CS
 

‘  Giҧi mã đӏa chӍ cӫa 8255 sӱ dөng 74LS138.


-‘*"$@) 
Trong mӝt hӋ thӕng dӵa trên 8031 mà bӝ nhӟ chương trình OM ngoài là
mӝt sӵ bҳt buӝc tuyӋt đӕi thì sӱ dөng mӝt 8255 là rҩt đưӧc trào đón. ĐiӅu này là
do mӝt thӵc tӃ là trong giҧi trình phӕi ghép 8031 vӟi bӝ nhӟ chương trình OM
ngoài ta bӏ mҩt hai cәng P0 và P2 và chӍ còn lҥi duy nhҩt cәng P1. o vұy, viӋc
nӕi vӟi mӝt 8255 là cách tӕt nhҩt đӇ có thêm mӝt sӕ cәng. ĐiӅu này đưӧc chӍ ra
trên hình 15.8.

÷
±
V

V  W
VCC
PSEN
c   Wö ö±
 
V V
÷  ÷
V    V 
 V 
>  ÷v÷ 
      
V  ± [   V


V   #0""  
  2       


‘  Nӕi 8031 tӟi mӝt öOM chương trình ngoài và 8255.
=>)?$@)4)@)F

 >)?$@)5
9AG@
 
Chương 13 đã nói chi tiӃt vӅ phӕi ghép đӝng cơ bưӟc vӟi 8051, ӣ đây ta
trình bày nӕi ghép đӝng cơ bưӟc tӟi 8255 và lұp trình (xem hình 15.9) .

÷
  
  
  
 V 
i:4g 
WR   
  V
RD   
    V
 
  V
 6)45 c 
 :)!L:L

<>
 46)84i4:86996:3484:  2
V,
 2 3
V,aT 3 a

‘ HNӕi ghép 8255 vӟi mӝt đӝng cơ bưӟc.


Chương trình cho sơ đӗ nӕi ghép này như sau:

  32  @A -  .*8B !"##V7SU!


:
  32  @AV2 .KD)E)8 !"# 
  32% G@  .H!c)4VU!:
  32  @AV2 .
C9D)E)V 
  32  @A -  . I  , -@ )!L# $! )F
d)_/'e)
 0
J  32% G@  . %!H8 )!f d )_ Q
V
      .[!L)!f864) !"ghh 
  >> >N  .O
  P3V   0


 >)?$@),
chương trình 15.1 trình bày ÷

cách xuҩt các lӋnh và dӳ liӋu tӟi mӝt V   
LcD đưӧc nӕi tӟi 8255 theo sơ đӗ
  j
hình 15.10. Trong chương trình 15.1 V2
ta phҧi đһt mӝt đӝ trӉ trưӟc mӛi lҫn  
 ‘  Nӕi ghép 8255 vӟi LC±.
p p
. )I)7YTS5X7Y!8e> "&)]"#g8:)O/W 
. k^ZV)F'()l8e  = )F> TS
.0 =@V ,1@V ,#l)I))m !"#>   
  32  @A -  . K\8 8H8 )k )I) )  7S U!
:
  32   @A
V2 .
n9D)E8 !"# 
  32% G @  .%!H88B !"#
  32  @A-  .H!c> )]5o TSg
8:Wv 
  >> 3  . 7Y:> 
  >> >N  .OQ7U$!H8"Q8Q9;g^+ 
  32  @A - . W8)48:p)4> 
  >> 3  . 7YSL:> 
  >> >N  .O7U$!H8"Q8Q9 
  32  @A -  .%4I> 
  >> 3  . 7YSL:> 
  >> >N  . D))48:p^9k 
  32  @A  . 7YSL:> 
  >> 3  .O7U$!H8^!
  >> >N  . 7YSL:>
      .TT)48H8)kg*7Y> 
  32  @Aq
q .-#8D5X7Y!: ;)X
+
  >>  . Z5X7Y!:> ##8D 
  >> >N  .O7U$!H8^!
  32  @Aq q .-#8D)Xr r
  >>  . Z:> ##8D 
  >> >N  .O7U$!H8^!
      .TT)4)I)5X7Y!"I) 
.'_8:c)47Y3 :> 
3 J 32   @AV2 .
C9D)E) 
  32% G @  . %!H8 8& 8 8e )m 5X 7Y!
)F> 
  32   @A V2 .
C9D)E) 
  32  @A   ., @1,@,)4$!)4
$!l8H9 
  32% G @  . jM) 4C8 )I) )m@ 1@ 
)F> 
 
2V    .C4d$!)4)m 
 
2V
  32  @A  ., @1,@,)4$!)4
$!l8H9  
32% G @  . l8 8& 8 8:s )m 5X 7Y!
)F> 
  
.'_8:c)47Y  5X7Y!:>  
3 J 32   @AV2 .
C9D)E) 
  32% G @  . %!H8 8& 8 8e )m 5X 7Y!
)F> 
  32   @A V2 . K\8 ,@ 1, @ ,  )4 $! )4
$!l8H9
  32  @A    .jM)4C8)I))m@1@ 
  32% G @  .C4d$!)4)m 
 
2V     
 
2V
  32  @A   .K\8,@1, @, )4$!
)4$!l8H9
  32% G@  . l8 8& 8 8:s )m 5X 7Y!
)F> 
  

p 
. )I)7YTS5X7Y!8e> )]^Z5R "#g8:)O/W
. k^ZV)F'()l8e  = )F> TS
.V ,@V ,1@V ,lTe8e)I))m !"#> 
 
  32  @A -  . K\8 8H8 )k )I) )  7S U!
:
  32   @A
V2 .
C9D)E8 !"# 
  32% G @  .%!H88B !"# 
  32  @A-  .*> )]5oTSg8:W
v
  >>
3  . 7Y:> 
  32  @A - .>Y)F> )4)48:p/W8
  >>
3  . 7Y:> 
MOV A, # 01H ; Xoá LC±
  >>
3  . 7Y:> 
  32  @A  .>Y5D))48:p^9k 
  >> 3  . 7Y:> 
      .TT)48H8)kg*7Y> 
  32  @Aq
q .-#8D5X7Y!:;)X
+ 
  >>
3  . Z5X7Y!:> ##8D 
  32  @Aq q .-#8D)Xr r
  >>
  . Z:> ##8D 
      .TT)4)I)5X7Y!"I) 
.'_8:c)47Y
3 )]#8D)O/W 

3 J 32  @  .>'!I8:D8 
  32  @A -  . K\8 V 7S ) U! TS4 # *)
8:C8I> 
  32   @A
V2 .
C9D)E8 !"# 
  32% G @  .K\8VU!TS4@V U!:  
  32  @A   ., @1,@,*)7Y 
  32  G @ V2.
C9D)E) 
  32%  @  . , @ 1, )4 )I) )m   TS 
  
32   @V2 .
C9D)E) 
 NJ 32% G   .K*)87Y 
  >    .!L# ;)O/W+TS4/8e)::L 
  P   N  .O)4Q"> ^t^S 
  32  @A -  .K\87CV@V 8SU!: 
  32   @A
V2 .
C9D)E) !"# 
  32% G @  .%!H88B !"#8e 
  32  @  .
WI8:D8:k7C8e> 
  32   @AV2 .
C9D)E) 
  32% G @  . %!H8 8& 8 8e )I) )m 5X
7Y!)F> 
  32   @A V2 .
C9D)E) 
  32  @A   .K\8, @1, @,)4$!
8H97s)4
  32% G @  .jM)4C8@1@)F> 
 
2V    .C4d:d$!)F)m 
 
2V
  32  @A  .K\8, @1, @, )4$!
)4$!l8H9
  32% G @  . l8 8& 8 ` )m 5X 7Y!
> 
  
.'_8:c)45X7Y!ge
^Z5R)O/W 

3 J 32  @  .>'!I8:D8 
  32  @A -  . K\8 V 7S ) U! TS4 # *)
8:C8I> 
  32   @A
V2 .
C9D)E8 !"# 
  32% G @  .K\8VU!TS4@V U!:  
  32  @A   ., @1,@,*)7Y 
  32  G @ V2.
C9D)E) 
  32%  @  . , @ 1, )4 )I) )m   TS 
  
32   @V2 .
C9D)E) 
 NJ 32% G   .K*)87Y 
  >    .!L# ;)O/W+TS4/8e)::L 
  P   N  .O)4Q"> ^t^S 
  32  @A -  .K\87CV@V 8SU!:
  32   @A
V2 .
C9D)E) !"# 
  32% G @  .%!H88B !"#8e 
  32  @  .
WI8:D8:k7C 8e> 
  32   @AV2 .
C9D)E) 
  32% G @  . %!H8 8& 8 8e )I) )m 5X
7Y!)F> 
  32   @A V2 .
C9D)E)
  32  @A    .K\8,@1, @,)4$!
8H97s)4
  32% G @  .jM)4C8@1@) F> 
 
2V    .C4d:d$!)F)m 
 
2V
  32  @A   .K\8,@1, @, )4$!
)4$!l8H9
  32% G @  . l8 8& 8 ` )m 5X 7Y!
> 
  

"=>)? ,@)
Các bӝ A±C đã đưӧc trình bày ӣ chương 12. ±ưӟi đây mӝt chương trình
chӍ mӝt bӝ A±C đưӧc nӕi tӟi 8255 theo sơ đӗ cho trên hình 115.11.

  32  @A -  .B !"#TeV,U!:TS


V,U!TS4
  32  @AV2 .
C9D)E) !"# 
  32% G@  .K\8V,U!:TSV,U!TS4 
 jJ  32  @AV2 .
C9D)E)
  32% @G  . K*) D )E )  # $6g  
u^t^S)'
  
>  @@A   .68H8)k)I)/M8)#$6g
 u^t^S)'
  P
v  j  . X#8DV )62 
      . jQ8 8w) d 84C TS /mL O W 5X
7Y!)F 
  32  @AV2 .
C9D)EV 
  32% @G  .,U!TS45X7Y!8'_8x 

Cho đӃn đây ta đã đưӧc trao đәi chӃ đӝ vào/ ra đơn giҧn cӫa 8255 và trình
bày nhiӅu ví dө vӅ nó. Ta xét tiӃp các chӃ đӝ khác.

÷ 

RD   
 "  9b
>j
÷ 
WR 
>j0

 V  

;a+  j
;=+ V2


:6i1
 V 

6)45
V  0

 :)!L:L CS 


‘  Nӕi ghép A±C 804 vӟi 8255.


"

45I

!
"45)4(8J7 A)0. 
Mӝt đһc tính duy nhҩt cӫa cәng C là các bit có thӇ đưӧc điӅu khiӇn riêng
rӁ. ChӃ đӝ BSö cho phép ta thiӃt lұp các bit PC0 - PC7 lên cao xuӕng thҩp như
đưӧc chӍ ra trên hình 15.12. Ví dө 15.6 và 15.7 trình bày cách sӱ dөng chӃ đӝ
này như thӃ nào?

       
0 x x x Bit Select S/R


48<^65 , 8  , 8  68,
3456 66:77L,  , 8 , 8  6^68, 
‘  Tӯ điӅu khiӇn cӫa chӃ đӝ BSö.
:&;-
Hãy lұp trình PCA cӫa 8255 ӣ chӃ đӝ BSö thì bit ±7 cӫa tӯ điӅu khiӇn
phҧi ӣ mӭc thҩp. ĐӇ PC4 ӣ mӭc cao, ta cҫn mӝt tӯ điӅu khiӇn là "0xxx1001" và
ӣ mӭc thҩp ta cҫn "0xxx1000". Các bít đưӧc đánh dҩu x là ta không cҫn quan
tâm và thưӡng chúng đưӧc đһt vӅ 0.

  32  @   .K\8/L86 !"#)4V, 


  32  @A
V2 .
C9)8 !"# 
  32% G@  .C4V,
  >> >N  .OX)Wg)4$!)4 
  32  @A   .K\8/L86 !"#)4V, 
  32% G@  .C4V, 
  >> >N


 ÷ 
Wö  Wö 
öD  öD 
   
 6)45 V
 
 :)!L:L
CS 

‘ " Cҩu hình cho ví dө 15.6 và 15 .7.


:&;
Hãy lұp trình 8255 theo sơ đӗ 15.13 đӇ:
a) Đһt PC2 lên cao
b) Sӱ dөng PC6 đӇ tҥo xung vuông liên tөc vӟi 66% đӝ đҫy xung.
<))6)
+32  @A
V2
32 @A %%%      . L86 !"#
32 G @
/+
 0
J  32  @A    .*V ,
  32   @A
V2 .
C9D)E8 !"# 
  32% G @  .C4V ,
  >> >N 
  >> >N 
  32  @A   .V ,
  >> >N .OX)Wg 
  P3V   0

48:474:5=34562!89!8
V
V4:82!89!8        

-^"67^
V
0

1 0 1 0 1/0 1 0 X

V4:8?8
V OBFA 
V  AcA 

V,09!8@ ,2!899!8 
S

V4:83456
V4:83456
V4:82!89!8

V4:8 2!89!8
V4:8 3456
V4:8 2!89!8
0123456
0

V 

0
 
V OBFB 

-^"67^
V AcB 

V4:8 ?8
88!^4:5=34562!89!8
       
0
 

0
 

0
 
0




2 b

2 b 
012
012
V 
Wö  V 
V4:82!89!8
V  0
^)48:47765/LV 
s g456
V
0
 ^)48:47765/LV
g456
‘ # BiӇu đӗ đҫu ra cӫa 8255 ӣ chӃ đӝ 1.

Wö 

OBF 

0
 

Ac 

2!89!8

‘  BiӇu đӗ đӏnh thӡi cӫa 8255 ӣ chӃ đӝ 1.


"K
45:%78!$@)I6L%MAN!M 
Mӝt trong nhӳng đһc điӇm mҥnh nhҩt cӫa 8255 là khҧ năng bҳt tay vӟi
các thiӃt bӏ khác. Khҧ năng bҳt tay là mӝt quá trình truyӅn thông qua lҥi cӫa hai
thiӃt bӏ thông minh. Ví dө vӅ mӝt thiӃt bӏ có các tín hiӋu bҳt tay là máy in. ±ưӟi
đây ta trình bày các tín hiӋu bҳt tay cӫa 8255 vӟi máy in.
p Xuҩt dӳ liӋu ra vӟi các tín hiӋu bҳt tay.
Như trình bày trên hình 15.14 thì cәng A và B có thӇ đưӧc sӱ dөng như
các cәng đҫu ra đӇ gӱi dӳ liӋu tӟi mӝt thiӃt bӏ vӟi các tín hiӋu bҳt tay. Các tín
hiӋu bҳt tay cho cҧ hai cәng A và B đưӧc cҩp bӣi các bit cӫa cәng C. Hình 15.15
biӇu đӗ đӏnh thӡi cӫa 8255.
±ưӟi đây là các phҫn giҧi thích vӅ các tín hiӋu bҳt tay và tính hӧp lý cӫa
chúng đӕi vӟi cәng A, còn cәng B thì hoàn toàn tương tӵ.
_  B a  Đây là tín hiӋu bӝ đӋm đҫu ra đҫy cӫa cәng A đưӧc tích
cӵc mӭc thҩp đi ra tӯ chân PC7 đӇ báo rҵng CPU đã ghi 1 byte dӳ liӋu tӟi cәng
A. Tín hiӋu này phҧi đưӧc nӕi tӟi chân STö BE cӫa thiӃt bӏ thu nhұn dӳ liӋu
(chҷng hҥn như máy in) đӇ báo rҵng nó bây giӡ đã có thӇ đӑc mӝt byte dӳ liӋu tӯ
chӕt cәng.
_   ACa  Đây là tín hiӋu chҩp nhұn do cәng A có mӭc tích cӵc
mӭc thҩp đưӧc nhân tҥi chân PC6 cӫa 8255. Qua tín hiӋu ACa thì 8255 biӃt
rҵng tín hiӋu tҥi cәng A đã đưӧc thiӃt bӏ thu nhұn lҩy đi. hi thiӃt bӏ nhұn lҩy dӳ
liӋu đi tӯ cәng A nó báo 8255 qua tín hiӋu ACa . Lúc này 8255 bұt B a lên
cao đӇ báo rҵng dӳ liӋu tҥi cәng A bây giӡ là dӳ liӋu cũ và khi CPU đã ghi mӝt
byte dӳ liӋu mӟi tӟi cәng A thì B a lҥi xuӕng thҩp v.v...
_ _ Đây là tín hiӋu yêu cҫu ngҳt cӫa cәng A có mӭc tích cӵc
cao đi ra tӯ chân PC3 cӫa 8255. Tín hiӋu AC là tín hiӋu có đӝ dài hҥn chӃ. hi
nó xuӕng thҩp (tích cӵc) thì nó làm cho B a không tích cӵc, nó ӣ mӭc thҩp
mӝt thӡi gian ngҳn và sau đó trӣ nên cao (không tích cӵc). Sưӡn lên cӫa
AC kích hoҥt INTöa lên cao. Tín hiӋu cao này trên chân INTöa có thӇ đưӧc
dùng đӇ gây chú ý cӫa CPU. CPU đưӧc thông báo qua tín hiӋu INTöa rҵng máy
in đã nhұn byte cuӕi cùng và nó sҹn sàng đӇ nhұn byte dӳ liӋu khác. INTöa ngҳt
CPU ngӯng mӑi thӭ đang làm và ép nó gӱi byte kӃ tiӃp tӟi cәng A đӇ in. ĐiӅu
quan trӑng là chú ý rҵng INTöa đưӧc bұt lên 1 chӍ khi nӃu INTöa, B a và
ACa đӅu ӣ mӭc cao. Nó đưӧc xoá vӅ không khi CPU ghi mӝt byte tӟi cәng A.
_ _ Đây là tín hiӋu cho phép ngҳt cәng A 8255 có thӇ cҩm
INTöa đӇ ngăn nó không đưӧc ngҳt CPU. Đây là chӭc năng cӫa tín hiӋu INTEa.
Nó là mӝt mҥch lұt lip - lop bên trong thiӃt kӃ đӇ che (cҩm) INTöa. Tín hiӋu
INTöa có thӇ đưӧc bұt lên hoһc bӏ xoá qua cәng C trong chӃ đӝ BSö vì INTEa là
lip - Plop đưӧc điӅu khiӇn bӣi PC6.
_  8255 cho phép hiӇn thӏ trҥng thái cӫa các tín hiӋu INTö,
B và INTE cho cҧ hai cәng A và B. ĐiӅu này đưӧc thӵc hiӋn bҵng cách đӑc
cәng C vào thanh ghi tәng và kiӇm tra các bit. Đһc điӇm này cho phép thӵc thi
thăm dò thay cho ngҳt phҫn cӭng.

 

 

‘ - Đҫu cҳm ±B-25.

 O<P+ IQ$RGS
 

‘  Đҫu cáp cӫa máy in Centronics.
6 Các chân tín hiӋu cӫa máy in Centronics.

m^l 3&8k m^l 3&8k


 2   W;/!^L+
 X7Y!   -Q8HL;4!84i996:+ 
 X7Y!   *;^676)8+
 X7Y!   xC9; Autofeed +
 X7Y!  
 X7Y!    >f; rror +
 X7Y!   j`8C4gIL
 X7Y!  = *U!TS4; elect input +
 X7Y!  KH8;:4!5+
  ACK ;)H9W+

Các bưӟc truyӅn thông có bҳt tay giӳa máy in và 8255.


Mӝt byte dӳ liӋu đưӧc gӱi đӃn bus dӳ liӋu máy in.
Máy in đưӧc báo có 1 byte dӳ liӋu cҫn đưӧc in bҵng cách kích hoҥt tín
hiӋu đҫu vào TöOB cӫa nó.
Khi máy nhұn đưӧc dӳ liӋu nó báo bên gӱi bҵng cách kích hoҥt tín hiӋu
đҫu ra đưӧc gӑi là ACK (chҩp nhұn).
Tín hiӋu ACK khӣi tҥo quá trình cҩp mӝt byte khác đӃn máy in.
Như ta đã thҩy tӯ các bưӟc trên thì chӍ khi mӝt byte dӳ liӋu tӟi máy in là
không đӫ. Máy in phҧi đưӧc thông báo vӅ sӵ hiӋn diӋn cӫa dӳ liӋu. Khi dӳ liӋu
đưӧc gӱi thì máy in có thӇ bұn hoһc hӃt giҩy, do vұy máy in phҧi đưӧc báo cho
bên gӱi khi nào nó nhұn và lҩy đưӧc dӳ liӋu cӫa nó. Hình 15.16 và 15.17 trình
các ә cҳm ±B25 và đҫu cáp cӫa máy in Centronics tương ӭng.

You might also like