Giáo trình Vi xử lý - Chương 5: Giao tiếp cống song song - Phạm Hùng Kim Khánh

Tài liu Lp trình hthng  
Chương 5  
Chương 5  
GIAO TIP CNG SONG SONG  
1. Cu trúc cng song song  
Cng song song gm có 4 đường điu khin, 5 đường trng thái và 8 đường dliu  
bao gm 5 chế độ hot động:  
- Chế độ tương thích (compatibility).  
- Chế độ nibble.  
- Chế độ byte.  
- Chế độ EPP (Enhanced Parallel Port).  
- Chế độ ECP (Extended Capabilities Port).  
3 chế độ đầu tiên sdng port song song chun (SPP – Standard Parallel Port) trong  
khi đó chế độ 4, 5 cn thêm phn cng để cho phép hot động tc độ cao hơn. Sơ đồ chân  
ca máy in như sau:  
Chân  
Tín hiu  
STR (Out)  
Mô tả  
1
Mc tín hiu thp, truyn dliu ti máy in  
2
3
4
5
6
7
8
9
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
Bit dliu 0  
Bit dliu 1  
Bit dliu 2  
Bit dliu 3  
Bit dliu 4  
Bit dliu 5  
Bit dliu 6  
Bit dliu 7  
10  
Mc thp: máy in đã nhn 1 ký tvà có khnăng  
nhn na  
ACK (In)  
11  
BUSY (In)  
Mc cao: ký tự đã được nhn; bộ đệm máy in đầy;  
khi động máy in; máy in trng thái off-line.  
12  
13  
14  
PAPER EMPTY (In) Mc cao: hết giy  
SELECT (In)  
Mc cao: máy in trng thái online  
Tự động xung dòng; mc thp: máy in xung  
dòng tự động  
AUTOFEED (Out)  
15  
16  
17  
Mc thp: hết giy; máy in offline; li máy in  
ERROR (In)  
INIT (Out)  
Mc thp: khi động máy in  
Mc thp: chn máy in  
0V  
SELECTIN (Out)  
GROUND  
18-25  
Cng song song có ba thanh ghi có thtruyn dliu và điu khin máy in. Địa chỉ  
cơ sca các thanh ghi cho tt ccng LPT (line printer) tLPT1 đến LPT4 được lưu trữ  
trong vùng dliu ca BIOS. Thanh ghi dliu được định vị ở offset 00h, thanh ghi trang  
Phm Hùng Kim Khánh  
Trang 116  
Tài liu Lp trình hthng  
Chương 5  
thái 01h, và thanh ghi điu khin 02h. Thông thường, địa chcơ sca LPT1 là 378h,  
LPT2 là 278h, do đó địa chca thanh ghi trng thái là 379h hoc 279h và địa chthanh ghi  
điu khin là 37Ah hoc 27Ah. Tuy nhiên trong mt strường hp, địa chca cng song  
song có thkhác do quá trình khi động ca BIOS. BIOS slưu trcác địa chnày như sau:  
Địa chỉ  
Chc năng  
0000h:0408h Địa chcơ sca LPT1  
0000h:040Ah Địa chcơ sca LPT2  
0000h:040Ch Địa chcơ sca LPT3  
Định dng các thanh ghi như sau:  
Thanh ghi dliu (hai chiu):  
7
6
5
4
3
2
1
0
Tín hiu máy in D7 D6 D5 D4 D3 D2 D1 D0  
Chân số  
9
8
7
6
5
4
3
2
Thanh ghi trng thái máy in (chỉ đọc):  
7
6
5
4
3
2
1 0  
x x  
Tín hiu máy in BUSY  
PAPER EMPTY SELECT  
ACK  
10  
ERROR IRQ  
Schân cm  
11  
12 13  
15  
-
-
-
Thanh ghi điu khin máy in:  
7 6  
5
4
3
2
1
0
DIR IRQ  
Tín  
máy in  
hiu x x  
SELECTIN INIT AUTOFEED STROBE  
17 16 14  
Enable  
Schân cm -  
x: không sdng  
IRQ Enable: yêu cu ngt cng; 1 = cho phép; 0 = không cho phép  
-
-
-
1
Chú ý rng chân BUSY được ni vi cng đảo trước khi đưa vào thanh ghi trng  
thái, các bit SELECTIN , AUTOFEED và STROBE được đưa qua cng đảo trước khi đưa  
ra các chân ca cng máy in.  
Thông thường tc độ xlý dliu ca các thiết bngoi vi như máy in chm hơn PC  
nhiu nên các đường ACK , BUSY và STR được sdng cho kthut bt tay. Khi đầu,  
PC đặt dliu lên bus sau đó kích hot đường STR xung mc thp để thông tin cho máy  
in biết rng dliu đã n định trên bus. Khi máy in xlý xong dliu, nó strli tín hiu  
ACK xung mc thp để ghi nhn. PC đợi cho đến khi đường BUSY tmáy in xung thp  
(máy in không bn) thì sẽ đưa tiếp dliu lên bus.  
Phm Hùng Kim Khánh  
Trang 117  
Tài liu Lp trình hthng  
Chương 5  
2. Giao tiếp vi thiết bngoi vi  
2.1. Giao tiếp vi máy tính  
Quá trình giao tiếp vi cng song song dùng 2 chế độ: chế độ chun SPP và chế độ  
mrng. Vic giao tiếp chế độ chun mô tnhư sau:  
13  
25  
12  
24  
11  
23  
10  
22  
9
13  
25  
12  
24  
11  
23  
10  
22  
9
21  
8
21  
8
20  
7
20  
7
19  
6
19  
6
18  
5
18  
5
17  
4
17  
4
16  
3
16  
3
15  
2
15  
2
14  
1
14  
1
Hình 5.1 - Trao đổi dliu qua cng song song gia 2 PC dùng chế độ chun  
Sơ đồ chân kết ni mô tnhư sau:  
PC1  
PC2  
Chc năng  
Chân Chân  
Chc năng  
D0  
2
15  
ERROR  
D1  
D2  
D3  
3
4
5
13  
12  
10  
SELECT  
PAPER EMPTY  
ACK  
BUSY  
D4  
D4  
BUSY  
6
11  
10  
11  
6
5
D3  
ACK  
PAPER EMPTY 12  
4
3
2
D2  
D1  
D0  
SELECT  
13  
15  
ERROR  
GND  
25  
25  
GND  
Ngoài ra, vic kết ni gia 2 máy tính sdng cng song song có thdùng chế độ  
mrng, chế độ này cho phép giao tiếp vi tc độ cao hơn.  
Phm Hùng Kim Khánh  
Trang 118  
Tài liu Lp trình hthng  
Chương 5  
13  
25  
12  
24  
11  
23  
10  
22  
9
13  
25  
12  
24  
11  
23  
10  
22  
9
21  
8
21  
8
20  
7
20  
7
19  
6
19  
6
18  
5
18  
5
17  
4
17  
4
16  
3
16  
3
15  
2
15  
2
14  
1
14  
1
Hình 5.2 - Trao đổi dliu qua cng song song gia 2 PC dùng chế độ mrng  
Sơ đồ chân kết ni mô tnhư sau:  
PC1  
PC2  
Chc năng Chân Chân Chc năng  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
SELECT  
13  
17  
SELECTIN  
INIT  
BUSY  
11  
10  
17  
16  
1
16  
1
ACK  
STROBE  
SELECT  
13  
11  
10  
SELECTIN  
INIT  
BUSY  
ACK  
STROBE  
2.2. Giao tiếp thiết bkhác  
Quá trình giao tiếp vi các thiết bngoi vi có ththc hin thông qua chế độ chun.  
Để đọc dliu, có thdùng mt IC ghép kênh 2Æ1 74LS257 và dùng 4 bit trng thái ca  
cng song song còn xut dliu thì sdng 8 đường dliu D0 – D7.  
Phm Hùng Kim Khánh  
Trang 119  
Tài liu Lp trình hthng  
Chương 5  
74LS06  
9
8
STROBE  
1
10K1  
14  
2
3
4
2
9
8
7
6
5
4
3
2
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
Q0  
Q1  
Q2  
Q3  
Q4  
Q5  
Q6  
Q7  
15  
3
5
7
6
9
12  
15  
16  
19  
16  
4
8
13  
14  
17  
18  
VCC  
17  
5
18  
6
1
19  
7
11  
1
CLK  
OE  
20  
8
21  
9
74LS374  
22  
10  
23  
11  
24  
12  
25  
13  
ACK  
PAPER EMPTY  
74LS257  
SW0-7  
10K  
SELECT  
74LS06  
4
7
2
2
5
3
9
8
7
6
5
4
3
2
1Y  
1A  
Q0  
Q1  
Q2  
Q3  
Q4  
Q5  
Q6  
Q7  
D0  
5
4
2Y  
3Y  
4Y  
2A  
3A  
4A  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
9
11  
14  
6
7
8
13  
14  
17  
18  
BUSY  
2
1
4
6
12  
9
12  
15  
16  
19  
VCC  
3
6
10  
13  
1B  
2B  
3B  
4B  
74LS06  
3
1
AUTO FEED  
SELECT IN  
11  
1
CLK  
OE  
1
15  
A/B  
G
74LS06  
5
74LS374  
Hình 5.3 – Mch giao tiếp đơn gin thông qua cng máy in  
Giao din:  
Hình 5.4 – Giao din ca chưnơg trình giao tiếp vi cng máy in  
Chương trình giao tiếp trên VB sdng thư vin liên kết động để trao đổi dliu vi  
cng máy in. Thư vin IO.DLL bao gm các hàm sau:  
- Hàm PortOut: xut 1 byte ra cng  
Phm Hùng Kim Khánh  
Trang 120  
Tài liu Lp trình hthng  
Chương 5  
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port  
As Integer, ByVal Data As Byte)  
Port: địa chcng, Data: dliu xut  
- Hàm PortWordOut: xut 1 word ra cng  
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal  
Port As Integer, ByVal Data As Integer)  
- Hàm PortDWordOut: xut 1 double word ra cng  
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal  
Port As Integer, ByVal Data As Long)  
- Hàm PortIn: nhp 1 byte tcng, trvgiá trnhp  
Private Declare Function PortIn Lib "IO.DLL" (ByVal  
Port As Integer) As Byte  
- Hàm PortWordIn: nhp 1 word tcng  
Private Declare Function PortWordIn Lib "IO.DLL"  
(ByVal Port As Integer) As Integer  
- Hàm PortDWordIn: nhp 1 double word tcng  
Private Declare Function PortDWordIn Lib "IO.DLL"  
(ByVal Port As Integer) As Long  
Chương trình ngun:  
VERSION 5.00  
Begin VB.Form Form1  
Caption  
=
=
=
=
=
=
=
=
"Printer Interface Example"  
ClientHeight  
ClientLeft  
ClientTop  
ClientWidth  
LinkTopic  
ScaleHeight  
ScaleWidth  
4665  
60  
345  
3585  
"Form1"  
4665  
3585  
StartUpPosition =  
Begin VB.CommandButton cmdReceive  
3
'Windows Default  
Caption  
Height  
Left  
=
=
=
=
=
=
"Receive"  
495  
1200  
18  
TabIndex  
Top  
3960  
1095  
Width  
Phm Hùng Kim Khánh  
Trang 121  
Tài liu Lp trình hthng  
Chương 5  
End  
Begin VB.CheckBox chkSW  
Height  
Index  
Left  
=
=
=
=
=
=
375  
7
1800  
17  
TabIndex  
Top  
3480  
1575  
Width  
End  
Begin VB.CheckBox chkSW  
Height  
Index  
Left  
=
=
=
=
=
=
375  
6
1800  
16  
TabIndex  
Top  
3000  
1575  
Width  
End  
Begin VB.CheckBox chkSW  
Height  
Index  
Left  
=
=
=
=
=
=
375  
5
1800  
15  
TabIndex  
Top  
2520  
1575  
Width  
End  
Begin VB.CheckBox chkSW  
Height  
Index  
Left  
=
=
=
=
=
=
375  
4
1800  
14  
TabIndex  
Top  
2040  
1575  
Width  
End  
Begin VB.CheckBox chkSW  
Height  
Index  
Left  
=
=
=
375  
3
1800  
Phm Hùng Kim Khánh  
Trang 122  
Tài liu Lp trình hthng  
Chương 5  
TabIndex  
Top  
=
=
=
13  
1560  
1575  
Width  
End  
Begin VB.CheckBox chkSW  
Height  
Index  
Left  
=
=
=
=
=
=
375  
2
1800  
12  
TabIndex  
Top  
1080  
1575  
Width  
End  
Begin VB.CheckBox chkSW  
Height  
Index  
Left  
=
=
=
=
=
=
375  
1
1800  
11  
TabIndex  
Top  
600  
1575  
Width  
End  
Begin VB.CheckBox chkSW  
Height  
Index  
Left  
=
=
=
=
=
=
375  
0
1800  
10  
TabIndex  
Top  
120  
1575  
Width  
End  
Begin VB.CommandButton cmdExit  
Caption  
Height  
Left  
=
=
=
=
=
=
"Exit"  
495  
2400  
9
TabIndex  
Top  
3960  
975  
Width  
End  
Begin VB.CommandButton cmdSend  
Phm Hùng Kim Khánh  
Trang 123  
Tài liu Lp trình hthng  
Chương 5  
Caption  
Height  
Left  
=
=
=
=
=
=
"Send"  
495  
0
TabIndex  
Top  
8
3960  
1095  
Width  
End  
Begin VB.Label lblLED  
BackStyle  
Caption  
Height  
Index  
=
=
=
=
=
=
=
=
0
'Transparent  
"LED7"  
375  
7
Left  
240  
7
TabIndex  
Top  
3480  
1095  
Width  
End  
Begin VB.Label lblLED  
BackStyle  
Caption  
Height  
Index  
=
=
=
=
=
=
=
=
0
'Transparent  
"LED6"  
375  
6
Left  
240  
6
TabIndex  
Top  
3000  
975  
Width  
End  
Begin VB.Label lblLED  
BackStyle  
Caption  
Height  
Index  
=
=
=
=
=
=
=
=
0
'Transparent  
"LED5"  
375  
5
Left  
240  
5
TabIndex  
Top  
2520  
975  
Width  
End  
Phm Hùng Kim Khánh  
Trang 124  
Tài liu Lp trình hthng  
Chương 5  
Begin VB.Label lblLED  
BackStyle  
Caption  
Height  
Index  
=
=
=
=
=
=
=
=
0
'Transparent  
"LED4"  
375  
4
Left  
240  
4
TabIndex  
Top  
2040  
975  
Width  
End  
Begin VB.Label lblLED  
BackStyle  
Caption  
Height  
Index  
=
=
=
=
=
=
=
=
0
'Transparent  
"LED3"  
375  
3
Left  
240  
3
TabIndex  
Top  
1560  
975  
Width  
End  
Begin VB.Label lblLED  
BackStyle  
Caption  
Height  
Index  
=
=
=
=
=
=
=
=
0
'Transparent  
"LED2"  
375  
2
Left  
240  
2
TabIndex  
Top  
1080  
975  
Width  
End  
Begin VB.Label lblLED  
BackStyle  
Caption  
Height  
Index  
=
=
=
=
=
=
0
'Transparent  
"LED1"  
375  
1
Left  
240  
1
TabIndex  
Phm Hùng Kim Khánh  
Trang 125  
Tài liu Lp trình hthng  
Chương 5  
Top  
=
=
600  
975  
Width  
End  
Begin VB.Label lblLED  
BackStyle  
Caption  
Height  
Index  
=
=
=
=
=
=
=
=
0
'Transparent  
"LED0"  
375  
0
Left  
240  
0
TabIndex  
Top  
120  
975  
Width  
End  
Begin VB.Shape shpLED  
BorderColor  
FillColor  
FillStyle  
Height  
Index  
=
=
=
=
=
=
=
=
=
&H000000FF&  
&H000000FF&  
0
'Solid  
375  
7
Left  
840  
3
Shape  
'Circle  
Top  
3480  
375  
Width  
End  
Begin VB.Shape shpLED  
BorderColor  
FillColor  
FillStyle  
Height  
Index  
=
=
=
=
=
=
=
=
=
&H000000FF&  
&H000000FF&  
0
'Solid  
375  
6
Left  
840  
3
Shape  
'Circle  
Top  
3000  
375  
Width  
End  
Begin VB.Shape shpLED  
BorderColor  
=
&H000000FF&  
Phm Hùng Kim Khánh  
Trang 126  
Tài liu Lp trình hthng  
Chương 5  
FillColor  
FillStyle  
Height  
Index  
=
=
=
=
=
=
=
=
&H000000FF&  
0
'Solid  
375  
5
Left  
840  
3
Shape  
'Circle  
Top  
2520  
375  
Width  
End  
Begin VB.Shape shpLED  
BorderColor  
FillColor  
FillStyle  
Height  
Index  
=
=
=
=
=
=
=
=
=
&H000000FF&  
&H000000FF&  
0
'Solid  
375  
4
Left  
840  
3
Shape  
'Circle  
Top  
2040  
375  
Width  
End  
Begin VB.Shape shpLED  
BorderColor  
FillColor  
FillStyle  
Height  
Index  
=
=
=
=
=
=
=
=
=
&H000000FF&  
&H000000FF&  
0
'Solid  
375  
3
Left  
840  
3
Shape  
'Circle  
Top  
1560  
375  
Width  
End  
Begin VB.Shape shpLED  
BorderColor  
FillColor  
FillStyle  
Height  
=
=
=
=
=
&H000000FF&  
&H000000FF&  
0
'Solid  
375  
2
Index  
Phm Hùng Kim Khánh  
Trang 127  
Tài liu Lp trình hthng  
Chương 5  
Left  
Shape  
Top  
=
=
=
=
840  
3
'Circle  
1080  
375  
Width  
End  
Begin VB.Shape shpLED  
BorderColor  
FillColor  
FillStyle  
Height  
Index  
=
=
=
=
=
=
=
=
=
&H000000FF&  
&H000000FF&  
0
'Solid  
375  
1
Left  
840  
3
Shape  
'Circle  
Top  
600  
375  
Width  
End  
Begin VB.Shape shpLED  
BorderColor  
FillColor  
FillStyle  
Height  
Index  
=
=
=
=
=
=
=
=
=
&H000000FF&  
&H000000FF&  
0
'Solid  
375  
0
Left  
840  
3
Shape  
'Circle  
Top  
120  
375  
Width  
End  
End  
Attribute VB_Name = "Form1"  
Attribute VB_GlobalNameSpace = False  
Attribute VB_Creatable = False  
Attribute VB_PredeclaredId = True  
Attribute VB_Exposed = False  
'IO.DLL  
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port  
As Integer, ByVal Data As Byte)  
Phm Hùng Kim Khánh  
Trang 128  
Tài liu Lp trình hthng  
Chương 5  
Private Declare Function PortIn Lib "IO.DLL" (ByVal  
Port As Integer) As Byte  
'Variable  
Private BA_LPT As Integer  
Private Sub cmdExit_Click()  
End  
End Sub  
Private Sub cmdReceive_Click()  
Dim n As Integer  
Dim n1 As Integer  
Dim i As Integer  
PortOut BA_LPT + 2, &H8 'SELECTIN = 1  
PortOut BA_LPT + 2, 0 'SELECTIN = 0  
n1 = PortIn(BA_LPT + 1) 'Doc 4 bit thap  
n1 = n1 / &H10  
'Dich phai 4 bit  
'AUTOFEED=1  
PortOut BA_LPT + 2, 2  
n = PortIn(BA_LPT + 1) 'Doc 4 bit cao  
n = n And &HF0  
n = n + n1  
For i = 0 To 7  
chkSW(i).Value = n Mod 2  
If chkSW(i).Value = 0 Then  
chkSW(i).Caption = "Switch " & Str(i) &  
" off"  
Else  
chkSW(i).Caption = "Switch " & Str(i) &  
" on"  
End If  
n = Fix(n / 2)  
Next i  
End Sub  
Private Sub cmdSend_Click()  
Dim t As Integer  
Dim i As Integer  
Phm Hùng Kim Khánh  
Trang 129  
Tài liu Lp trình hthng  
Chương 5  
Dim s As String  
t = 0  
For i = 0 To 7  
t = t + (2 ^ i) * (1 - shpLED(i).FillStyle)  
Next i  
PortOut BA_LPT, t  
PortOut BA_LPT, 1  
PortOut BA_LPT, 0  
End Sub  
'STROBE = 1  
'STROBE = 0  
Private Sub Form_Load()  
BA_LPT = &H378  
PortOut BA_LPT + 2, 0  
End Sub  
Private Sub lblLED_Click(Index As Integer)  
shpLED(Index).FillStyle  
shpLED(Index).FillStyle  
=
1
-
End Sub  
Phm Hùng Kim Khánh  
Trang 130  
pdf 15 trang baolam 28/04/2022 6500
Bạn đang xem tài liệu "Giáo trình Vi xử lý - Chương 5: Giao tiếp cống song song - Phạm Hùng Kim Khánh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_vi_xu_ly_chuong_5_giao_tiep_cong_song_song_pham_h.pdf