ไมโครโปรเซสเซอร ( Microprosesor )
2.12 ทฤษฎีเบื้องต้นไมโครคอนโทรลเลอร์ MCS-51 ( ธีรวัฒน์ ประกอบผล , 2550 )
การนำไมโครคอนโทรลเลอร์ มาใช้งานเราต้องมารู้จักคุณสมบัติต่างๆ ก่อนดังนี้
การนำไมโครคอนโทรลเลอร์ มาใช้งานเราต้องมารู้จักคุณสมบัติต่างๆ ก่อนดังนี้
1. ) โครงสร้างของ MCS-51
ไมโครคอนโทรลเลอร์ ตระกูล MCS-51 มีจำนวนมาก ขึ้นกับโครงสร้างภายใน บางเบอร์มีหน่วยความจำ ภายใน เป็นแบบรอม บางเบอร์เป็นแบบอีพรอม บางเบอร์มีแรมภายใน 128 ไบท์ บางเบอร์มี 256 ไบท์ เป็นต้น คุณสมบัติที่สำคัญของ MCS-51 มีดังนี้
- หน่วยความจำรอม 4 กิโลไบท์
- หน่วยความจำแรม 128 ไบท์
- พอร์ทอินพุทและเอาต์พุต ขนาด 8 บิต 4 พอร์ต
- Timer 16 บิต 2 ตัว
- สามารถอินเทอร์รัพท์ได้ 5 แหล่ง
- วงจรออสซิลเลเตอร์และวงจรนาฬิกาบนชิพ
- พอร์ทอนุกรมสามารถรับส่งข้อมูลแบบ Full Duplex ความเร็วสูง
- อ้างหน่วยความจำโปรแกรมภายนอกได้ 64 กิโลไบท์
- อ้างหน่วยความจำข้อมูลภายภายนอกได้ 64 กิโลไบท์
- สามารถประมวลผลทีละบิต
- อ้างหน่วยความจำแบบบิตได้ 210 ตำแหน่ง
ไมโครคอนโทรลเลอร์ ตระกูล MCS-51 มีจำนวนมาก ขึ้นกับโครงสร้างภายใน บางเบอร์มีหน่วยความจำ ภายใน เป็นแบบรอม บางเบอร์เป็นแบบอีพรอม บางเบอร์มีแรมภายใน 128 ไบท์ บางเบอร์มี 256 ไบท์ เป็นต้น คุณสมบัติที่สำคัญของ MCS-51 มีดังนี้
- หน่วยความจำรอม 4 กิโลไบท์
- หน่วยความจำแรม 128 ไบท์
- พอร์ทอินพุทและเอาต์พุต ขนาด 8 บิต 4 พอร์ต
- Timer 16 บิต 2 ตัว
- สามารถอินเทอร์รัพท์ได้ 5 แหล่ง
- วงจรออสซิลเลเตอร์และวงจรนาฬิกาบนชิพ
- พอร์ทอนุกรมสามารถรับส่งข้อมูลแบบ Full Duplex ความเร็วสูง
- อ้างหน่วยความจำโปรแกรมภายนอกได้ 64 กิโลไบท์
- อ้างหน่วยความจำข้อมูลภายภายนอกได้ 64 กิโลไบท์
- สามารถประมวลผลทีละบิต
- อ้างหน่วยความจำแบบบิตได้ 210 ตำแหน่ง
ตัวอย่าง ไมโครคอนโทรลเลอร์ตระกูล MCS-51 และลักษณะต่างๆ สามารถแสดงได้ ดังตาราง 2.1 สำหรับไดอะแกรมโครงสร้างภายในแสดงภาพประกอบ 2.25
ตาราง 2.1 ไมโครคอนโทรลเลอร์ตระกูล MCS-51 เบอร์ต่างๆ
ตาราง 2.1 ไมโครคอนโทรลเลอร์ตระกูล MCS-51 เบอร์ต่างๆ
เบอร์
|
หน่วยความจำโปรแกรมบนชิพ
|
หน่วยความจำข้อมูลบนชิพ
|
TIMERS
|
8051
|
4 K ROM
|
128 bytes
|
2
|
8031
|
-
|
128 bytes
|
2
|
8751
|
4 K EPROM
|
128 bytes
|
2
|
8052
|
8 K ROM
|
128 bytes
|
3
|
8032
|
-
|
128 bytes
|
3
|
8752
|
8 K EPROM
|
128 bytes
|
3
|

ภาพประกอบ 2.25 โครงสร้างภายในของ MCS-51
การจัดขาต่าง ๆ ของ MCS-51 ไอซี ไมโครคอนโทรลเลอร์ 8051 โครงสร้าง ไอซี เป็นแบบ DIP มีขาทั้งหมด 40 ขา โดยขาต่างๆ เป็นขาพอร์ต อินพุท ขาพอร์ตเอาต์พุต ขาสัญญาณควบคุม ขาตำแหน่งหน่วยความจำข้อมูลดังภาพ ประกอบ 2.26

