Hçnh 5.34. Så âäö khäúi cáúu truïc bãn trong cuía 8255A
-
|
A1
|
A0
|
Choün ra
|
1
|
x
|
x
|
khäng choün
|
0
|
0
|
0
|
PA
|
0
|
0
|
1
|
PB
|
0
|
1
|
0
|
PC
|
0
|
1
|
1
|
CWR
|
-
Tæì âiãöu khiãøn âënh nghéa cáúu hçnh
Daûng thæïc cuía tæì âiãöu khiãøn âãø âënh cáúu hçnh âæåüc thãø hiãûn trãn hçnh 5.35.
Tæì âiãöu khiãøn láûp/xoaï bit ra PCi:
Daûng thæïc cuía tæì âiãöu khiãøn âãø láûp/xoaï PCi âæåüc thãø hiãûn trãn hçnh 5.36.
Láûp/xoaï
-
Maî hoaï PCi 1: láûp PCi
000 : PC0 0: xoaï PCi
...
111 : PC7
Nhæ ta tháúy åí trãn, caïc chãú âäü (mode) laìm viãûc cuía maûch cäøng 8255A coï thãø âæåüc âënh nghéa bàòng tæì âiãöu khiãøn CWR. Cuû thãø 8255A coï 4 chãú âäü laìm viãûc:
+ Chãú âäü 0: "Vaìo/ra cå såí" (coìn goüi laì "vaìo ra âån giaín"). Trong chãú âäü naìy mäùi cäøng PA. PB. PCH vaì PCL âãöu coï thãø âæåüc âënh nghéa laì caïc cäøng vaìo hoàûc ra.
+ Chãú âäü 1: "Vaìo/ra coï xung cho pheïp". Trong chãú âäü naìy mäùi cäøng PA. PB coï thãø âæåüc âënh nghéa thaình cäøng vaìo hoàûc ra våïi tên hiãûu moïc näúi (handshaking) do caïc bit tæång æïng cuía cäøng PC trong cuìng nhoïm âaím nhiãûm.
+ Chãú âäü 2: "Vaìo ra 2 chiãöu".Trong chãú âäü naìy chè riãng cäøng PA coï thãø âæåüc âënh nghéa thaình cäøng vaìo/ra 2 chiãöu våïi caïc tên hiãûu moïc näúi do caïc bit cuía cäøng PC âaím nhiãûm. Cäøng PB coï thãø laìm viãûc trong chãú âäü 0 hoàûc 1.
+ Láûp/xoaï caïc bit PCi: chãú âäü naìy coï thãø tháúy roî trãn hçnh 5.36.
Sau âáy ta seî giåïi thiãûu cuû thãø caïc chãú âäü laìm viãûc 0, 1 vaì 2 cuía 8255A.
Chãú âäü 0: "Vaìo/ra cå såí"
Trong chãú âäü naìy, bäún cäøng PA, PB, PCH, PCL âãöu coï thãø âæåüc âënh nghéa laì cäøng vaìo hoàûc cäøng ra. Nhæ váûy, våïi täø håüp táút caí caïc khaí nàng vaìo/ra cho 4 cäøng âoï ta coï âæåüc 16 cáúu hçnh khaïc nhau.
Chãú âäü 1: "Vaìo/ra coï xung cho pheïp"
Hçnh 5.37. Maûch 8255A åí chãú âäü 1 vaì caïc tên hiãûu traûng thaïi.
Âãø âån giaín ta coi PA vaì PB cuìng âæåüc âënh nghéa laì cäøng ra hoàûc cäøng vaìo.
Ra dæî liãûu trong chãú âäü 1 (hçnh 5.37 a)
ÅÍ âáy PA vaì PB cuìng âæåüc âënh nghéa laì cäøng ra vaì coï tên hiãûu moïc näúi tæång âæång nhau cho viãûc trao âäøi dæî liãûu. Ta chè cáön giåïi thiãûu åí âáy caïc tên hiãûu cho PA, caïc tên hiãûu cho PB cuîng tæång tæû:
+ (Âãûm ra cuía PA âáöy). Tên hiãûu baïo cho thiãút bë ngoaûi vi biãút CPU âaî ghi dæî liãûu vaìo cäøng âãø chuáøn bë âæa ra. Tên hiãûu naìy thæåìng âæåüc näúi våïi cuía thiãút bë nháûn.
+ (Traí låìi âaî nháûn âæåüc dæî liãûu). Âáy laì tên hiãûu cuía thiãút bë ngoaûi vi cho biãút laì noï âaî nháûn âæåüc dæî liãûu tæì PA cuía 8255A.
+ INTRA (Yãu cáöu ngàõt tæì PA). Âáy laì kãút quaí thu âæåüc tæì quan hãû giæîa caïc tên hiãûu khaïc cuía 8255A trong quaï trçnh âäúi thoaûi våïi thiãút bë ngoaûi vi, noï âæåüc duìng âãø phaín aính yãu cáöu ngàõt cuía PA tåïi CPU (xem biãøu âäö quan hãû giæîa caïc tên hiãûu trong hçnh 5.38).
+ INTEA laì tên hiãûu cuía mäüt maûch láût bãn trong 8255A âãø cho pheïp/cáúm yãu cáöu ngàõt INTRA cuía PA. INTEA âæåüc láûp/xoaï thäng qua bit PC6 cuía PC.
Caïc tên hiãûu âäúi thoaûi-traûng thaïi kãø trãn âãöu coï thãø láúy træûc tiãúp âæåüc tæì caïc chán tæång æïng cuía vi maûch hoàûc âæåüc âoüc vaìo CPU thäng qua viãûc âoüc cäøng PC (xem hçnh 5.37c âãø tháúy traûng thaïi âoüc âæåüc khi 8255A âæåüc âënh nghéa åí chãú âäü 1).
Vaìo dæî liãûu trong chãú âäü 1 (hçnh 5.37 b)
ÅÍ âáy PA vaì PB âæåüc âënh nghéa laì cäøng vaìo vaì coï caïc tên hiãûu moïc näúi tæång âæång nhau cho viãûc trao âäøi dæî liãu. Ta chè cáön giåïi thiãûu åí âáy caïc tên hiãûu cho PA, caïc tên hiãûu cho PB cuîng tæång tæû:
+ (Cho pheïp chäút dæî liãûu): Khi dæî liãûu âaî sàôn saìng âãø âæåüc âoüc vaìo bàòng PA, thiãút bë ngoaûi vi phaíi duìng âãø baïo cho 8255A biãút maì chäút dæî liãûu.
+ IBF (Âãûm vaìo âáöy): Sau khi 8255A chäút âæåüc dæî liãûu do thiãút bë ngoaûi vi âæa âãún noï âæa ra tên hiãûu IBF âãø baïo cho thiãút bë ngoaûi vi biãút laì âaî chäút xong.
+ INTRA (yãu cáöu ngàõt tæì cäøng PA): Tên hiãûu âãø baïo cho CPU biãút laì âaî coï dæî liãûu sàôn saìng âãø âoüc tæì PA. Âáy laì kãút quaí thu âæåüc tæì quan hãû giæîa caïc tên hiãûu khaïc cuía 8255A trong quaï trçnh âäúi thoaûi våïi thiãút bë ngoaûi vi (xem biãøu âäö quan hãû giæîa caïc tên hiãûu trong hçnh 5.39).
+ INTEA laì tên hiãûu cuía mäüt maûch laût bãn trong 8255A âãø cho pheïp/cáúm yãu cáöu ngàõt INTRA cuía PA. INTEA âæåüc láp/xoaï thäng qua bit PC4 cuía PC.
Mäüt säú trong caïc tên hiãûu âäúi thoaûi-traûng thaïi kãø trãn âãöu coï thãø láúy âæåüc træûc tiãúp tæì chán tæång æïng cuía vi maûch hoàûc coï thãø âæåüc âoüc vaìo CPU thäng qua viãûc âoüc PC (xem hçnh 5.37d).
CaÏc tên hiãûu âäúi thoaûi-traûng thaïi coï thãø âæåüc sæí duûng laìm tên hiãûu moïc näúi cho caïc kiãøu vaìo/ra dæî liãûu bàòng caïch ngàõt CPU hay bàòng caïch thàm doì traûng thaïi sàôn saìng cuía thiãút bë ngoaûi vi (seî âæåüc trçnh baìy trong caïc pháön sau).
Chãú âäü 2: "Bus 2 chiãöu" (hçnh 5.40)
Trong chãú âäü naìy chè riãng cäøng PA âæåüc âënh nghéa âãø laìm viãûc nhæ mäüt cäøng 2 chiãöu coï caïc tên hiãûu moïc näúi do mäüt säú bit cuía PC âaím nhiãûm, coìn PB thç coï thãø laìm viãûc åí chãú âäü 1 hoàûc 0 tuyì theo caïc bit âiãöu khiãøn trong CWR. Caïc chán tên hiãûu coìn laûi cuía PC coï thãø âæåüc âënh nghéa âãø laìm viãûc nhæ caïc chán vaìo hoàûc ra, hoàûc phuûc vuû cho cäøng PB.
Hçnh 5.40. 8255A åí chãú âäü "Bus hai chiãöu".
Mäüt säú tên hiãûu moïc näúi âàûc biãût cáön giåïi thiãûu cuía PA gäöm:
+ INTRA: Yãu cáöu ngàõt cho dæî liãûu theo hai chiãöu vaìo vaì ra.
+ INTE1 vaì INTE2 laì 2 tên hiãûu cuía 2 maûch láût bãn trong 8255A âãø cho pheïp/cáúm yãu cáöu ngàõt cuía cäøng PA. Caïc bit naìy âæåüc láûp/xoaï båíi caïc bit PC6 vaì PC4 cuía cäøng PC.
Biãøu âäö thåìi gian cuía caïc tên hiãûu moïc näúi cuía 8255A âæåüc biãøu hiãûn trãn hçnh 5.41.
Mäüt säú trong caïc tên hiãûu âäúi thoaûi-traûng thaïi kãø trãn âãöu coï thãø láúy âæåüc træûc tiãúp tæì chán tæång æïng cuía vi maûch hoàûc coï thãø âoüc âæåüc vaìo CPU tæì cäøng PC vaì cho pheïp âiãöu khiãøn viãûc trao âäøi dæî liãûu bàòng caïch thàm doì caïc tên hiãûu naìy.
Khi duìng 8255A trong chãú âäü bus 2 chiãöu âãø trao âäøi dæî liãûu theo caïch thàm doì ta phaíi kiãøm tra xem bit coï bàòng 1 (âãûm ra räùng) hay khäng træåïc khi duìng lãûnh IN âãø âoüc dæî liãûu vaìo tæì cäøng PA.
Sau âáy laì mäüt vaìi vê duû vãö caïch láûp trçnh cho 8255A.
Vê duû 1: Giaí thiãút maûch 8255A coï caïc âëa chè sau:
Âëa chè Thanh ghi (cäøng)
7Ch PA
7Dh PB
7Eh PC
7Fh CWR
Láûp trçnh âãø âënh nghéa chãú âäü 0 cho 8255A våïi cáúu hçnh caïc cäøng nhæ sau:
PA: Ra
PB: Vaìo
PCH: Ra
PCL: Vaìo
Sau âoï âoüc caïc giaï trë dæî liãûu coï taûi PB räöi âæa ra PA vaì
PCL räöi âæa ra PCH.
Giaíi: Coï thãø âënh nghéa caïc hàòng cho cäøng, thanh ghi tæì âiãöu khiãøn vaì cho tæì âiãöu khiãøn nhåì lãûnh giaí EQU:
PA EQU 7CH
PB EQU 7DH
PC EQU 7EH
CWR EQU 7FH
CW EQU 83H ; tæì âiãöu khiãøn cho yãu
; cáöu trãn 83H=10000011
vaì sau âoï duìng hàòng âoï vaìo viãûc âënh nghéa cáúu hçnh cho 8255A:
MOV AL, CW ; tæì âiãöu khiãøn trong AL
OUT CWR, AL ; âæa CW vaìo CWR
IN AL, PB ; âoüc cäøng PB
OUT PA, AL ; âæa dæî liãûu âoüc âæåüc ra cäøng PA
IN AL, PC ; âoüc cäøng PCL
MOV CL, 4 ; säú láön quay AL
ROL AL, CL ; chuyãøn 4 bit tháúp thaình 4 bit cao
OUT PC, AL ; âæa dæî liãûu âoüc âæåüc ra cäøng PCH
Vê duû 2: Láûp trçnh âãø bit PC4 cuía 8255A åí vê duû trãn taûo ra 256 xung våïi T=50ms, âäü räüng 50%. Giaí thiãút âaî coï sàôn chæång trçnh con trãù 25ms laì TRE25MS.
Giaíi: Sæí duûng caïc kyï hiãûu åí vê duû trãn vaì caïc âënh nghéa måïi
PC4ON EQU 09H ; tæì âiãöu khiãøn âãø PC4=1 (On): 00001001B
PC4OF EQU 08H ; tæì âiãöu khiãøn âãø PC4=0 (Off): 00001000B
ta coï máùu chæång trçnh sau:
MOV CX, 100H ; säú xung phaíi taûo ra
CLI ; cáúm ngàõt âãø yãn tám maì
; taûo xung
Lap: MOV AL, PC4ON ; tæì âiãöu khiãøn cho PC4=1.
OUT PC, AL ; PC4=1
CALL TRE25MS ; keïo daìi 25ms.
MOV AL,PC4OFF ; PC4=0
CALL TRE25MS ; Làûp cho âuí säú xung
STI ; cho pheïp ngàõt tråí laûi
...
Trong vê duû trãn ta chuï yï lãûnh CLI (âãø cáúm ngàõt) vaì leûnh STI (âãø cho pheïp ngàõt) åí âáöu vaì cuäúi âoaûn chæång trçnh tênh thåìi gian taûo ra daîy xung. Âiãöu naìy laì cáön thiãút vç ta duìng chæång trçnh âãø taûo ra caïc khoaíng thåìi gian vaì vç thãú ta muäún caïc yãu cáöu ngàõt (nãúu coï) khäng aính hæåíng tåïi viãûc taûo ra caïc khoaíng thåìi gian âoï.
Vê duû 3: coï maûch 8255A våïi âëa chè cå såí laì 30H näúi våïi caïc pháön tæí ngoaûi vi âån giaín (hçnh 5.42). Láûp trçnh âãø coï U1>U2 thç âoüc traûng thaïi cäng tàõc K, nãúu K âoïng thç cho âeìn LED tàõt, K måí thç cho âeìn LED saïng.
Giaíi:
Ta phaíi âënh nghéa caïc hàòng vaì tæì âiãöu khiãøn âãø âënh nghéa cáúu hçnh: PA laì vaìo, PB laì vaìo vaì PCH laì ra. Khi U1>U2 thç ta âoüc âæåüc PB7=1 (coìn khi thç PB7=0). Luïc naìy ta phaíi âoüc traûng thaïi cäng tàõc K âãø âiãöu khiãøn âeìn LED, nãúu K âoïng thç ta âoüc âæåüc PB7=0 vaì ta phaíi âæa ra PC4=) âãø tàõt âeìn.
Âënh nghéa caïc hàòng
PA EQU 30H
PB EQU 31H
PC EQU 32H
CWR EQU 33H
CW EQU 92H ; tæì âiãöu khiãøn cho yãu
; cáöu trãn 92H=10010010
âoaûn chæång trçnh coìn laûi laì:
MOV AL, CW ; tæì âiãöu khiãøn trong AL
OUT CWR, AL ; âæa CW vaìo CWR
DocPB: IN AL, PB ; âoüc cäøng PB
AND AL, 80H ; PB7=1?
JZ DocPB ; âoüc laûi
IN AL, PA ; âoüc cäøng PA
And AL, 01H ; khoaï K âoïng (PA1=0)?
JZ Tat ; âuïng, tàõt âeìn
MOV CL, 4
ROL AL, CL ; âäøi bit0 lãn bit4
OUT PC, AL ; âæa tên hiãûu thàõp âeìn
Tat: OUT PC, AL ; âæa tên hiãûu tàõt âeìn
Ra:...
Chia sẻ với bạn bè của bạn: |