![]() |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
จากรูปจะเป็นCard ISA ซึ่งสามารถ เสียบไว้ในสล๊อทของ PC ได้เลยแล้วก็หาสายแพ ชนิดเดียวกับที่ใช้ในฮาร์ดดิสนั้นละครับ เจ้าตัว IC 8255 เป็น Programmable Peripheral Interface (PPI) ใช้ในการ Interface ระหว่าง PC กับ อุปกรณ์ภายนอกซึ่งสามารถทำหน้าที่ได้เป็นทั้งPort Input และ Port Output ขนาด 8 บิต จำนวน 3 พอร์ต โดยการเขียนโปรแกรมควบคุม ซึ่งตัว IC 8255 ประกอบด้วยขาสัญญาณทั้งหมด 40 ขาแบ่งได้ 4 กลุ่ม มีรายละเอียดดังนี้ 1. สัญญาณของ Input และ Output Port 2. สัญญาณ Data 3. สัญญาณ Address 4. สัญญาณ Control การใช้ Card8255 ให้ทำหน้าที่ Input หรือ Output ก็ได้ โดยกำหนดโหมดการทำงานได้ 3 โหมด คือ - โหมด 0 (Basic input และ Output) - โหมด 1(Strobed input และ Output) -โหมด 2(Bi-Directional Bus) สำหรับรายละเอียดเกี่ยวกับ Card I/O 8255 ไว้ผมจะเขียนเป็นหัวข้อต่างหาก แต่ตอนนี้เรามาใช้งานเพื่อท่านผู้อ่านท่านใดมีอยู่แล้วจะลองกันเลยไงครับ ส่วนในการเขียนโปรแกรมก็จะไม่ต่างจาก การเขียนโปรแกรมที่ใช้กับ Printer Port ดังที่กล่าวมาหรอกครับ ที่มีเพิ่มเข้ามาก็คือกำหนด Port Control และค่าโหมดการ ทำงานให้กับ Port Control ของ I/O 8255 แต่ Card ISA ที่ผมใช้นี้สามารถ Set Dip SW (ดิปสวิทช์) ตั้งตำแหน่งเบอร์ Port Control ของ Card ได้โดยการปรับ Dip Sw นั้นจะต้องไม่ให้ไปตรงกับตำแหน่ง Port ของเครื่องคอมพิวเตอร์คุณ ในที่นี้ผมCard 8255 ได้ Set Dip SW. ตั้งค่า Port ไว้ที่ 300H &H300 = Port A ใน Card 8255 &H301 = Port B ใน Card 8255 &H302 = Port C ใน Card 8255 &H303 = Port Control ใน Card 8255 ประกาศตัวแปรไว้ใน Form ดังนี้ Dim PortDataA ,PortDataB , PortDataC ' ข้อมูลที่ส่งไปที่พอร์ต Const AddressA = &H300, AddressB = &H301, AddressC = &H302 ' ค่าตำแหน่งของพอร์ต Const ControlPort=&H303 ' ค่าตำแหน่งพอร์ตควบคุม Conts ModeSelect=&H80 ' โหมดการทำงาน จาก Code ด้านบนจะเห็นว่ามีค่า Const ModeSelect=&H80 เป็นการเลือกโหมดการทำงานโดยกำหนดให้ที่ตำแหน่ง Port Control มีค่า =&H80 ซึ่งทำให้ Port A,B,C เป็น Output Port การเลือกโหมดเพื่อกำหนดการใช้งานของ I/O Port เช่น ให้ Port A,Port B เป็น Output และ Port C เป็น input ก็จะต้องกำหนดค่าให้ ที่ตำแหน่ง Port Control=&H89 ซึ่งตารางต่อไปนี้จะเป็นค่าที่ใช้กำหนด การทำงานของพอร์ต ตารางการกำหนดค่าควบคุมพอร์ตสำหรับCard I/O 8255 ![]() การเขียนโค๊ดสำหรับส่งค่าออกพอร์ตCard I/O 8255 โค๊ดส่วนนี้เราจะต้องเขียนใน View code เมื่อใช้ Visaul Basic เขียนโปรแกรม โดยเลือกใช้ โพซีเดอร์ ใดๆในโปรแกรมที่เราสร้างก็ได้แต่ ในที่นี้เราจะเขียนไว้ที่ โพซีเดอร์ Command1_Cilck(),Command2_Cilck(),Command3_Cilck() เพื่อสำหรับทดสอบการส่งค่าทั้ง 3 พอร์ต โดยจะรับค่ามาจาก Textbox1 สำหรับ พอร์ตA , Textbox2 สำหรับ พอร์ตB ,Textbox3 สำหรับ พอร์ตC และ Label1, Label2, Label3 เป็นการแสดงค่า Input Port ที่ส่งค่าไป ดูการจัดวางตำแหน่งตามรูป ![]() Private Sub Command1_Click() PortDataA = Val("&H" & Text1.Text) 'เก็บค่าในTextbox1 ที่จะส่งออกไว้ในตัวแปร Call Out(AddressA, PortDataA) 'ส่งค่าออกไปที่Port A Label1.Caption = Hex(Inp(AddressA)) 'แสดงค่า Input Port A เป็นเลขฐาน16 End Sub โค๊ดในโพซีเดอร์ Command2_Cilck() Private Sub Command2_Click() PortDataB = Val("&H" & Text2.Text) 'เก็บค่าในTextbox2 ที่จะส่งออกไว้ในตัวแปร Call Out(AddressB, PortDataB) 'ส่งค่าออกไปที่PortB Label2.Caption = Hex(Inp(AddressB)) 'แสดงค่า Input Port B เป็นเลขฐาน16 End Sub โค๊ดในโพซีเดอร์ Command3_Cilck() Private Sub Command3_Click() PortDataC = Val("&H" & Text3.Text) 'เก็บค่าในTextbox3 ที่จะส่งออกไว้ในตัวแปร Call Out(AddressC, PortDataC) 'ส่งค่าออกไปที่Port C Label3.Caption = Hex(Inp(AddressC)) 'แสดงค่า Input Port C เป็นเลขฐาน16 End Sub โค๊ดทั้งหมดที่กล่าวมาเป็นการเขียนควบคุมพอร์ตของ Card I/O 8255 ที่ใช้ IC เพียงตัวเดียว แต่ถ้าเราซ้อจากร้าน R&D อาจจะมี IC ถึง 3 ตัว ซึ่งสามารถใช้พอร์ต I/O ได้มากขึ้นอีกรวมเป็น 9 พอร์ต โดยมี Connector 34 Pin = 3 ตัว ถ้าเราเขียนโปรแกรมเพื่อใช้งานจะต้องเพิ่มเติมข้อกำหนดของการอ้างอิงตำแหน่งพอร์ตใหม่ดังนี้
เครื่องหมาย XX คือค่าที่เราสามารถเลือกตำแหน่งเริ่มต้นของพอร์ตโดยจากการตั้งค่าที่ Dip SW. ใน Card I/O 8255 ตามตารางดังต่อไปนี้
ตำแหน่งพอร์ตเริ่มที่ = 300H
ตำแหน่งพอร์ตเริ่มที่ = 280H
ตำแหน่งพอร์ตเริ่มที่ = 200H รายละเอียดของ Card I/O 8255 อาจเปลี่ยนแปลงได้ซึ้งสามารถดูได้จากคู่มือที่มีมาให้ตอนที่เราซื้อ Card มา แต่ถ้าหากลองทำเองก็ต้องไปหาซื้อ Card ISA เอนกประสงค์ และอุปกรณ์ต่างๆ แถวย่านบ้านหม้อ มาทำดู ขอแนะนำครับให้ซื้อที่เป็นสำเร็จรูปจะดีกว่าครับจะถูกและเร็วกว่ามาทำเองอีกทั้งงบอาจบานปลายครับ สิ่งที่ได้รับจากบทความนี้ 1) รู้จักวิธีการเขียนโปรแกรมด้วย Visual Basic ควบคุมการทำงานของ I/O Parallel Port 2) รู้จักวิธีการประยุกต์ใช้ File DLL มาช่วยในการเขียนโปรแกรม เนื่องมาจากการที่ไม่สามารถเขียนโปรแกรมควบคุมพอร์ตใน Visual Basic ได้โดยตรง 3) รู้จักวิธีใช้งานโดยการเขียนโปรแกรมด้วย API จากการใช้ไฟล์ DllPort.Dll 4) รู้จักวิธีใช้งานจาก Card I/O 8255 ซึ่งเป็น Card ISA ขยายพอร์ต Parallel |
Copyright (c)2000-2002 ThaiBit All rights reserved. Contact webmaster :Thaibit@mail.hypermart.net |