ภาพประกอบ 2.26 ขาต่างๆ ของ 8051
ความหมายขาต่างๆ มีดังนี้
- พอร์ต 0 (Port 0) ได้แก่ขา 32-39 สามารถเป็นพอร์ตอินพุทและเอาต์พุตได้ซึ่งในการติดต่อ กับหน่วยความจำภายนอก สามารถเป็นขาบัสตำแหน่ง และบัสข้อมูลได้
- พอร์ต 1 (Port 1) ได้แก่ขา 1-8 เป็นพอร์ต 8 บิต สามารถอ้างทีละบิตได้
- พอร์ต 2 (Port 2) ได้แก่ขา 21-28 สามารถทำงานได้ 2 หน้าที่ เป็นพอร์ต 8 บิต และเป็นขาแอดเดรส 8 บิต ในการอ้างหน่วยความจำภายนอก
- พอร์ต 3 (Port 3) ได้แก่ขา 10-17 สามารถทำงานได้ 2 หน้าที่ เป็นพอร์ตอินพุทและเอาต์พุต และเป็นขาควบคุมต่างๆ ดังตาราง 2.2
ตาราง 2.2 แสดงบิตและหน้าที่ต่างๆ ของพอร์ต 3
บิต
|
ชื่อ
|
หน้าที่พิเศษ
|
P3.0
|
RXD
| ใช้รับข้อมูลทางพอร์ทอนุกรม |
P3.1
|
TXD
| ใช้ส่งข้อมูลทางพอร์ทอนุกรม |
P3.2
|
INT0
| อินเทอร์รัพท์ภายนอกหมายเลข 0 |
P3.3
|
INT1
| อินเทอร์รัพท์ภายนอกหมายเลข 1 |
P3.4
|
T0
| ตัวจับเวลา / ตัวนับ ตัวที่0 |
P3.5
|
T1
| ตัวจับเวลา / ตัวนับ ตัวที่1 |
P3.6
|
WR
| สัญญาณเขียนข้อมูลหน่วยความจำภายนอก |
P3.7
|
RD
| สัญญาณอ่านข้อมูลหน่วยความจำภายนอก |
(Program Store Enable) ขา
ได้แก่ขา 29 เป็นขาที่ส่งสัญญาณออกขานี้ทำงานแอคทีฟเมื่อ MCS-51 ต้องการอ่าน Codeโปรแกรมภายนอก โดยปกติถ้าหน่วยความจำภายนอกเป็นอีพรอมขา
ต่อกับขา Output Enable
ของอีพรอม
- ALE (Address Latch Enable) เนื่องจากพอร์ท 0 สามารถเป็นขาอ้างตำแหน่ง และขาข้อมูล MCS-5 ซึ่งมีขา ALE ได้แก่ขา 30 ขานี้ใช้ผสมสัญญาณบัสตำแหน่งของพอร์ต 0 ในการใช้งานระบบ MCS-51 นั้น ต้องมี อุปกรณ์ มาต่อกับพอร์ต 0 ที่ทำหน้าที่ Latch สัญญาณบัสตำแหน่ง เมื่อ MCS-51 ติดต่อกับ หน่วยความจำ ภายนอก MCS-51 ส่งสัญญาณบัสตำแหน่งออกมาก่อนทาง พอร์ต 0 จากนั้นส่งสัญญาณ ALE มา Latch อุปกรณ์ภายนอก ให้เก็บค่าบัสตำแหน่งของพอร์ต 0 ไว้เพื่อใช้พอร์ต 0 เป็นบัสข้อมูลต่อไป
-
(External Access) ขา
ได้แก่ขา 31 ในสภาวะเป็นลอจิก 1 ใช้กับเบอร์ 8051/8052 เพื่อให้อ่าน โปรแกรมจากหน่วยความจำภายใน และในสภาวะเป็นลอจิก 0 ทำให้ MCS-51 ทำโปรแกรมโดย อ่านจาก หน่วยความจำโปรแกรมภายนอก (เมื่อ
เป็น 0 ขา
ทำการแอคทีฟ) หากเป็นเบอร์ 8031หรือ 8032 ขา
เป็น 0 เสมอ เพราะไม่มีโปรแกรมหน่วยความจำภายใน หากใช้เบอร์ 8051/8052 ซึ่งมีหน่วยความจำ ภายในและให้ขา
เป็น 0 ซึ่งหยุดการทำงานของรอมภายใน และอ่านโปรแกรมจากอีพรอมภายนอกแทน
- RST (Reset) ขา RST ได้แก่ขา 9 เป็นขารีเซต MCS-51 โดยให้เป็นสภาวะลอจิก 1 อย่างน้อย 2 Machine Cycles จึงสามารถรีเซตระบบได้
- ความถี่สัญญาณนาฬิกาบนชิพ (ON-Chip Oscillator Inputs) ได้แก่ขา 18-19 เป็นวงจรออสซิลเลเตอร์บนชิพ ซึ่งปกติทำการต่อคริสตัล ความถี่ 12 MHz กับตัวเก็บประจุ หรืออาจใช้สัญญาณนาฬิกาจากต้นกำเนิดชนิด ทีทีแอลต่อกับ XTAL1 และ XTAL2
2. โครงสร้างของพอร์ตอินพุทและเอาต์พุต (I/O Port Structure)
ขาของพอร์ต แสดงโครงสร้างภายในได้ ดังภาพประกอบ 2.27 โดยมีโครงสร้างเป็น Field-Effect Transistor ต่ออยู่กับขาภายนอก และมีความต้านทานต่อ Pull-Up อยู่สำหรับพอร์ต 1, 2, 3 เมื่อเป็นพอร์ต 0 ไม่มีตัวต้านทาน Pull-Up ภายใน เพราะต้องใช้เป็นขาบัสตำแหน่ง และบัสข้อมูล
ขาของพอร์ต แสดงโครงสร้างภายในได้ ดังภาพประกอบ 2.27 โดยมีโครงสร้างเป็น Field-Effect Transistor ต่ออยู่กับขาภายนอก และมีความต้านทานต่อ Pull-Up อยู่สำหรับพอร์ต 1, 2, 3 เมื่อเป็นพอร์ต 0 ไม่มีตัวต้านทาน Pull-Up ภายใน เพราะต้องใช้เป็นขาบัสตำแหน่ง และบัสข้อมูล

