โครงสร้างของพอร์ต
การที่จะให้ไมโครคอนโทรลเลอร์ติดต่อกับอุปกรณ์ภายนอกได้ เช่นการรับข้อมูลจากอุปกรณ์ภายนอก (INPUT)หรือการส่งข้อมูลให้กับอุปกรณ์ภายนอก (OUTPUT) ก็จะต้องติดต่อผ่านพอร์ต (PORT) หรืออาจกล่าวได้ว่าพอร์ตคือช่องทางสำหรับการโอนย้ายข้อมูลระหว่งไมโครคอนโทรลเลอร์กับอุปกรณ์ภายนอกนั้นเอง
แสดงโครงสร้างภายในของพอร์ต
การใช้งานไมโครคอนโทรลเลอร์ให้เป็นพอร์ตอินพุต (INPUT PORT)
การกำหนดให้พอร์ตหรือบิตใดๆ ของไมโครคอนโทรลเลอร์เป็นพอร์ตอินพุต หรือส่วนในการรับค่าของข้อมูลเข้ามาดังแสดงในรูป 5.2 จะเริ่มต้นด้วยการเขียนข้อมูลให้กับพอร์ตหรือบิตนั้นๆ เป็นสถานะลอจิก "1" แล้วจึงส่งไปแต่ละบิตของพอร์ตที่ต้องการใช้งาน เพื่อให้เป็นพอร์ตอินพุต ข้อมูลจากอุปกรณ์ภายนอกที่ต่ออยู่ก็จะถูกส่งเข้ามาเก็บไว้ในวงจรบัฟเฟอร์ภายในพอร์ต เพื่อรอให้ซีพียูมาทำการอ่านค่าเข้าไป ดังนั้นอุปกรณ์ภายนอกที่เราจะนำมาเชื่อมต่อกับพอร์ตอินพุต จึงนิยมกำหนดให้ทำงานในสภาวะลอจิก "0"
แสดงการกำหนดเป็นพอร์ตอินพุตโดยให้สถานะเป็น "1" ตำแหน่งบิตที่ต้องการ
1.2 การอ่านค่าลอจิกจากพอร์ต
การอ่านค่าลอจิกจากพอร์ตทำได้ 2 ลักษณะด้วยกันคือ การอ่านค่าจากขาพอร์ตโดยตรง (Read Pin) และ การอ่านค่าจากวงจรแลตซ์ของแต่ละพอร์ต (Read Latch) ในกรณีที่พอร์ตต่อกับขาเบสของทรานซิสเตอร์ * ชนิด NPN ให้เป็นทรานซิสเตอร์สวิตซ์ และที่ขาอิมิตเตอร์ของทรานซิสเตอร์ต่อลงกราวด์ จะได้ผลตรงกันข้ามกับค่าลอจิกที่ส่งออกมา แต่ถ้าหากทำการอ่านค่าลอจิกที่วงจรแลตซ์ (Read Latch) จะได้สถานะลอจิกตรงกับค่าที่ส่งออกพอร์ตจริง ด้วยเหตุผลนี้ในการอ่านค่าลอจิกจากพอร์ตจึงต้องเลือกวิธีการให้เหมาะสมกับอุปกรณ์ที่นำมาต่อด้วย
การอ่านค่าลอจิกจากพอร์ตทำได้ 2 ลักษณะด้วยกันคือ การอ่านค่าจากขาพอร์ตโดยตรง (Read Pin) และ การอ่านค่าจากวงจรแลตซ์ของแต่ละพอร์ต (Read Latch) ในกรณีที่พอร์ตต่อกับขาเบสของทรานซิสเตอร์ * ชนิด NPN ให้เป็นทรานซิสเตอร์สวิตซ์ และที่ขาอิมิตเตอร์ของทรานซิสเตอร์ต่อลงกราวด์ จะได้ผลตรงกันข้ามกับค่าลอจิกที่ส่งออกมา แต่ถ้าหากทำการอ่านค่าลอจิกที่วงจรแลตซ์ (Read Latch) จะได้สถานะลอจิกตรงกับค่าที่ส่งออกพอร์ตจริง ด้วยเหตุผลนี้ในการอ่านค่าลอจิกจากพอร์ตจึงต้องเลือกวิธีการให้เหมาะสมกับอุปกรณ์ที่นำมาต่อด้วย
แสดงสถานะของทรานซิสเตอร์ชนิด NPN เมื่อนำมาต่อเป็นทรานซิสเตอร์สวิตซ์
การใช้งานไมโครคอนโทรลเลอร์ให้เป็นพอร์ตเอาต์พุต(OUTPUT PORT)
การกำหนดให้มีลักษณะเป็นพอร์ตเอาต์พุต เราสามารถจะส่งข้อมูลที่เป็นลอจิกที่ต้องการออกไปได้โดยตรง เช่นถ้าเราต้องการส่งข้อมูลที่เป็นสถานะลอจิก "0" ออกไปทางพอร์ต P1 ทั้ง 8 บิต ก็สามารถที่จะเขียน จะทำให้เอาต์พุตของวงจรแลตซ์เป็นสถานะลอจิก "0" ก็สามารถเขียนข้อมูล "1" ไปยังวงจรแลตซ์ วงจรขับก็จะหยุดการทำงานเป็นผลทำให้ที่ขาของพอร์ตเชื่อมต่อกับวงจรพูลอัปภายในเกิดเป็นสถานะลอจิก "1" ที่ขาพอร์ตนั้น ซึ่งจะคล้ายกับการกำหนดให้เป็นขาอินพุต เพียงแต่แตกต่างกันที่กระบวนการในการเคลื่อนย้ายข้อมูล โดยถ้าเป็นอินพุต จะมีสัญญาณมาอ่านข้อมูลที่บัฟเฟอร์ แต่ถ้าเป็นเอาต์พุตจะไม่มีการอ่านข้อมูลที่บัฟเฟอร์แต่อย่างใด เว้นแต่ในกรณีที่ต้องการตรวจสอบข้อมูลที่ส่งออกมาทางเอาต์พุตเท่านั้น
การกำหนดให้มีลักษณะเป็นพอร์ตเอาต์พุต เราสามารถจะส่งข้อมูลที่เป็นลอจิกที่ต้องการออกไปได้โดยตรง เช่นถ้าเราต้องการส่งข้อมูลที่เป็นสถานะลอจิก "0" ออกไปทางพอร์ต P1 ทั้ง 8 บิต ก็สามารถที่จะเขียน จะทำให้เอาต์พุตของวงจรแลตซ์เป็นสถานะลอจิก "0" ก็สามารถเขียนข้อมูล "1" ไปยังวงจรแลตซ์ วงจรขับก็จะหยุดการทำงานเป็นผลทำให้ที่ขาของพอร์ตเชื่อมต่อกับวงจรพูลอัปภายในเกิดเป็นสถานะลอจิก "1" ที่ขาพอร์ตนั้น ซึ่งจะคล้ายกับการกำหนดให้เป็นขาอินพุต เพียงแต่แตกต่างกันที่กระบวนการในการเคลื่อนย้ายข้อมูล โดยถ้าเป็นอินพุต จะมีสัญญาณมาอ่านข้อมูลที่บัฟเฟอร์ แต่ถ้าเป็นเอาต์พุตจะไม่มีการอ่านข้อมูลที่บัฟเฟอร์แต่อย่างใด เว้นแต่ในกรณีที่ต้องการตรวจสอบข้อมูลที่ส่งออกมาทางเอาต์พุตเท่านั้น
แหล่งที่มา http://adisak-diy.com/page28.html
ไม่มีความคิดเห็น:
แสดงความคิดเห็น