Példa 2.1.: Készítsen soros-párhuzamos átalakító áramkört, amely egy Start impulzust követő 4 db. órajel alatt az X bemeneten érkező jeleket fogadja és Strobe jel hatására párhuzamosan be megjeleníti, az Y1(Start jel után az első órajel alatt beérkező Xbe érték), Y2, Y3, Y4 kimeneteken a kővetkező Strobe jelig. A Start jelet követően mindig van minimum 4 db. órajel a Strobe impulzusig. A Start és Strobe jelek szinkronizáltak, egy órajel ideig tartanak, és nem fedhetik át egymást. X bemenet értéke az órajel alatt ("1") nem változik. be
U X be
Y2
Y1
Y3
Y4
Clk Start Strobe Q FF
t
2.10. ábra Megoldás 2.1/1:
D 74 J
"1" J
Start
Pr
Pr
Cp 76
Q
FF
Q
Cp 76
Q
K Clr Q
Pr
J
Cp 76
Q
K Clr Q
J
Pr
Cp 76
Q
K Clr Q
J
Pr
Cp
76
Q
D
K Clr Q
Cp
74
74 D 74 J
Pr
Cp
76
Q
K Clr Q
J
Pr
Cp 76
J
Q
Pr
Cp 76
K Clr Q
Pr
J
Q
Cp 76
K Clr Q
Q
Y3
Y2
Q Q
Cp
Clk
Q Q
D
K Clr Q
Y4
Q
Cp
Xbe
Q
Y1
Q Q
Cp
K Clr Q
Strobe 2.11. ábra Megoldás 2.1/2: D 74 X be
J Pr Q 76 Q K
"1" Start
Cp
J Pr Q 76 Q K
Q
FF
Clr
J Pr Q 76 Q K
Cp
Clr
J Pr Q 76 Q K
Cp
Clr
J Pr Q 76 Q K Clr
D 74 Pr
J Q 76 K Clr Q
Cp
Pr
J Q 76 K Clr Q
Cp
Strobe
2.12. ábra
Pr
J Q 76 K Clr Q
Cp
Pr
J Q 76 K Clr Q
Cp
Cp
Q
Y3
Q
Y2
Q
Cp
Clk
Y4
Q 74
Clr
SN74160, szinkron BCD, szinkron beírás, aszinkron törlés SN74162, szinkron BCD, szinkron beírás, szinkron törlés SN74161, szinkron bináris, szinkron beírás, aszinkron törlés
74 Cp D
Cp
3.3. Szinkron számlálók (74160, 161, 162, 163)
D
Cp
Q Q
Cp
Q Q
Y1
SN74163, szinkron bináris, szinkron beírás, szinkron törlés Beíró (LOAD), törlő (CLR) és két engedélyező (ENP és ENT) jel, átvitel (RCO) kimenettel.
LOAD
QA Q
CLR
B
Q
C
Q
D
74160-163
CLK ENP
ENT
A
B
RCO C
D
Számlálás engedélyezés
ENP
QD QC QB QA
ENT RCO engedélyezés
RCO
3.6. ábra Az RCO kimenetekre alapozva a következően bővíthetőek:
LOAD
CLR
ENP
Q Q Q Q A B C D
74160-163
CLK ENT
A
B
RCO C
D
LOAD
CLR
ENP
CLK
Q
A
Q
B
Q
C
74160-163
CLK ENT
A
B
C
Q
D
LOAD
RCO
CLK
D
ENP
CLR
Q Q Q Q A B C D
74160-163 ENT
A
B
LOAD
RCO C
CLK ENP
D
CLR
Q Q Q Q A B C D
74160-163 ENT
A
B
RCO C
D
"H"
"H"
3.7. ábra Elnevezés: Carry Look-Ahead (Átvitelképzés gyorsítása, az alacsonyabb helyiértéken megjelenő átvitel felléptekor nem kell kivárni, míg az sorosan végigterjed a magasabb helyiértékeken.) Példa 4.2.: Tervezzen logikai hálózatot, amely két 7 bites, bináris, előjeles, kettes komplemensű számra (x0...x7, y0...y7) előállítja a 4*(x-y) művelet eredményét kettes komplemens kódban. A két operandus 2 lépésben, a START impulzus alatti és az azt követő órajelimpulzussal ütemezve, negáltan érkezik az XA...XD, YA...YD bemenetekre a 4.4. ábra szerint. A negált eredmény a következő START impulzusig álljon rendelkezésre. Használja fel a 74LS181 tip. ALU áramkört. A két operandusra és az eredményre az x0, y0, E0 a legalacsonyabb helyiérték. A ciklus első CLK impulzusa mindig a START alatt érkezik. Két START impulzus között legalább 3 órajel van.
START Clk XA..XD
LH
YA..YD
XA..XD E0..E10 YA..YD
Clk
E0..E10
START 4.4. ábra
Megoldás 4.2/1:
x4,x5 x6,x7 y4,y5 y6,y7
x0,x1 x2,x3 y0,y1 y2,y3
74374
XA...XD
1Q-4Q 1D-4D
74125
74181 A
Cn+4
YA...YD 5Q-8Q 5D-8D
1G
S
1Q-4Q 1D-4D
M M=L S0 = L S1 = H S2 = H S3 = L
CLK OC
74374
*
B Cn
E10
A Y
F
74LS244
1A * YY
E2...E9
2A A 74181
1G 2G
Cn+4
A
E1 E0
F 5Q-8Q 5D-8D
B Cn
S
M M=L S0 = L S1 = H S2 = H S3 = L
CLK OC
START D
Cp
Cp
74
Q
D
Q
Cp
74
Q Q
4.5. ábra Megoldás 4.2/2:
74374 74374
XA...XD
1Q-4Q 1D-4D
74181 A
1Q-4Q
Cn+4
1D-4D
E10
F
YA...YD 5Q-8Q 5D-8D
B Cn
S
CLK OC
M
74374
M=L S0 = L S1 = H S2 = H S3 = L
CLK OC
1Q-4Q 1D-4D
E2...E9 5Q-8Q 5D-8D
74181 Cn+4
A
CLK OC
F B Cn
E1 E0
M M=L S0 = L S1 = H S2 = H S3 = L
START D
Cp
S
Cp
74
Q
D
Q
Cp
74
Q Q
4.6. ábra SN74180: 8/9 bites paritásgenerátor és paritásellenőrző. Bemenetek: 8 darab adatbit (X), páros/páratlan bitek (Even In (EI), Odd In (OI)) Kimenetek: Páros/páratlan bitek (Even Out (EO), Odd Out (OO)) A...H-n belüli egyesek száma
EI
OI
EO
OO
páros
1
0
1
0
páratlan
1
0
0
1
páros
0
1
0
1
páratlan
0
1
1
0
-
1
1
0
0
-
0
0
1
1
Paritásgenerátorként tehát a 74180 az EI/OI magas állapota mellett az adatbiteket páros és páratlan paritásúra egészíti ki az OO/EO és az EO/OO kimeneteken. Paritásellenőrzéskor a kilencedik adatbitet az EI-re, negáltját az OI-re vezetve páros/páratlan paritást feltételezve az EO/OO magas szintje paritáshibát jelez. Nyocbites paritás-generátor
74180
A : H EVEN
74180
A : H
EVEN
EVEN
EVEN
ODD
ODD
ODD
ODD
Páros paritás-generátor
Páratlan paritás-generátor
5.8. ábra Kilencbites paritás-generátor
74180
A : H
74180
A : H
EVEN
EVEN
I EVEN
ODD
EVEN
I
ODD
ODD
ODD
Páros paritás-generátor
Páratlan paritás-generátor
5.9. ábra Paritás-ellenörzés
74180
A : H
EVEN
P EVEN
ODD
Error (even) Error (odd)
ODD
5.10. ábra
Példa 6.3.: RAM számára 0, EPROM számára 0..7 wait-et beiktató READY logika tervezése Megoldás 6.3.: általános megjegyzések: lefelé él után nincs biztosítva elég idő a READY-hez pl.: 8085 felfutó órajel előtt legalább 110 ns a -RD és a -WR jel figyelembe vétele legalább 1 wait-et jelent -CSRAM *
-READY *
A B
CLK
Qa Qb Qc
Qh
‘164
CK
-CLR -CSEPROM
-RD -WR T1
CLK ALE
-READY CSEPROM (A,B) Qa Qb
6.10. ábra
T2
TW1
TW2
T3
8. SID, SOD vonalak alkalmazása
0.
RIM utasítás
A:
RST 5.5 beállított maszk ( "1" maszkolt) RST 6.5 beállított maszk RST 7.5 beállított maszk INTE ( megszakítás FF értéke) RST 5.5 bemenet értéke RST 6.5 bemenet értéke RST 7.5 bemenet értéke SID bemenet értéke 0.
SIM utasítás
A:
RST 5.5 maszk beállítás ( "1" maszkol) RST 6.5 maszk beállítás RST 7.5 maszk beállítás Maszk beállítás engedélyezés RST 7.5 megszakítás FF törlése SOD állítás engedélyezés SOD kimenet
8.1. ábra
Példa 8.1.: A 8.1. ábra szerint egy i8085-ös processzor SID bemenetére pergésmentesített kapcsolót kötöttek.A SOD kimenetről egy LED diódát lehet vezérelni. A processzoron futó programnak a SID bemenetre érkező jeleket kell figyelnie és ez alapján vezérelni a LED diódát. A bekapcsolás után a SID bemenetre érkező jel első felfutó élre a diódának világítani kell, a bemenetre érkező következő impulzus lefutó élére pedig el kell aludnia (8.2. ábra). Készítsen el egy olyan assambly programot, amely ezt a vezérlést ciklikusan ismétli. Aprogram címe legyen 8000H. SID t SOD t C: 0
1
2
0
8.2. ábra
i8085 i8085 sín
SID
Q
S R
SOD
8.3. ábra
Megoldás 8.1.: A programban alkalmazott regiszterek feladata: B: Előző mintavételezéskor a SID bemenet értéke, C: Ciklus állapot-tárolója, D: Aktuális SID érték
nyomógomb
1 RIM B: = SID
SOD = 0 C=0
RIM
D: = SID
nem
D XOR B = 1 ?
NEM
igen
B=0?
nem (lefutó él)
igen (felfutó él)
B: = D
B: = D
C=2?
C=0? igen
igen
nem
SOD = 1
C: = C+1
8.4. ábra
ORG
8000H
KEZD:
RIM ANI 80H MOV B,A ;------------------------------------------------------------------FOCIKL: MVI A,40H SIM MVI C,00H ;STATUS:=0 ;-----------------------------------------------------------------------CIKL1: RIM ANI 80H ;FELSO BITRE MASZK MOV D,A ;UJ ERTEK MENTESE XRA B ;A XOR B, FIGYEL JZ CIKL1 ;UGRIK, HA SID NEM VALTOZOTT XRA A ;A:=0 ORA B ;0+B JZ FELFUT ;UGRIK, HA FELFUTÓ EL ;------------------------------------------------------------------------------LEFUT: MOV B,D ;REGI SID ERTEK FRISSITESE MOV A,C CPI 2 JZ FOCIKL ;UGRIK, HOGY SOD LEESSEN JMP CIKL1 ;--------------------------------------------------------------------------------FELFUT: MOV B,D ;REGI SID ERTEK FRISSITESE XRA A ORA C JNZ FEL1 ;UGRIK,HA NEM ELSO EL MVI A,0C0H SIM ;SOD=1 FEL1: INR C ;C:=C+1 JMP CIKL1 ;----------------------------------------------------------------------------------------END Példa 8.2.: Mod. 256-os számláló i8085-ös processzorral. A processzor RST 5.5 bemenete a számláló engedélyező jele, és a SID bemenetre érkeznek az impulzusok. Az áramkör az impulzusok felfutó élére működjön mod. 256 számlálóként. Az áramkör kimenete a processzor SOD kimenete, amelyen 256 impulzusonként egy ciklusidőre jelenik meg pozitiv impulzus. Az bemenő impulzusok szélessége nagyobb mint 0.5 ms és a két bemenet változása egymástól 50µs-nál nagyobb távolságra van.
SID
1.
256.
t RST 5.5
számol
nem számol >50µs
t
SOD
t
8.5. ábra
i8085 i8085 sín
SID
Q
S R
Nyomógomb
SOD
Q
RST 5.5
S R Kapcsoló
8.6. ábra
Megoldás 8.2./1: Az RST 5.5 vonal programozott lekérdezésével. 1 RIM B: = SID SIM (SOD = 0) L=0
RIM E: = RST 5.5 D: = SID nem
D XOR B = 1 ?
nem (lefutó él)
B=0?
B: = D
igen
igen (felfutó él) nem
E=1? igen
L: = L-1
L=0?
nem
igen
SIM (SOD = 1)
SIM (SOD = 0)
8.7. ábra
A programban alkalmazott regiszterek feladatai: B: Előző mintavételi SID érték. D: Aktuális SID érték. E: Aktuális RST 5.5 érték. L: Számláló értéke. Egyidőben történik a mintavételezése a SID és RST 5.5 bemeneteknek, ezért a jelek elvileg egyidőben is változhatnak (az 50µs-os idő a két változás között nincs kihasználva). ORG ; INIC:
8000H
RIM ANI 80H MOV B,A ;ELOZO SOD BEALLITASA A B-BE MVI A,4FH ;FELES IT-K TILTASA, SOD=0 SIM XRA A MOV L,A ;L=0 ;---------------------------------------------------------------------------------KEZD: RIM PUSH PSW ANI 10H MOV E,A ;E=RST 5.5 POP PSW ANI 80H MOV D,A ;D=AKTUALIS SID XRA B ;VOLT SID VALTOZAS ? JZ KEZD ;UGRIK, HA NEM VOLT XRA A ORA B ;ELOZO SOD „0” VOLT ? JZ FELFUT ;URIK, HA FELFUTO EL ;------------------------------------------------------------------------------------LEFUT: MOV B,D ;ELOZO ERTEK FRISSITESE JMP KEZD ;----------------------------------------------------------------------------------------FELFUT: XRA A ORA E ;KELL SZAMOLNI? JZ LEFUT ;UGRIK, HA NEM KELL (RST 5.5=0) DCR L JNZ TORL ;UGRIK, HA NEM A256. IMP. MVI A,0C0H ;SOD=1 PARANCS SZO SIM
JMP LEFUT MVI A,40H ;SOD=0 PARANCS SZO SIM JMP LEFUT ;----------------------------------------------------------------------------------------END Megoldás8.2./2: RST 5.5 megszakításkérés alkalmazásával. TORL:
FÕPROGRAM RIM B: = SID SIM (SOD = 0) L=0
RIM D: = SID nem
D XOR B = 1 ?
nem (lefutó él)
B=0?
B: = D
igen
igen (felfutó él)
Megszakítás engedélyezés
RST 5.5 rutin
L: = L-1 L=0?
nem
igen
SIM (SOD = 1)
SIM (SOD = 0)
Megszakítás tiltás RET
8.8. ábra
Az RST 5.5 megszakításkérő jel szintjére történik meg a szubrutin meghívása, akkor ha a SID vonal felfutó élére a megszakítások tiltása megszünik (EI). Az RST 5,5 szubrutinban dekrementálás és SOD állítása történik. ORG
0H
; JMP INIC ;----------------------------------------------------------------------------------------;----------------------------------------------------------------------------------------ORG 28H ; RUTIN: DCR D JNZ TORL ;UGRIK, HA NEM A256. IMP. MVI A,0C0H ;SOD=1 PARANCS SZO SIM RET TORL: MVI A,40H ;SOD=0 PARANCS SZO SIM RET ;----------------------------------------------------------------------------------------;----------------------------------------------------------------------------------------ORG 8000H ; INIC: RIM ANI 80H MOV B,A ;ELOZO SID BEALLITASA A B-BE MVI A,4EH ;FELES IT-K MASZKOLASA(KIVETEL RST5.5), SOD=0 SIM XRA A MOV L,A ;L=0 ;---------------------------------------------------------------------------------KEZD: RIM ANI 80H MOV D,A ;D=AKTUALIS SID XRA B ;VOLT SID VALTOZAS ? JZ KEZD ;UGRIK, HA NEM VOLT XRA A ORA B ;ELOZO SID „0” VOLT ? JNZ LEFUT ;UGRIK, HA LEFUTO EL FELFUT: EI NOP DI ;------------------------------------------------------------------------------------LEFUT: MOV B,D ;ELOZO ERTEK FRISSITESE JMP KEZD ;----------------------------------------------------------------------------------------;----------------------------------------------------------------------------------------END
9. „Feles” megszakítások alkalmazása. Példa 9.1.: Készítsen megszakítási vonalakat kezelő áramkört, amely egy 8085-ös processzoron alapuló sín RST 5.5-ös megszakítási vonalára csatlakozva 3 db külsô megszakítás fogadására alkalmas. Egy megszakítási impulzusra csak egyszer kérjen megszakítást. Feltételezzük, hogy a megszakítási impulzusok gyakorisága max. 1ms. A megszakítások kezelését külön-külön áramkörök végzik, amelyek alaphelyzetbe állíthatók a 78H, 79H és 7AH címre adott írás paranccsal. A megszakításkérés lekérdezhető a fenti címekre adott olvasás paranccsal. Az RST 5.5-ös megszakítási szubrutinban az IRT1 a „C”, az IRT2 a „D” és az IRT3 az „E” regisztereket inkrementálja.
Megoldás 9.1.: Javasolt blokkvázlat: Adatsín
i8085
Címsin TT
WR RD IO/M READY RST 5.5
K
K
D
T
Reset out
FF
FF
*
T
FF
I/O áramkör
I/O áramkör
ITR1
D
*
T
I/O áramkör
K
D
*
ITR2
ITR3
9.1. ábra
I/O áramkör D0
SN74126 RST 5.5
RD
Q
WR
CLR
A4
SN7474 PR CLK D
A0
A
A1 A2
B
IRT1 IRT2 IRT3
C
A3
A5 A6
A7 IO/M
E1 E2 E3 i8205 Reset out
Ready IRTi ( i = 1,2,3 )
9.2. ábra
; FOPROGRAM RAM STACK IRT1KC IRT2KC IRT3KC IRTKC SZAKIT MASZK MSZ75 T75 ;
EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU
8000H 8100H 78H 79H 7AH 7BH 7CH 0000 1110B 0001 1011B 0001 0000B
0RG JMP INIC
0
ORG JMP
02CH RUTIN
ORG LXI SPHL XRA MOV MOV MOV MVI SIM EI JMP
40H H,STACK
PUSH IN ANI JNZ IN ANI JNZ
PSW IRT1KC 1 RU1 IRT2KC 1 RU2
; (2. PELDA) ; (3. PELDA) ; RST 6.5, RST 7.5 MASZK PARANCS ( 1.2.PELDAK) ; RST 5.5, RST 6.5 MASZK PARANCS (3. PELDA) ; RST 7.5 FF. TORLESE (3. PELDA)
; ; RST 5.5-OS RUTIN HIVASA
; INIC:
HUROK: ; ; RST 5.5 SZUBRUTIN ; RUTIN:
; STACK BEALLITASA A C,A D,A E,A A,MASZK
; C,D,E REGISZTEREK TORLESE ; RST 6.5, RST 7.5 MASZKOLASA
HUROK
; IRT1 MEGSZAKITAS ERKEZETT ?
; IRT2 MEGSZAKITAS ERKEZETT?
RUT1:
RUT2:
INR OUT POP EI RET INR OUT POP EI RET INR OUT POP EI RET END
E IRT3KC PSW
; ITR3 LEKEZELESE ; ITR3 MEGSZAKITASI FF. TORLESE
C IRT1KC PSW
; ITR1 LEKEZELESE ; ITR3 MEGSZAKITASI FF. TORLESE
D IRT2KC PSW
; ITR2 LEKEZELESE ; ITR3 MEGSZAKITASI FF. TORLESE
Példa 9.2.: Készítsék el a Példa1 megoldását úgy, hogy a megszakítási ff.-ok értékei egy utasítással legyenek lekérdezhetők (cím: 7BH). Megoldás 9.2.: D2
IRT3
D1
IRT2
D0
IRT1
SN74126
RST 5.5
RD
Q
WR
CLR
SN7474 PR CLK D
A4
A0
A
A1 A2
B C
A7 IO/M
E1 E2 E3
IRT1 IRT2 IRT3
A3
A5 A6
i8205 Reset out Ready IRTi ( i = 1,2,3 )
9.3. ábra
; RST 5.5 SZUBRUTIN ; RUTIN:
RU3:
RU4:
VEGE:
RUT1:
RUT2:
PUSH PUSH IN MOV ANI JNZ MOV ANI JNZ MOV ANI JZ INR OUT POP POP EI RET INR OUT JMP INR OUT JMP
PSW H IRTKC H,A 1 RU1 A,H 2 RU2 A,H 4 VEGE E IRT3KC H PSW
C IRT1KC RU3 D IRT2KC RU4
; IRT1 ERKEZETT ?
; IRT2 ERKEZETT?
; IRT2 ERKEZETT? ; ITR3 LEKEZELESE ; ITR3 FF. TORLESE
; ITR1 LEKEZELESE ; ITR3 MEGSZAKITASI FF. TORLESE ; ITR2 LEKEZELESE ; ITR3 MEGSZAKITASI FF. TORLESE
Példa 9.3.: Készítsék el a Példa2 megoldását RST 7.5-es megszakítás alkalmazásával. Megoldás 9.3.:
D2
IRT3
D1
IRT2
D0
IRT1
SN74126
RST 7.5
RD
Q
WR
CLR
SN7474 PR CLK D
A4
A0
A
A1 A2
B
IRT1 IRT2 IRT3
C
A3
A5 A6
A7 IO/M
E1 E2 E3 i8205 Reset out
Ready IRTi ( i = 1,2,3 )
9.4. ábra
; ; FOPROGRAM ; RAM STACK IRT1KC IRT2KC IRT3KC IRTKC SZAKIT MASZK
EQU EQU EQU EQU EQU EQU EQU EQU
8000H 8100H 78H 79H 7AH 7BH 7CH 0000 1110B
MSZ75
EQU
0001 1011B
T75
EQU
0001 0000B
0RG JMP INIC
0
ORG JMP
03CH RUTIN
ORG LXI SPHL XRA MOV MOV MOV MVI SIM EI JMP
40H H,STACK
; (2. PELDA) ; (3. PELDA) ; RST 6.5, RST 7.5 MASZK ; PARANCS( 1.2.PELDAK) ; RST 5.5, RST 6.5 MASZK ; PARANCS(3. PELDA) ; RST 7.5 FF. TORLESE ; (3. PELDA)
;
; ; RST 5.5-OS RUTIN HIVASA
; INIC:
; STACK BEALLITASA A C,A D,A E,A A,MSZ75
HUROK: HUROK ; ; RST 7.5 SZUBRUTIN ; RUTIN: PUSH PSW PUSH H IN IRTKC MOV H,A ANI 1 JNZ RU1 RU3: MOV A,H ANI 2 JNZ RU2 RU4: MOV A,H ANI 4 JZ VEGE INR E OUT IRT3KC VEGE: POP H POP PSW MVI A,T75 SIM OUT SZAKIT EI RET RUT1: INR C OUT IRT1KC JMP RU3 RUT2: INR D OUT IRT2KC JMP RU4 ;------------------------------------------------------------------------------END
; C,D,E REG. TORLESE ; RST 6.5, 5.5 MASZKOLASA
; IRT1 ERKEZETT ?
; IRT2 ERKEZETT?
; IRT2 ERKEZETT? ; ITR3 LEKEZELESE ; ITR3 FF. TORLESE
; RST 7.5 FF. TORLESE ; RST 7.5 FELFUTOEL GEN.
; ITR1 LEKEZELESE ; ITR3 FF. TORLESE ; ITR2 LEKEZELESE ; ITR3 FF. TORLESE
10. Megszakításkezelők alkalmazása (i8259A) Példa10.1.: Készítsen áramkört, amely egy 8085-ös processzoron alapuló sínre csatlakozva 8 db külső megszakítás fogadására alkalmas. A. A processzor modul nem tartalmaz megszakítás vezérlőt, a processzor INT és INTA jelei ki vannak vezetve a buszra. A rendszerben egyéb IT kérő eszköz csak a processzor feles IT vonalait használhatja. B. A processzor modul tartalmaz 1db 8259-es megszakításvezérlőt. A 8259-es IT bemenetei (IT0..IT7) valamint kaszkád kimenetei (CAS0..CAS2) megtalálhatók a buszon. A kártya az IT2 vezetékre csatlakozhat. Készítsük el az IT vezérlőket inicializáló rutinokat! a. Báziscím: 20H, IT tábla cím 1C0H, intervallum: 4 byte. b. Processzor moduli vezérlő: Bázis cím: 80h, IT tábla cím 180H, intervallum: 4 byte.
I. HARDVER MEGVALÓSÍTÁS A. KÜLSŐ IT VEZÉRLŐVEL A0 RD WR INT INTA IO/M
DB7..0
* RDY
A7..1
G VEZ DIR
A0 RD WR INT INTA
CS
D7..0 CAS0 CAS1
8259
CAS2 SP/EN
IR7
IR0
. . . IR0 .. IR7: Szint vagy él+szint érzékeny, de mindkét esetben a kiszolgálás pillanatában IRi = 1 kell legyen. 1. VEZ feladata: -CS előállítása - a 8259-es mint periféria szerepel
CS = sajá tcím ⋅ IO / M Adaterősítő vezérlése - INTA alatt - pogramozás alatt (8259 mint periféria)
G = CS + INTA
(G = CS ⋅ INTA)
DIR = IORD + INTA
( DIR = IORD ⋅ INTA)
RDY* előállítása - INTA alatt - pogramozás alatt (8259 mint periféria)
RDY = CS + INTA
(Figyelem!
INTA alatt IO / M = 1 , más IO eszköz is adhat READY-t) A
A
1 A 2 A 3 A
0
CS
B C 74LS138
5 E
A 4 A 6 A 7
E E
IO/M RDY
*
1
G
2 3
7
*
INTA DIR RD
2. IT RUTIN
Feladatok: Regiszter mentés IT kiszolgálás ( IT "törlés" ) Regiszter visszaállítás IT engedélyezés
•
8259
•
Processzor a.) Automatikus EOI A következő IT engedélyezése a processzor Használható, ha Az IT rutinok nem megszakíthatók Nincs nagy prioritású IT
ITRUT0:
ITRUTi: PUSH
b.) Programozott EOI IT engedélyezése programból Használható, ha Az IT rutinok "hosszúak" Van nagy prioritású IT Regiszter mentés "Nem megszakítható" műveletek EI További műveletek (IT kiszolgálás) Regiszter visszaállítás 8259 EOI (OCW2) B. SLAVE IT VEZÉRLŐVEL Különbségek: CAS0..2 vonal kell
Bufferelt üzemmód: INTA helyett Programozás ICW1-ben ICW3-ban
ICW4-ben
SP / EN
SNGL = 0 MASTER:
ICW3 i.slave = 1
SLAVE: MASTER: SLAVE:
i M/S = 1 M/S = 0
IT rutinban:EOI a MASTER-re és a SLAVE-re is! (Speciális rögzített prioritású működés!!!) Maszk állítás:
Inicilaizálás után: mindenki engedélyezve - ha tiltani kell, Mi=1-re tiltás
ITMASK ICW1 ICW2 ICW4 X59 ITBASE
EQU EQU EQU EQU EQU EQU
0FFh 0D7h 001h 002h 020h 001C0H
ITINIT:
DI MVI OUT MVI OUT MVI OUT MVI OUT LXI MVI MOV INX LXI
; Inicializálás alatt IT tiltás A,ICW1 X59 A,ICW2 X59+1 A,ICW4 X59+1 ; 8259 inicializálás A,ITMASK X59+1 ; IT maszk állítás H,ITBASE A,0C3h ; JMP kódja M,A H D,ITRUT0 ; IT0 szubrutin címe
MOV INX MOV INX INX MOV INX LXI . EI RET
M,E H M,D H H ; 4. byte átugrása M,A ; JMP kódja H D,ITRUT1 ; IT1 szubrutin címe
; 8259 IO báziscím ; IT tábla báziscím
; Inicializálás vége, IT engedélyezés
13. Kiemeneti periféria illesztés Feladat: illesztési felület (interface) és működtető program (handler) kialakítása nyomtatóhoz (perifériához). Megvalósítás: szabványos (egységes) interface és protokoll alkalmazása Példa: BSI interfész és protokoll Az interfész jelei: Jel SO SC AO AC D0..D7
Function source operation soure control acceptor operation acceptor operation data lines
PUSH . . POP EI RET
EI utasításával
Funkció forrás üzemképes forrás vezérlés nyelő üzemképes nyelő vezérlés adatvonalak
PSW . . EI . . MVI OUT POP RET
PSW PSW
;eddig nem megszakítható ;innen kezdve a magasabb ;prioritású érvényre juthat A,20h X59 PSW
parity
DP
paritásbit
Irás (-WR) IT-re, vagy programozott státuszellenőrzés után
CS= saját cím ∗ IO/-M∗-AEN -INTA∗CS=ready, hogy IT alatt ne adjon hamis READY-t
A port 1. üzemmód kimenetek: -OBF -ACK INTRa
PC7 PC6 PC3
G=CS∗(RD+WR)
Adatbusz meghajtó +5V
245
DB0 DB7 -G
D0
PA0
D7
PA7
244
DATA0 DATA7
DIR
-G1 -G2
-WR
G H L L
DIR X L H
FUNKCIÓ TS B→A A→B
-WR -OBF
-RD IO/-M -AEN -INTA -RDY
READY + adatbusz
Adatbusz + vezérlő logika:
7414 -ACK PC6
AC
PC0
-CS +5V Cím AB7
SC
360 ns
8255A
vezérlés
AB2
PC7 ∆t
dekóder
-AEN
AO
PC1
ERROR
PC4
SO
A B C
AB2 AB3 AB4 AB5
7400 7486
-E1 -E2 E3
Vonal lezárás
INTRa PC3 AB0 AB1
A0 A1
-Y0 -Y1 -Y2 -Y3 -Y4 -Y5 -Y6 -Y7
-CS55
7404
74LS138
AB6
RES
RES AB7
7406 (OC) INT0 INT1 . INT7
IO/-M -AEN -INTA -RDY
-AEN=H: processzor -AEN=L: DMA
+5V
7406 (OC) -RD -WR
IO/-M
IO/-MAEN
AEN
-OBF
∆t
SC
∆t biztosítja hogy DATA0..DATA7 előbb legyen stabil, mint SC 0→1 8255 -OBF↓ max 650 ns minimális időről nem ad tájékoztatást
-G 245
-DIR
245
-WR -OBF max 650 ns
max 350 ns
DATA -OBF max 350 ns
SC -ACK max 350 ns
min 300 ns
A ∆t időzítés előállítása egy 74123 típusú monostabil multivibrátorral (Mono Flop) történik. Az időzítés nagyságát az R és C külső passzív elemekkel állíthatjuk be. Értéket az elemknek diagrammból, vagy az alábbi képlet alapján választhatunk.
t = k ⋅ R ⋅ C(1 + Ahol k=0.28. R +5V
C Q
-A B -CLR
Q
CK -Q
-Q
t
1/2 74123
A ↓ L L x H
B H H H x x
+5V
CLR H ↑ ↑ L H
Q
-Q
L Q0
H -Q0
-OBF B
D
74123
A -CL
-CL 7474
-Q
CK
SC Q
-PR
RES
A működés idődiagramja:
-OBF SC B -Q QD Szoftver:
INIT (felprogramozás) Lépések: . 8255 konfigurálás, munkarekeszek alaphelyzetbe állítása . az IT rutin címét az táblába beilleszteni Munka regiszter és jelzők: KH: D7 K Munka:
D0 H
0.7 ) R
kiviendő karakter Státusz: státusz Kiviteli rutin:
IT rutin: i
INTE
HIBA?
8255
:=0
n n k=1
k:=1
i munka:=[c]
adat 8255 :=(munka)
k:=0
INTE
8255
vége
:=1
vége
A program: ; ;
GLOBAL CONSTANTS
X55 EQU 0A0H X55_A EQU X55 X55_B EQU X55+1 X55_C EQU X55+2 X55_CT EQU X55+3 CW55 EQU 0A3H DISINT EQU 00CH ENINT EQU 00DH ; ENSO EQU 008H PC4 DISSO EQU 009H ; KMASK EQU 080H HMASK EQU 001H PRERR EQU 003H IT1MSK EQU 0FDH EOI EQU 020H ; PUBLIC X55,CW55,DISINT,ENINT,DISSO,ENSO PUBLIC KMASK,HMASK,PRERR,IT1MSK ; ;************************************************************* ; DATA SEGMENT ;************************************************************* ; DSEG PAGE PUBLIC KH,MUNKA,HIBA ; KH: DS 1 MUNKA: DS 1 HIBA: DS 1
;PORT BASE ADDRESS ;PORT A ;PORT B ;PORT C ;CONTROL ;ONTROL WORD ;DISABLE 8255 IT ;ENABLE 825 IT ;ENABLE SO-RESET ;DISABLE SO- SET PC4
;PRINTER ERROR ;IT ENABLE (8259) ;END OF INTERRUPT(8259)
;************************************************************* ; PRINTER IT ;*************************************************************
ADDRESS ; PRIT:
CSEG PUBLIC EXTERN
PAGE PRINIT ITTAB,X59
PUSH MVI OUT LDA OUT MVI STA MVI OUT POP EI RET
PSW A,DISINT X55_CT MUNKA X55_A A,KMASK KH A,EOI X59 PSW
;************************************************************* ; PRINTER INIT ;************************************************************* PRINIT: MVI A,CW55 OUT X55_CT MVI A,DISINT OUT X55_CT MVI A,ENSO OUT X55_CT MVI A,KMASK
;IT TABLE, 8259 BASE ;SAVE REGISTER & FLAG ;DISABLE IT 8255 ;OUTPUT CHARACTER TO A ;K:=1 ;ENABLE NEXT IT (8259)
STA ; ; ;
KH
STORE IT TO ITTABLE MVI STA LXI SHLD
A,0C3H ITTAB+4 H,PRIT ITTAB+5
;JMP CODE ;IT 1 POSITION
IN ANI OUT
X59+1 ITMSK X59+1
;ENABLE IT (8259)
;
; RET END ;************************************************************* ; CHARACTER OUT TO PRINTER ; ; IN: C = CHARACTER TO PRINT ; OUT:CY = 0 - OK ; CY = 1 - ERROR , A = ERROR CODE ; DEST: A,F ;************************************************************* ; CSEG PAGE PUBLIC PRO EXTERN X55,KMASK,HMASK, PRERR EXTERN KH, MUNKA, HIBA ; PRO: IN X55_C ANI PRERR JNZ P1 ;ERROR IN PRINTER LDA KH ANI KMASK JZ PRO ;WAIT MOV A,C ;PRINT STA MUNKA ;NEXT CHAR XRA A STA KH ; K:=0 MVI A,ENINT OUT X55_CT ;ENABLE IT (8255) RET ; P1: STA HIBA ;ERROR IN PRINTER MVI A,HMASK STA KH LDA HIBA STC RET ; END