ภาพประกอบ 2.27 โครงสร้างพอร์ต

ภาพประกอบ 2.28 การต่อพอร์ตกับบัส
พอร์ตนี้สามารถเป็นอินพุทและเอาต์พุตกับอุปกรณ์ภายนอกได้ ในการอ่านข้อมูลจากพอร์ตอ่านได้ 2 แบบได้แก่ Read Latch และ Read Pin โดย Read Latch หมายถึงการอ่านข้อมูลที่ถูก Latch เอาไว้เข้าสู่บัสภายในของ MCS-51 ดังภาพประกอบ 2.28
3. โครงสร้างหน่วยความจำ
หน่วยความจำสำหรับ MCS-51 มี 2 ชนิดได้แก่หน่วยความจำที่ใช้เก็บโปรแกรมรอมกับหน่วยความจำที่ใช้เก็บข้อมูล ในการประมวลผลแรมMCS-51บาง เบอร์ เช่น 8051 8052 มีหน่วยความจำภาย ในชิพ และ MCS-51ทุกเบอร์สามารถอ้าง หน่วยความจำ โปรแกรม ภายนอกได้มาก ที่สุด 64 กิโลไบท์ สำหรับหน่วยความจำแรมภายในประกอบด้วย พื้นที่ใช้งานทั่วไป รีจีสเตอร์ชุด พื้นที่ใช้งานระดับบิต และรีจีสเตอร์ฟังก์ชั่นพิเศษ
หน่วยความจำสำหรับ MCS-51 มี 2 ชนิดได้แก่หน่วยความจำที่ใช้เก็บโปรแกรมรอมกับหน่วยความจำที่ใช้เก็บข้อมูล ในการประมวลผลแรมMCS-51บาง เบอร์ เช่น 8051 8052 มีหน่วยความจำภาย ในชิพ และ MCS-51ทุกเบอร์สามารถอ้าง หน่วยความจำ โปรแกรม ภายนอกได้มาก ที่สุด 64 กิโลไบท์ สำหรับหน่วยความจำแรมภายในประกอบด้วย พื้นที่ใช้งานทั่วไป รีจีสเตอร์ชุด พื้นที่ใช้งานระดับบิต และรีจีสเตอร์ฟังก์ชั่นพิเศษ
3.1 หน่วยความจำใช้งานทั่วไป
จากภาพประกอบ 2.29 แสดงถึง หน่วยความจำแรม สำหรับใช้งานทั่วไปจำนวน 80 ไบท์ ตั้งแต่ ตำแหน่ง 30H ถึง 7FH ซึ่งตำแหน่งนี้สามารถอ้างตำแหน่ง Direct Addressing Mode หรือ Indirect Addressing Mode ได้
จากภาพประกอบ 2.29 แสดงถึง หน่วยความจำแรม สำหรับใช้งานทั่วไปจำนวน 80 ไบท์ ตั้งแต่ ตำแหน่ง 30H ถึง 7FH ซึ่งตำแหน่งนี้สามารถอ้างตำแหน่ง Direct Addressing Mode หรือ Indirect Addressing Mode ได้

ภาพประกอบ 2.29 ตำแหน่งของหน่วยความจำแบบไบท์และแบบบิต
3.2 Bit - Addressable RAM
ใน MCS-51 มีหน่วยความจำซึ่งสามารถอ้างข้อมูลในระดับบิตได้ตั้งแต่ตำแหน่ง 20H ถึง 2FH รวม 16 ไบท์ โดยสามารถ SET , CLEAR , AND , OR ทางลอจิกได้ จำนวนบิตที่ใช้งานได้ทั้งหมดมีจำนวน128 บิต ( 8 บิต X 16ไบท์ ) เมื่อต้องการรีเซตบิตตำแหน่งที่ 67H สามารถเขียนคำสั่งได้ดังนี้ SETB 67H จากภาพประกอบ 2.29 แสดงบิตที่ 67H อยู่ในตำแหน่งไบต์ที่ 2CH
3.3 ชุดรีจีสเตอร์ (Register Banks)
หน่วยความจำข้อมูลภายใน ที่ใช้เป็นชุดรีจีสเตอร์ มีทั้งหมด 32 ตำแหน่ง โดยมี 4 ชุด แต่ละชุดมีรีจีสเตอร์ 8 ตัว คือ R0 ถึง R7 โดยชุดแรกอยู่ในตำแหน่ง 00H - 07H เมื่ออ่านค่าจากตำแหน่ง 05H มาเก็บไว้ในรีจีสเตอร์ A เขียน โปรแกรม ได้ดังนี้ MOV A,R5
3.1.1 รีจีสเตอร์ฟังก์ชั่นพิเศษ (Special Function Register)
ใน MCS-51 รีจีสเตอร์ใช้หน่วยความจำแรมภายในชิพ โดยส่วนหนึ่งเป็น รีจีสเตอร์พิเศษ ซึ่งมีทั้งหมด 21 ตัว โดยรีจีสเตอร์พิเศษต่างๆ เริ่มที่หน่วยความจำ ตั้งแต่ 80H ถึง FFH ซึ่งมีทั้งหมด 128 ตำแหน่ง แต่เป็นรีจีสเตอร์ ฟังก์ชั่นพิเศษ เพียง 21 ตำแหน่ง หากเป็น8032 / 8051 ใช้ 26 ตำแหน่ง หรือมี SFR 26 ตัว จาก ภาพประกอบ 2.29 แสดงตำแหน่งหน่วยความจำของรีจีสเตอร์ บางตัวสามารถเข้าถึงข้อมูลแบบบิตได้ เช่นถ้าเขียน โปรแกรมเป็น SETB 0E0H เป็นการรีเซตบิต 0 ของ Accumulator เนื่องจากตำแหน่ง E0H เป็นตำแหน่งของรีจีสเตอร์ A และเป็นตำแหน่งบิตแรกของ รีจีสเตอร์ A ด้วย คำสั่ง SETB (Set Bit) มีผลต่อบิตเท่านั้น แต่ไม่มีผลต่อไบต์ หากต้อง การ ติดต่อกับพอร์ต 1 ซึ่งไบท์ ของพอร์ท 1 อยู่ที่ตำแหน่ง 90H แต่ตำแหน่งของระดับบิตอยู่ที่ตำแหน่ง 90H ถึง 97H รีจีสเตอร์ในกลุ่ม รีจีสเตอร์ฟังก์ชั่นพิเศษมีดังนี้
ก. Program Status Word
รีจีสเตอร์นี้เรียกย่อๆ ว่า PSW อยู่ที่ตำแหน่ง D0H ซึ่งสามารถเข้าถึงข้อมูลระดับบิตได้โดยรีจีสเตอร์นี้ เป็นตัวบอกสภาวะต่าง ๆ ของไมโครคอนโทรลเลอร์ความหมายของแต่ละบิตแสดงได้ดังตาราง 2.3
รีจีสเตอร์นี้เรียกย่อๆ ว่า PSW อยู่ที่ตำแหน่ง D0H ซึ่งสามารถเข้าถึงข้อมูลระดับบิตได้โดยรีจีสเตอร์นี้ เป็นตัวบอกสภาวะต่าง ๆ ของไมโครคอนโทรลเลอร์ความหมายของแต่ละบิตแสดงได้ดังตาราง 2.3
ตาราง 2.3 แสดงบิตและหน้าที่ต่าง ๆ ใน PSW

ข. รีจีสเตอร์ B (B Register)
รีจีสเตอร์ B อยู่ตำแหน่ง F0H ของหน่วยความจำข้อมูลภายใน เป็นรีจีสเตอร์ที่สามารถใช้งานทั่วไปได้ โดยทั่วไปรีจีสเตอร์นี้ใช้คูณหรือหารกับรีจิสเตอร์ Accumulator เช่นการทำคำสั่ง MUL AB ซึ่งเป็นการคูณแบบ 8 บิตโดยผลลัพธ์ที่ได้มีขนาด 16 บิต ซึ่งรีจีสเตอร์ A เก็บค่า 8 บิตต่ำ และรีจีสเตอร์ B เก็บค่า 8 บิตสูง สำหรับการหาร โดยการทำคำสั่ง DIV AB โดยค่าใน A ถูกหารด้วย B ผลลัพธ์ที่ได้เก็บในรีจีสเตอร์ AB โดย B เก็บค่า 8 บิตต่ำ และ A เก็บค่า 8 บิตสูง รีจีสเตอร์ B นี้สามารถเข้าถึงข้อมูลระดับบิตได้ โดยตำแหน่งของบิตคือตำแหน่ง F0H ถึง F7H
ค. ตัวชี้สแตค (Stack Pointer)
Stack Pointer (SP) เป็นรีจีสเตอร์ขนาด 8 บิต อยู่ตำแหน่ง 81H การเขียนค่าเข้าไปในตำแหน่งที่ SP ชี้อยู่นี้ เป็นการ Pushing สำหรับการอ่านค่าที่ SP ชี้อยู่ เป็นการ Poping ค่าของ SP เพิ่มขึ้นหนึ่งก่อนที่เขียนข้อมูลลงไป และลดลงหนึ่ง เมื่ออ่านข้อมูลออกไปหากโปรแกรมทำคำสั่งCall ใช้รีจีส- เตอร์สแตคนี้เก็บค่าตำแหน่งเดิมของโปรแกรม (PC) ก่อนทำ โปรแกรมย่อย เมื่อทำโปรแกรมย่อยเสร็จแล้ว คืนค่าในสแตคให้กับ PC ตามเดิม โดยปกติค่า PC กำหนด ให้ อยู่ในแรมภายใน ต้องการให้มี SP เริ่มที่ตำแหน่ง 60H ต้องเขียนคำสั่งดังนี้ MOV SP,#5FH
Stack Pointer (SP) เป็นรีจีสเตอร์ขนาด 8 บิต อยู่ตำแหน่ง 81H การเขียนค่าเข้าไปในตำแหน่งที่ SP ชี้อยู่นี้ เป็นการ Pushing สำหรับการอ่านค่าที่ SP ชี้อยู่ เป็นการ Poping ค่าของ SP เพิ่มขึ้นหนึ่งก่อนที่เขียนข้อมูลลงไป และลดลงหนึ่ง เมื่ออ่านข้อมูลออกไปหากโปรแกรมทำคำสั่งCall ใช้รีจีส- เตอร์สแตคนี้เก็บค่าตำแหน่งเดิมของโปรแกรม (PC) ก่อนทำ โปรแกรมย่อย เมื่อทำโปรแกรมย่อยเสร็จแล้ว คืนค่าในสแตคให้กับ PC ตามเดิม โดยปกติค่า PC กำหนด ให้ อยู่ในแรมภายใน ต้องการให้มี SP เริ่มที่ตำแหน่ง 60H ต้องเขียนคำสั่งดังนี้ MOV SP,#5FH
ง. รีจีสเตอร์ Data Pointer (DPTR)
รีจีสเตอร์นี้ใช้สำหรับชี้ตำแหน่งรหัสโปรแกรมหรือข้อมูลในหน่วยความจำโดยเป็นรีจีสเตอร์ขนาด 16 บิต ซึ่งประกอบ ด้วยรีจีสเตอร์ 2 ตัว คือ DPL ตำแหน่งที่ 82H โดยเก็บเป็น 8 บิตต่ำ และ DPH ตำแหน่งที่ 83H โดยเก็บค่า 8 บิตสูง รีจีสเตอร์ ทั้งสอง ตัวนี้รวมกันเป็นรีจีสเตอร์ 16 บิต
รีจีสเตอร์นี้ใช้สำหรับชี้ตำแหน่งรหัสโปรแกรมหรือข้อมูลในหน่วยความจำโดยเป็นรีจีสเตอร์ขนาด 16 บิต ซึ่งประกอบ ด้วยรีจีสเตอร์ 2 ตัว คือ DPL ตำแหน่งที่ 82H โดยเก็บเป็น 8 บิตต่ำ และ DPH ตำแหน่งที่ 83H โดยเก็บค่า 8 บิตสูง รีจีสเตอร์ ทั้งสอง ตัวนี้รวมกันเป็นรีจีสเตอร์ 16 บิต
จ. รีจีสเตอร์พอร์ต (Port Registers)
ใน MCS- 51 ค่าของพอร์ตเป็นค่าของหน่วยความจำ หากต้องการส่งข้อมูลจากพอร์ต ทำการอ่านค่าใน ตำแหน่ง ที่หน่วยความจำที่พอร์ตนั้น ใน MCS-51 พอร์ต 0 อยู่ที่ตำแหน่ง 80H ,พอร์ต 1 อยู่ที่ตำแหน่ง 90H , พอร์ต 2 อยู่ที่ตำแหน่ง A0H และพอร์ต 3 อยู่ที่ตำแหน่ง B0H พอร์ต 0 2 และ 3โดยทั่วไปไม่ใช้ หากมีการติดต่อกับหน่วย ความจำภายนอก หรือ ใช้เป็นพอร์ตพิเศษ (เช่น Interrupts ,Serial Port ) โดยปกติแล้วใช้ พอร์ต 1 ในการติดต่อ กับอุปกรณ์ภายนอก พอร์ตทุกพอร์ตสามารถอ้างถึงข้อมูลในระดับบิตได้ เช่น พอร์ต 1 บิต 7 ต่อกับหลอดไฟ ไว้ ดังภาพประกอบ 2.30 โดยมีเกตแบบ OC ช่วยขับกระแส การปิดเปิดหลอดไฟทำได้โดยการรีเซตหรือเคลียร์บิต 7 ของพอร์ต 1 ดังนี้
ใน MCS- 51 ค่าของพอร์ตเป็นค่าของหน่วยความจำ หากต้องการส่งข้อมูลจากพอร์ต ทำการอ่านค่าใน ตำแหน่ง ที่หน่วยความจำที่พอร์ตนั้น ใน MCS-51 พอร์ต 0 อยู่ที่ตำแหน่ง 80H ,พอร์ต 1 อยู่ที่ตำแหน่ง 90H , พอร์ต 2 อยู่ที่ตำแหน่ง A0H และพอร์ต 3 อยู่ที่ตำแหน่ง B0H พอร์ต 0 2 และ 3โดยทั่วไปไม่ใช้ หากมีการติดต่อกับหน่วย ความจำภายนอก หรือ ใช้เป็นพอร์ตพิเศษ (เช่น Interrupts ,Serial Port ) โดยปกติแล้วใช้ พอร์ต 1 ในการติดต่อ กับอุปกรณ์ภายนอก พอร์ตทุกพอร์ตสามารถอ้างถึงข้อมูลในระดับบิตได้ เช่น พอร์ต 1 บิต 7 ต่อกับหลอดไฟ ไว้ ดังภาพประกอบ 2.30 โดยมีเกตแบบ OC ช่วยขับกระแส การปิดเปิดหลอดไฟทำได้โดยการรีเซตหรือเคลียร์บิต 7 ของพอร์ต 1 ดังนี้

ภาพประกอบ 2.30 การใช้ MCS-51 ปิด-เปิดหลอดไฟ
ต้องการเปิดไฟคำสั่งดังนี้ SETB P1.7
ต้องการปิดไฟคำสั่งดังนี้ CLR P1.7
ต้องการปิดไฟคำสั่งดังนี้ CLR P1.7
การติดต่อกับพอร์ทในระดับนี้ ซึ่งใช้คำสั่งในการอ้างข้อมูลระดับบิตได้ เช่น บิต 7 ของพอร์ต 1 ตรงกับตำแหน่งระดับบิต คือ ตำแหน่ง 97H เขียนคำสั่งได้ดังนี้ CLR 97H
ฉ. รีจีสเตอร์เวลา (Timer Registers)
ใน MCS - 51 เบอร์ 8051 มีรีจีสเตอร์ที่ใช้นับ และจับเวลาขนาด 16 บิต 2 ตัวคือ Timer 0 อยู่ที่ตำแหน่ง 8AH และ 8CH โดยตำแหน่ง 8AH หมายถึง TL0 ซึ่งเป็น 8 ไบท์ต่ำ และ 8CH หมายถึง 8 ไบท์สูง TH0 รีจีสเตอร์อีกตัว คือ Timer 1 โดยแบ่งเป็น TL1 อยู่ที่ตำแหน่ง 8BH เป็นไบต์ต่ำและ TH1 อยู่ที่ตำแหน่ง 8DH เป็นไบท์สูง การใช้ Timer ต้องกำหนดการทำงานในรีจีสเตอร์ TMOD (Timer / Counter Mode Control Register) ซึ่งอยู่ที่ตำแหน่ง 88H ก่อน
3.4 พอร์ตอนุกรม (Serial Port Register )
MCS - 51 มีพอร์ตสื่อสารอนุกรมอยู่ภายในชิพซึ่งสามารถรับหรือส่งข้อมูลแบบอนุกรมให้เขียนข้อมูล ไปที่ รีจิสเตอร์ SBUF (Serial Data Buffer) ซึ่งอยู่ที่ตำแหน่ง 99H ถ้าต้องการส่งข้อมูลแบบอนุกรมให้เขียนข้อมูล ไปที่ รีจีสเตอร์นี้ พอร์ทอนุกรมสามารถโปรแกรมให้ทำงานได้ 4 โหมด โดยโปรแกรมผ่านรีจีสเตอร์ SCON (Serial Port Control Register) ตำแหน่ง 98H
ใน MCS - 51 เบอร์ 8051 มีรีจีสเตอร์ที่ใช้นับ และจับเวลาขนาด 16 บิต 2 ตัวคือ Timer 0 อยู่ที่ตำแหน่ง 8AH และ 8CH โดยตำแหน่ง 8AH หมายถึง TL0 ซึ่งเป็น 8 ไบท์ต่ำ และ 8CH หมายถึง 8 ไบท์สูง TH0 รีจีสเตอร์อีกตัว คือ Timer 1 โดยแบ่งเป็น TL1 อยู่ที่ตำแหน่ง 8BH เป็นไบต์ต่ำและ TH1 อยู่ที่ตำแหน่ง 8DH เป็นไบท์สูง การใช้ Timer ต้องกำหนดการทำงานในรีจีสเตอร์ TMOD (Timer / Counter Mode Control Register) ซึ่งอยู่ที่ตำแหน่ง 88H ก่อน
3.4 พอร์ตอนุกรม (Serial Port Register )
MCS - 51 มีพอร์ตสื่อสารอนุกรมอยู่ภายในชิพซึ่งสามารถรับหรือส่งข้อมูลแบบอนุกรมให้เขียนข้อมูล ไปที่ รีจิสเตอร์ SBUF (Serial Data Buffer) ซึ่งอยู่ที่ตำแหน่ง 99H ถ้าต้องการส่งข้อมูลแบบอนุกรมให้เขียนข้อมูล ไปที่ รีจีสเตอร์นี้ พอร์ทอนุกรมสามารถโปรแกรมให้ทำงานได้ 4 โหมด โดยโปรแกรมผ่านรีจีสเตอร์ SCON (Serial Port Control Register) ตำแหน่ง 98H
3.5 อินเทอร์รัพท์ (Interrupt Port Register )
MCS - 51 สามารถอินเทอร์รัพท์ได้ 5 ตำแหน่ง โดยมี 2-Priorily ตัว อินเทอร์รัพท์ทำการ Disable หลังจาก ระบบได้รีเซต และ Enabled หลังจากที่เขียนข้อมูลไปที่รีจีสเตอร์ IE หรือตำแหน่ง A8H ลำดับความสำคัญ สามารถ รีเซตได้ที่รีจีสเตอร์ IP หรือตำแหน่ง B8H
3.6 Control Register (PCON)
รีจีสเตอร์ PCON อยู่ที่ตำแหน่ง 87H ใช้หยุดการทำงานของ MCS - 51 โดยหยุดจ่ายสัญญาณนาฬิกาให้ระบบ ทำให้ข้อมูลต่างๆ ภายใน MCS - 51 ไม่มีการเปลี่ยนแปลงซึ่งสามารถลดพลังงานไฟฟ้าที่จ่ายให้ MCS - 51 ลง
MCS - 51 สามารถอินเทอร์รัพท์ได้ 5 ตำแหน่ง โดยมี 2-Priorily ตัว อินเทอร์รัพท์ทำการ Disable หลังจาก ระบบได้รีเซต และ Enabled หลังจากที่เขียนข้อมูลไปที่รีจีสเตอร์ IE หรือตำแหน่ง A8H ลำดับความสำคัญ สามารถ รีเซตได้ที่รีจีสเตอร์ IP หรือตำแหน่ง B8H
3.6 Control Register (PCON)
รีจีสเตอร์ PCON อยู่ที่ตำแหน่ง 87H ใช้หยุดการทำงานของ MCS - 51 โดยหยุดจ่ายสัญญาณนาฬิกาให้ระบบ ทำให้ข้อมูลต่างๆ ภายใน MCS - 51 ไม่มีการเปลี่ยนแปลงซึ่งสามารถลดพลังงานไฟฟ้าที่จ่ายให้ MCS - 51 ลง
4. หน่วยความจำภายนอก (External Memory)
MCS-51 สามารถอ้างหน่วยความจำข้อมูลภายนอกได้ 64 กิโลไบท์ MCS-51 ใช้พอร์ต 0 ในการอ้างตำแหน่ง หน่วยความจำ 8 บิตล่าง และใช้พอร์ต 0 เป็นพอร์ตข้อมูลด้วย โดยใช้ขา ALE เป็น Latch ข้อมูลพอร์ต 0 และใช้พอร์ต 2 เป็นขาอ้างตำแหน่ง 8 บิตบน (รวมขาอ้างตำแหน่ง 16 เส้น ซึ่งอ้างได้ 64 กิโลไบท์ ) นอกจากพอร์ต 0 ใช้งาน 2 หน้าที่ ในการติดต่อกับหน่วยความจำ ใช้วิธีมัลติเพล็กซ์ระหว่างตำแหน่งกับข้อมูล ถ้าต้องการติดต่อกับหน่วยความจำ ที่เก็บ ข้อมูล 8 บิต และเก็บได้ 64 กิโลไบท์ ต้องใช้สายสัญญาณ 24 เส้นเป็นขาแอดเดรส 16 เส้น และขาข้อมูล 8 เส้น ดังภาพ ประกอบ 2.32 ถ้าใช้วิธีมัลติเพล็กซ์ ใช้ขา A0 - A7 เป็นขาข้อมูล D0- D7 ใช้สายสัญญาณเพียง 16 เส้น ภาพประกอบ 2.31เมื่อต้องการติดต่อกับหน่วยความจำ ทำการส่งสัญญาณแอดเดรส A0 -A15 ออก 16 เส้น จากนั้นขา A0-A7 เปลี่ยน เป็น D0- D7 ในการติดต่อกับหน่วยความจำภายนอก MCS - 51 ใช้วิธีนี้
MCS-51 สามารถอ้างหน่วยความจำข้อมูลภายนอกได้ 64 กิโลไบท์ MCS-51 ใช้พอร์ต 0 ในการอ้างตำแหน่ง หน่วยความจำ 8 บิตล่าง และใช้พอร์ต 0 เป็นพอร์ตข้อมูลด้วย โดยใช้ขา ALE เป็น Latch ข้อมูลพอร์ต 0 และใช้พอร์ต 2 เป็นขาอ้างตำแหน่ง 8 บิตบน (รวมขาอ้างตำแหน่ง 16 เส้น ซึ่งอ้างได้ 64 กิโลไบท์ ) นอกจากพอร์ต 0 ใช้งาน 2 หน้าที่ ในการติดต่อกับหน่วยความจำ ใช้วิธีมัลติเพล็กซ์ระหว่างตำแหน่งกับข้อมูล ถ้าต้องการติดต่อกับหน่วยความจำ ที่เก็บ ข้อมูล 8 บิต และเก็บได้ 64 กิโลไบท์ ต้องใช้สายสัญญาณ 24 เส้นเป็นขาแอดเดรส 16 เส้น และขาข้อมูล 8 เส้น ดังภาพ ประกอบ 2.32 ถ้าใช้วิธีมัลติเพล็กซ์ ใช้ขา A0 - A7 เป็นขาข้อมูล D0- D7 ใช้สายสัญญาณเพียง 16 เส้น ภาพประกอบ 2.31เมื่อต้องการติดต่อกับหน่วยความจำ ทำการส่งสัญญาณแอดเดรส A0 -A15 ออก 16 เส้น จากนั้นขา A0-A7 เปลี่ยน เป็น D0- D7 ในการติดต่อกับหน่วยความจำภายนอก MCS - 51 ใช้วิธีนี้

ภาพประกอบ 2.31 ไดอะแกรมกลุ่มสัญญาณที่ใช้อ่านข้อมูล
5. การติดต่อกับหน่วยความจำโปรแกรมภายนอก
การอ่านข้อมูลที่หน่วยความจำโปรแกรมภายนอก MCS - 51 ส่งค่าตำแหน่งหน่วยความจำออกไป ซึ่งค่า ตำแหน่ง เก็บอยู่ใน PC ส่งออกทางพอร์ต 0 และพอร์ต 2 จากนั้นส่งขา ALE เป็นลอจิก 0 เพื่อ Latch ขาแอดเดรส ของ 8 บิตต่ำ คือพอร์ต 0 และส่งสัญญาณทางขา PSEN เป็นลอจิก 0 เพื่ออ่านข้อมูลซึ่งได้ Op-Code เข้าไปทาง บัสข้อมูล คือพอร์ต 0 ไดอะแกรมเวลาการอ่านข้อมูลจากหน่วยความจำภายนอก แสดงได้ดังภาพประกอบ 2.32
การอ่านข้อมูลที่หน่วยความจำโปรแกรมภายนอก MCS - 51 ส่งค่าตำแหน่งหน่วยความจำออกไป ซึ่งค่า ตำแหน่ง เก็บอยู่ใน PC ส่งออกทางพอร์ต 0 และพอร์ต 2 จากนั้นส่งขา ALE เป็นลอจิก 0 เพื่อ Latch ขาแอดเดรส ของ 8 บิตต่ำ คือพอร์ต 0 และส่งสัญญาณทางขา PSEN เป็นลอจิก 0 เพื่ออ่านข้อมูลซึ่งได้ Op-Code เข้าไปทาง บัสข้อมูล คือพอร์ต 0 ไดอะแกรมเวลาการอ่านข้อมูลจากหน่วยความจำภายนอก แสดงได้ดังภาพประกอบ 2.32

ภาพประกอบ 2.32 ไดอะแกรมการอ่านข้อมูลจากหน่วยความจำโปรแกรมภายนอก
การต่อหน่วยความจำกับ MCS - 51 แสดงได้ดังภาพประกอบ 2.34 โดยขา
ต่อเป็น 0 เพื่อให้ MCS - 51อ่านหน่วย ความจำ โปรแกรมภายนอกสำหรับการ มัลติเพล็กท์ ใช้ฟลิปฟลอป 8 ตัวเบอร์ 74373 เก็บค่าตำแหน่ง 8 บิตต่ำ ไว้ เมื่อ MCS - 51 ส่งค่าตำแหน่งพอร์ตออกไปจากนั้นส่งขา ALE ให้เป็น 0 ซึ่งใช้ขานี้ต่อกับ 74373 เพื่อ Latch ข้อมูลสำหรับ ขา
ต่อกับขา Output Enable
ของหน่วยความจำ ดังภาพประกอบ 2.33




ภาพประกอบ 2.33 การต่อ MCS - 51 กับหน่วยความจำโปรแกรมภายนอก
6. Reset Operation
การรีเซตการทำงานใหม่ของ MCS-51 ให้ลอจิก 1 ที่ขา RST เป็นเวลา 2 Machine Cycles ( 1 Machine Cycle เท่ากับ 12 Clock ) จากนั้นให้กลับเป็นลอจิก 0 การรีเซตอาจทำได้โดยใช้สวิตซ์กด ดังภาพประกอบ 2.34 (ก) หรือใช้วิธี Power-Up โดยใช้ตัว R-C ต่อเป็นวงจรดังภาพประกอบ 2.34 (ข)
การรีเซตการทำงานใหม่ของ MCS-51 ให้ลอจิก 1 ที่ขา RST เป็นเวลา 2 Machine Cycles ( 1 Machine Cycle เท่ากับ 12 Clock ) จากนั้นให้กลับเป็นลอจิก 0 การรีเซตอาจทำได้โดยใช้สวิตซ์กด ดังภาพประกอบ 2.34 (ก) หรือใช้วิธี Power-Up โดยใช้ตัว R-C ต่อเป็นวงจรดังภาพประกอบ 2.34 (ข)


( ก) Manual Restart ( ข ) Power or Restart
ภาพประกอบ 2.34 การรีเซต MCS-51
เมื่อ MCS-51 ถูกรีเซตค่ารีจีสเตอร์ต่างๆถูกกำหนดค่าดังตาราง 2.4 โดย PC อยู่ที่ตำแหน่ง เริ่มต้น คือ 0000H เมื่อขา RST กลับเป็น 0 MCS -51 เริ่มทำโปรแกรมที่ตำแหน่งแรก
ไม่มีความคิดเห็น:
แสดงความคิดเห็น