1
MCS-51 Architecture
MicroprocessorMicroprocessor by pisit wisutmetheekorn [email protected]
2
บทที่2: MCS-51 Architecture
รูปท่ี2-1โครงสรางภายใน8051
2
3
บทที่2: MCS-51 Architecture
รูปที่2-1เปนโครงสรางภายในไมโครคอนโทรลเลอร 8051 ของ Intel ประกอบดวย1. 8 บิต CPU ที่มีรีจิสเตอร A (Accumulator) และรีจิสเตอร B2. Program Counter (PC) และ Data Pointer (DPTR) ขนาด 16 บิต 3. รีจิสเตอร 8 บิตเก็บสถานะโปรแกรม ช่ือ PSW( Program Status Word)4. Stack Pointer (SP) ขนาด 8 บิต5. มีหนวยความจําภายในแบบ ROM 4 K กรณีไมโครคอนโทรลเลอร 8051มีหนวยความจําภายในแบบ EPROM กรณีไมโครคอนโทรลเลอร 8751ไมมีหนวยความจําทั้ง ROM หรือ EPROM สําหรับเบอร 8031
6. มีหนวยความจําแบบ RAM 128ไบต(กรณี 8052 จะมี RAM 256 ไบต)แบงเปน- 4 รีจิสเตอร Bank แตละ Bank แบงเปน 8 รีจิสเตอร(R0-R7)- มีรีจิสเตอรที่สามารถอางแอดเดรสแบบบิตไดทั้งหมด 16 ตัว(16 ไบต)- 80 ไบตสําหรับรีจิสเตอรใชงานทั่วไป
4
บทที่2: MCS-51 Architecture
7. มีพอรตอินพุตจํานวน 32 บิต (4 Port คือ P0-P3)8. มี Timer/Counter 16 บิต 2 ตัวคือ T0 , T19. มีรีจิสเตอรช่ือ SBUF เปนรีจิสเตอรสําหรับการสื่อสารอนุกรมแบบ Full-Duplex10. มีรีจิสเตอรควบคุมการทํางานไมโครคอนโทรลเลอรและPeripheral ใน MCS-51
คือ TCON, TMOD, SCON, PCON, IP และ IE11. มีแหลงกําเนิดสัญญาณอินเตอรรัพต
- จากภายนอก 2 แหลง- จากภายในไมโครคอนโทรลเลอร 3 แหลง
12. มีวงจรออสซิลเลเตอรและวงจรสัญญาณนาฬิกา
SFR (Special Function Register ) คือรีจิสเตอรภายใน8051 ที่มีหนาที่เฉพาะอยางปกติ SFR มีแอดเดรสตั้งแต 80H ขึ้นไปจากรูป2-2 SFR บางตัวสามารถอางแอดเดรสแบบบิตได
3
5
Bank 0Bank 1Bank 2
Bank 3
R0R1R2R3R4R5R6R7
0001020304050607
08
0F10
1718
1F20
7F
Bit Addressable2F
00
7Fตําแหนงบิตขอมูลที่อางแบบบิตได
30
General PurposeArea
00Byte Address
E0รีจิสเตอร A
F0รีจิสเตอร B
B8IP รีจิสเตอร
A8IE รีจิสเตอร
89TMOD รีจิสเตอร
88TCON รีจิสเตอร
8CTH0 Counter
8ATL0 Counter
8DTH1 Counter
8BTL1 Counter
98SCON รีจิสเตอร
99SBUF รีจิสเตอร
87PCON รีจิสเตอร
D0PSW
81Stack Pointer
83DPH
82DPLData Pointer
16 บิต ไมมีตําแหนง
Program Counter
90 A0 E0
80Port P0
Port P1 Port P2 Port P3
อางตําแหนงแบบบิตได
รูปท่ี2-2 รีจิสเตอรและหนวยความจําภายใน8051(ยกเวน ROM)
07
6
บทที่2: MCS-51 Architecture
จากรูปที่2-2 เปนรีจิสเตอรภายในไมโครคอนโทรลเลอร MCS-51 ซึงมีทั้งรีจิสเตอรที่ทําหนาที่ควบคุมการทํางานของอุปกรณตางๆบนไมโครคอนโทรลเลอรและหนวยความจําแบบ RAM (Internal RAM) ที่ใชในการเก็บขอมูลรวมไปถึงรีจิสเตอร A ซึ่งใชเก็บขอมูลหรือเปนรีจิสเตอรในตอนที่กระทําคําสั่งทางคณิตศาสตรรีจิสเตอรรวมถึงหนวยความจําภายในไมโครคอนโทรลเลอรเหลานี้จะถูกควบคุมดวยโปรแกรมในรูปที่2-3 เปนรูปแสดงขาภายนอกของ 8051 ซึ่งบางขาก็มีหนาที่หลายอยางเชนพอรตP2.0 เปนทั้งพอรตอินพุต/เอาตพุตและเปนขาที่เปนสายสัญญาณแอดเดรส A8 ที่ใชในการอางหนวยความจําภายนอกไมโครคอนโทรลเลอร โดยขาใดมีมากกวาหนึ่งหนาที่ก็จะเขียนกํากับในวงเล็บซึ่งขาของ 8051 หลายๆขาที่ไมสามารถทําหนาที่หลายอยางพรอมๆกันในเวลาเดียวกันได ดังนั้นการออกแบบวงจรเชื่อมตอก็ตองระวังคุณสมบัติของขาตางๆของไมโครคอนโทรลเลอรดวย
4
7
1234567891011121314151617181920
4039383736353433323130292827262524232221
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST
(RXD)P3.0(TXD)P3.1
(T0)P3.4(T1)P3.5
XTAL2XTAL1
GND
(INT0)P3.2(INT1)P3.3
(RD)P3.7(WR)P3.6
VccP0.0(AD0)P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0.5(AD5)P0.6(AD6)P0.7(AD7)EA/VPPALE/PROGPSENP2.7(A15)P2.6(A14)P2.5(A13)P2.4(A12)P2.3(A11)P2.2(A10)P2.1(A9)P2.0(A8)
8051(8031)
รูปที่2-3 ลักษณะขาของ 8051 ไมโครคอนโทรลเลอร
+5VDC
0V
8
บทที่2: MCS-51 Architecture
วงจรออสซิลเลเตอรและสัญญาณนาฬิกา
ทุกสวนของไมโครคอนโทรลเลอรนั้นจะทํางานเปนจังหวะเดียวกันดวยการใหจังหวะการทํางานจากสัญญาณนาฬิกาโดย 8051 จะมีขา 18(XTAL1)และขา19 (XTAL2) ที่เตรียมไวเพื่อตออุปกรณใหวงจรออสซิลเลเตอรภายในทํางานโดยเราจะตอเพียง Crystal Oscillator และตัวเก็บประจุ 2 ตัวดังในรูป2-4 เทานี้ก็จะเกิดสัญญาณนาฬิกาที่เปนตัวใหจังหวะกับสวนตางๆภายในของไมโครคอนโทรลเลอร
รูป2-4 วงจรออสซิลเลเตอรสําหรับ 8051
5
9
T
1 >
1) Ch 1: 1 V 25 ns
dX: 90.8 ns X: 18.3 ns
T
1 >
1) Ch 1: 1 V 25 ns
รูป2-5 รูปคลื่นที่ขา XTAL2 , XTAL1 และ ALE ของ 8051
XTAL2 XTAL1
T
1 >
1) Ch 1: 2 V 250 ns
ALE
10
ความถี่ของ Crystal Oscillator ที่ตอเขากับ MCS-51 มียานความถี่ที่สามารถทํางานไดกวางทั้งนี้ขึ้นกับการออกแบบของผูผลิตวาจะใหทํางานในยานใดเพราะบางบริษัทก็กําหนดใหความถี่สูงเพื่อไมโครคอนโทรลเลอรจะทํางานไดเร็วใชเวลาประมวลผลนอยกวาแตหากดูจากเอกสารคูมือ 8051 ที่ผลิตโดย Intel ก็จะพบวายานความถี่สัญญาณนาฬิกาจะกําหนดใหอยูในชวง 1 ถึง 16 MHZ แตถาเปนของบริษัท Dallas Semiconductor ก็อาจสูงถึง 40 MHz (ปจจุบันรวมกับบริษัท Maxim)
บทที่2: MCS-51 Architecture
รูปที่2-6 ตัวอยาง Crystal Oscillator
6
11
บทที่2: MCS-51 Architecture
จากสัญญาณนาฬิกาที่สรางขึ้นนี้จะเปนตัวกําหนดการทํางานใน MCS-51 โดยชวงเวลา 2 ลูกคลื่น ถือวาเปน 1 State และถารวมเปน 6 State นี้ก็จะถือวาเปน1 Machine Cycle ดังนั้นหากเราตองการรูวาคําสั่งใดของ8051 ทํางานจนเสร็จจะใชเวลาเทาใดก็จะหาไดจากจํานวน Machine Cycle ที่คําสั่งนั้นใชแลวดูวาสัญญาณนาฬิกาคือเทาใดเราก็จะสามารถคํานวณคาเวลาได
1 State1 Machine Cycle
6 State / Cycle1/ fCLK
รูปที่2-7 Timing – Machine Cycle ของ 8051
ALE
CLK
12
สมมุติวาคําสั่ง ADD A,R1 หากเปดตารางชุดคําสั่งของ 8051 จะพบวาใชเวลาประมวลผล 1 Machine Cycle นั่นก็คือใชเวลา 12 คาบเวลาของสัญญาณนาฬิกาที่ใหกับ 8051 และถาเราใชความถี่ 16 MHz จะใชเวลาทําคําสั่งเทากับ
T = จํานวน Machine Cycle x 12 / ความถี่ Crystal= 1 x 12 / 16MHz = 0.75 mSec
แตถาหากวาเปนไมโครคอนโทรลเลอรMCS-51 เบอรอื่นๆเราก็ตองมาดูวาจํานวน Clock ใน 1 State มีคาเทาใดเพราะบางเบอรก็ใชเวลานอยกวา 12 Clockใน 1 State ดังนั้นเขียนสมการทั่วไปของเวลาในการทําคําสั่งดังนี้
จํ านวน Machine Cycle ทใีช จํานวนClock ใน 1 S tเวลาในการทําคําสั่ง = ค ว า ม ถี่ ข อ ง ค ริ ส ตั ล ที่ ใ ช
×
บทที่2: MCS-51 Architecture
7
13
Program Counter และ Data Pointer
ใน 8051 จะมีรีจิสเตอรขนาด 16 บิต 2 ตัวก็คือ - Program Counter (PC) ใชช้ีตําแหนงหนวยความจําที่เก็บโปรแกรม- Data Pointer (DPTR) ใช ช้ี ตํ าแหน งหน วยความจํ าแบบขอมูลและ
โปรแกรมระบบไมโครคอนโทรลเลอร 8051 จะมีหนวยความจํา 2 ลักษณะ(ไมรวม RAM ภายใน) คือ
1. หนวยความจําสําหรับเก็บโปรแกรม(Code Memory)2. หนวยความจําภายนอกสําหรับเก็บขอมูล (Data Memory)
** ที่บอกวาเปนหนวยความจําภายนอกสําหรับเก็บขอมูลก็เพราะวาหนวยความจําแบบนี้ในไมโครคอนโทรลเลอร 8051 จะมีเฉพาะที่เราตอเพิ่มเขาไปในระบบ
บทที่2: MCS-51 Architecture
14
คําสั่งควบคุมการทํางานไมโครคอนโทรลเลอรจะถูก Fetch จากหนวยความจําที่มีตําแหนงตามคาของรีจิสเตอร PC และคาของรีจิสเตอร PC นี้จะถูกเพิ่มขึ้นโดยอัตโนมัติเมื่อมีการ Fetch คําสั่งของไมโครคอนโทรลเลอรหรือการทํางานในบางคําสั่งของไมโครคอนโทรลเลอรืเชนคําสั่งกระโดด(Jump)แบบตางๆ นอกจ ากนั้ นลักษณะที่พิเศษของรีจิสเตอร Program Counter นี้ก็คือตัวมันเองไมมีแอดเดรสซึ่งตรงกันขามกับรีจิสเตอร SFR ตัวอื่นๆที่มีคาตําแหนงบอกทั้งสิ้นแมกระทั่ง Port I/OP0 – P3 ก็ยังมีแอดเดรสสําหรับ DPTR จะเปนรีจิสเตอรที่เกิดจากรีจิสเตอร 8 บิต 2 ตัวคือ DPHและDPL ใชในการอ างอิ งถึงขอมูลในหนวยความจําทั้ งแบบที่ เปนขอมูลภายนอกชิป (ExternalData) และสวนที่เปนโปรแกรมทั้งภายในและภายนอกชิป(Internal & External Code Memory) โดยการเปลี่ยนคาของ DPTR จะขึ้นกับคําสั่งที่เราเขียนในโปรแกรมควบคุมซึ่งจะอางชื่อของ DPTR เองหรืออาจกําหนดคาผานรีจิสเตอร 8 บิตคือ DPH และ DPL
8
15
รีจิสเตอร A และ B
รีจิสเตอร A จะเปนรีจิสเตอรที่ใชงานในการกระทําทางคณิตศาสตร บวก, ลบ, คูณ, หารรวมถึ งการใช รี จิ ส เตอร A ในการส งผ านขอมูลระหว า งภายในไมโครคอนโทรลเลอรเองและหนวยความจําภายนอก รีจิสเตอร B จะถูกใชรวมกับรีจิสเตอร A ในตอนที่ทําคําสั่งคณิตศาสตรที่เปนการคูณและการหาร และนอกจากนั้นทั้งสองรีจิสเตอรนี้ก็ยังใชในการเก็บขอมุลทั่วๆไปไดอีกดวย
บทที่2: MCS-51 Architecture
16
Program Status Word(PSW)
PSW เปนรีจิสเตอรตัวหนึ่งใน 8051 ซึ่งใชในการเก็บ Flag ซึ่ง Flag นี้ก็คือบิตขอมูลที่บอกสถานะอะไรการทํางานของโปรแกรม ใน8051จะมีการเก็บ Flag ไวใน รีจิสเตอร PSW และรีจิสเตอร PCON โดย Flag ที่เก็บใน PSW นี้ไดแก- CY (Carry Flag) เปนบิตที่ใชเก็บผลเมื่อทําคําสั่งเกี่ยวกับคณิตศาสตร, การกระโดดการ Rotate และคําสั่งเกี่ยวกับ Boolean- AC (Auxilliary Carry Flag) เปนแฟลกที่จะมีการเซ็ตในกรณีการบวกลบเลข BCDเพราะ BCD นี้จะมองที่ขอมูล 4 บิต - OV (Over Flow Flag) เปนแฟลกที่มีการเปลี่ยนแปลงเมื่อมีการกระทําคําสั่งคณิตศาสตรซึ่งจะใชแสดงกรณีผลลัพธที่ไดเกินขนาดรีจิสเตอรเก็บได- P (Parity Flag) เปนบิตที่บอกพาริต้ีของรีจิสเตอร A 1 เปน Odd Parity ซึ่งก็คือจํานวนบิตที่เปน1 นั้นมีจํานวนเปนเลขคี่
9
17
-F0 เปน User Flag ซึ่ง User สามารถกําหนดคาใหเปน 1 หรือ 0 เองโดยใชบันทึกเพื่อแสดงเหตุการณอะไรบางอยางในโปรแกรม- RS0 , RS1 คือบิตที่ 0 และ 1 ที่ใชกําหนด Bank ของหนวยความจําที่ใชในโปรแกรมวาเปนการอางถึงรีจิสเตอร R0-R7 ของหนวยความจํา Bank ใด
RS1 RS00 0 เลือกรีจิสเตอร R0-R7 ของ Bank 00 1 เลือกรีจิสเตอร R0-R7 ของ Bank 11 0 เลือกรีจิสเตอร R0-R7 ของ Bank 21 1 เลือกรีจิสเตอร R0-R7 ของ Bank 3
CY AC F0 RS1 RS0 OV - P
psw.0psw.1psw.2psw.3psw.4psw.5psw.6psw.7
รีจิสเตอร PSW bit 0bit7
18
Stack and Stack Pointer
ในตอนเริ่มตนที่รีเซต 8051 หรือเพิ่งมีการจายไฟเลี้ยงใหระบบคาของรีจิสเตอร SP จะมีคาเทากับ 07 ซึ่งช้ีที่หนวยความจําภายในของ 8051 (Internal RAM)โดยพ้ืนที่ตรงนี้เราจะเรียกวา Stack และจะถูกใชงานเมื่อมีการใชคําสั่ง PUSH , POPซึ่งจะขอกลาวในภายหลังแตในกรณีของการเรียกโปรแกรมยอยนั้นจะมีการเก็บตําแหนงถัดของคําสั่ง(หลังการเรียกใชโปรแกรมยอย)ไวในหนวยความจําที่รีจิสเตอร Stack ช้ีอยูและหลังจากทําโปรแกรมยอยจบแลวหากเราเรียกใชคําสั่งใหจบโปรแกรมยอยนั่นคือ RET (Return) ก็จะเกิดการนําตําแหนงที่เก็บใน Stack นี้ไปใหรีจิสเตอร PC ซึ่งก็จะเกิดการกลับไปทํางานคําสั่งที่อยูหลังการเรียกโปรแกรมยอย อยางไรก็ตามเนื้อที่ของ Stack เปน RAMภายในดังนั้นการใชงานหากไมระมัดระวังก็อาจเกิดการซอนกันระหวางขอมูลในหนวยความจําที่เรากําหนดและ Stack ได ซึ่งจะขออธิบายในภายหลัง
10
19
SFR Function Address(HEX)A Accumulator 0E0B Arithmetic 0F0DPH อางหนวยความจําภายนอก 83DPL อางหนวยความจําภายนอก 82IE ควบคุมการเกิดของอินเตอรรัพท 0A8IP จัดลําดับการตอบสนองตออินเตอรรัพท 0B8P0 I/O port latch 80P1 I/O port latch 90P2 I/O port latch 0A0P3 I/O port latch 0B0PCON Power Control 87PSW Program Status Word 0D0
ตําแหนงของ SFR ภายใน8051
20
SFR Function Address(HEX)SCON Serial Port Control 98SBUF Serial Port Data Buffer 99
SP Stack Pointer 81TMOD Timer counter mode control 89TCON Timer/Counter Control 88TL0 Timer 0 Low byte 8ATH0 Timer 0 High byte 8CTL1 Timer1 Low byte 8BTH1 Timer 1 High byte 8D
*** PC (Program Counter) ไมมีแอดเดรสซึ่งอาจกลาวไดวาไมใช SFR
11
21
Internal ROMROM ภายใน 8051 นั้นปกติแลวจะมีคา 4 KB แตหากเปนไมโครคอนโทรลเลอรเบอรอื่นในตระกูล MCS-51 (รวมถึง MCS-51 ของบริษัทอื่นๆดวย)จะมีขนาด ROM ตางกันเชน8031 ไมมี ROM ภายใน8751 จะมีหนวยความจําภายในเปน EPROM ที่สามารถเก็บ CODE ได89S8252 มีหนวยความจําแบบ Flash ขนาด 8 KB ที่สามารถโหลดขอมูลลงไปได89C420 มีหนวยความจําแบบ Flash ขนาด 16 KB 89C51RD2 มีหนวยความจําแบบ Flash ขนาด 64 KB ปกติหากเราตองการใชหนวยความจําสวนที่เปนโปรแกรม (CODE) เปนชิปอยูภายนอกไมโครคอนโทรลเลอร MCS-51 เราก็เพียงแตตอขา EA(External Access) ลง Groundและตองมีวงจรเพิ่มเติมในสวนถอดรหัสสัญญาณแอดเดรสที่จะตอกับหนวยความจํา
22
Memory Map ของ MCS-51
** ขนาด ROM ภายในขึ้นกบัเบอรของ MCS-51* ขนาด RAM ไมรวม SFR และขึ้นกับเบอร MCS-51
Program Memory Data Memory
ภายนอกขนาดสูงสุด64 KB
EPROM
EA = 0 EA = 1
ROM/EPROMFLASH(ภายใน)1-64KB**
InternalRAM
RAM ภายนอกขนาดสูงสุด 64KB
รูปที่2.8 โครงสราง Memory ของ 8051
12
23
รูปที่2.9 ไดอะแกรมการเชื่อมตอ 8051 และ RAM
MCS-51
AD0-AD7
A8-A15RD
LATCH A0-A7Data
Address(H)RAM
WR WROE
Address(L)ALE LE / OC
D0-D7
24
จากรูปที่2.9 เปนวงจรเชื่อมตอ 8051 และหนวยความจําภายนอกโดยในที่นี้เปนสวนของ Data Memory ซึ่งมักจะเปน RAM เพราะเราจะสามารถกระทําไดทั้งการอานและการเขียนขอมูลหรือในบางครั้งหากอินพุตเอาตพุตไมพอขยายพอรตก็จะออกแบบใหเปนสวนหนึ่งของหนวยความจํานี้เพราะพอรตก็จะตองมีทั้งสวนที่เปนอินพุตและเอาตพุตเหมือนกับที่เราทั้งอานและเขียนขอมูลจาก RAM นั่นเอง ในรูปที่ 2.9จะมี Latch 1 ตัวเพื่อคางคาแอดเดรสไบตตํ่าไวกอนเนื่องจากวาบัสก็คือขา AD0-AD7 ของ 8051 นั้นเปนทั้งแอดเดรสและขอมูลดังนั้นจึงตองคงคาแอดเดรส A0-A7 ไวกอนจากนั้นเมื่อรวมกับ A8-A15 ก็จะสามารถอางหนวยความจําของ RAM ไดแตก็ตองขึ้นกับวาเปนการทํางานอะไรโดยหากเปนการอานขอมูลก็แสดงดังรูปที่ 2.10ซึ่งสัญญาณขา RD ของ8051 จะทํางานหลังจากที่ A8-A15 คงตัวแลวนั่นคือขอมูลจาก RAM มาปรากฏที่บัสขอมูล D0-D7 ก็จะเปนจังหวะที่ 8051 อานขอมูลเขาไปภายในพอดีในการออกแบบวงจรเชื่อมตอตองเขาใจสัญญาณนี้เปนอยางดี
13
25
A0-A7 D0-D7Port P0
Port P2
ALERD
A8-A15Latch Address
กรณีอานขอมูล
รูปที่ 2.10 Timing การอานขอมูลจากหนวยความจําภายนอก
บทที่2: MCS-51 Architecture
26
A0-A7 D0-D7Port P0
Port P2
ALEWR
A8-A15Latch Address
กรณีเขียนขอมูล
รูปที่ 2.11 Timing การเขียนขอมูลจากหนวยความจําภายนอก
บทที่2: MCS-51 Architecture
ในรูป2.11 ขา WR จะทํางานขอบขาลงโดยเปนจังหวะที่ D0-D7 มารอบนบัสพรอมดวยแอดเดรส A8-A15 สวน A0-A7 นั้นถูก Latch ไวแลวกอนหนานี้
14
27
รูปที่2.12 ไดอะแกรมการเชื่อมตอ 8051 และ EPROM
MCS-51
AD0-AD7
A8-A15
PSEN
LATCHData
Address(H)EPROM
OE
Address(L)ALE LE / OC
D0-D7
EA
28
จากรูปที่2.12 การเชื่อมตอกับ Code Memory หรือสวนที่เปน EPROM นี้จะตองใชสัญญาณที่ช่ือวา PSEN โดยสัญญาณนี้จะทํางานเมื่อมีการอานโปรแกรมจากหนวยความจําภายนอกซึ่งก็คือกระบวนการ Fetch คําสั่งของไมโครคอนโทรลเลอรและอีกกรณีหนึ่งก็คือการใชคําสั่งประเภท MOVCและในรูปที่2-13 นั้นขา PSEN จะทํางานหลังจากที่ขา ALE ทํางานนั่นก็คือมีแอดเดรส A0-A15 ไปปรากฏที่ EPROM แลวและมีขอมลูมารอบนบัส D0-D7 และเมื่อ PSEN ทํางานที่ขอบขาลงผลก็คือขอมูลจะถูกอานขึ้นไปอยางอัตโนมัติเขาไปในไมโครคอนโทรลเลอร
15
29
รูปที่ 2.11 Timing การอานขอมูลจาก External Code Memory ของ8051
PSEN
A0-A7 D0-D7Port P0
Port P2
ALE
A8-A15Latch Address
บทที่2: MCS-51 Architecture
30
Port P0-P3 ของ 8051
ไมโครคอนโทรลเลอร 8051 มีพอรตทั้งหมด 32 บิตซึ่งมากพอหากตองการใชในงานที่เปนอินพุตเอาตพุตแบบดิจิตอลแตอยางไรก็ตามจะมีเฉพาะP0 เทานั้นที่ทําหนาที่เปนพอรตอินพุต/เอาตพุตอยางเดียวเพราะนอกนั้นจะสามารถทําหนาที่อื่นไดดวยแตอยางไรก็ตามก็ขึ้นกับโปรแกรมและวงจรที่ออกแบบวาตองหารใหพอรตเหลานั้นทําหนาที่ เปนพอรตหรือเปนอะไรอยางเชนกรณีที่ตองการเชื่อมตอ 8051 กับหนวยความจําภายนอกเชน RAMหรือ EPROM เราก็ตองยอมเสียพอรต P0 เพื่อทําหนาที่เสนทางเดินของขอมูลD0-D7 รวมถึงการเปนสายแอดเดรส A0-A7 ดวยและพอรต P2ก็จะตองทําหนาที่เปนสายแอดเดรส A8-A15 สําหรับพอรต P3 นั้นจะมีหลายหนาที่บางขาเปนสัญญาณควบคุมในการติดตอกับหนวยความจําที่เปน Data Memory ซึ่งไดแก RAM ในรูปที่2-9 ที่มีขา P3.6 เปนขา WR และขา P3.7 เปนขา RD สวนขาอื่นของ P3 จะเปนขาเกี่ยวกับ อินเตอรรัพท, Timer-Counter และพอรตสื่อสารแบบอนุกรม
16
31
กอนที่จะไปดูการทํางานของวงจรภายในพอรต P0-P3 ขออธิบายอุปกรณพ้ืนฐานกอนนั่นก็คือ D-FlipFlop ดังรูป2.12 การทํางานของ D-FlipFlop ก็คือเอาตพุต Q จะเปลี่ยนตามอินพุต D เมื่อมีสัญญาณClock เขามาโดยเปนแบบขอบขาลง
รูปที่ 2.12 การทํางานของ D-FlipFlop
32
D Q
Clk Q
Read latch
Read pin
Write to latch
Internal CPU bus
M1
P0.X pinP1.X
TB1
TB2
จากวงจรจะพบวาหากใชพอรตเปนเอาตพุตจะตองตอ R-Pull UP ไมเชนนั้นเมื่อสั่งให M1 Off พอรต P0.X จะไมตอกับอะไรซึ่งก็คือ High Impedance ดูรูปที่2.14 ประกอบ
รูปที่ 2.13 วงจรภายในพอรต P0
17
33
รูปที่ 2.14 การทํางาน P0 เมื่อมีการเขียนขอมูล ‘1’
เมื่อสั่ง P0.x เปน ‘1’ นั่นคือขา D ของ Flip Flop = 1 และถาสัญญาณ Write to latchทํางานก็จะเกิดลอจิก 1 ที่ขา Q ของ FlipFlop หรือ 0 ที่สวิตช M1 ทําให M1 เปดวงจร และขา P0 ที่ตอกับภายนอกก็จะอยูในสภาวะไมไดตอกับอะไรหรือ High Impedance
D Q
Clk Q
Read latch
Read pin
Write to latch
Internal CPU bus
M1
P0.X pinP1.X
TB1
TB2
10 Off
High Impedance
34
D Q
Clk Q
Read latch
Read pin
Write to latch
Internal CPU bus
M1
P0.X pinP1.X
TB1
TB2
01 On
Logic ‘ 0 ’
รูปที่ 2.15 การทํางาน P0 เมื่อมีการเขียนขอมูล ‘0’
รูปนี้แสดงกรณีที่เขียนขอมูล 0 ไปยังพอรต P0.x ซึ่งกรณีนี้ M1 จะนํากระแสทําใหขาที่ตอภายนอกของ P0.x นั้นมีคาเปนลอจิกศูนย
18
35
รูปที่ 2.16 การตอ R Pull ใหพอรต P0
เมื่อตอ R Pull Up และเขียนขอมูล 1 มาพอรต P0.x l สวิตช M1 จะเปดวงจรดังนั้นวงจรภายนอกขา P0.x จะตออยูกับ VCC โดยผาน R Pull Up
0อุปกรณภายนอก
36
และถาเราใชงานพอรต P0 นี้เปนทั้งอินพุตและเอาตพุตสิ่งที่เราตองทํากอนที่จะให P0 ทํางานเปนอินพุตก็คือจะตองสั่งคาลอจิก 1 ให P0กอนดวยการเขียนชุดคําสั่งนั่นคือ mov P0,#0FFh ซึ่งทําให M1 นั้น Off และตอนนี้เองที่ขาอินพุตนี้จะมีคาตามสภาวะของสัญญาณจากภายนอกที่มาตอใหพอรต P0 เปนอินพุต
D Q
Clk Q
Read latch
Read pin
Write to latch
Internal CPU bus
M1
P0.X pinP1.X
TB1
TB2
รูปที่ 2.17 วงจรภายใน P0 กรณีเปนทั้งอินพุตและเอาตพุต
10
1
19
37
D Q
Clk Q
Vcc
Load(L1)
Read latch
Read pin
Write to latch
Internal CPU bus
M1
P1.X pinP1.X
TB1
TB2
รูปที่ 2.18 การทํางานเมื่อเขียนขอมูล 1ไปยังพอรต P1
พอรต P1 จะมีการ Pull Up อยูภายใน 8051 ซึ่ง R นี้ถูกสรางดวยวงจรอิเล็กทรอนิกสดังนั้นการใชงานเปนเอาตพุตจึงไมตองตอ R Pull up เหมือนอยางพอรต P0
10
38
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
DS5000875189518051
Vcc10 K
Port
0
รูปที่ 2.19 การตอ R Pull Up 10 K Ohm ที่พอรต 0
20
39
17RDP3.716WRP3.615T1P3.514T0P3.413INT1P3.312INT0P3.211TxDP3.110RxDP3.0
PinFunctionP3 Bit
หนาที่อื่นของขาตางๆที่เปนพอรต P3
40
RESET Value of Some 8051 Registers:
0000DPTR0007SP0000PSW0000B0000ACC0000PCReset ValueRegister
RAM are all zero. P0-P3จะมีคาเปนลอจิก 1
21
41
สรุปในบทนี้ก็จะกลาวถึงโครงสรางภายในของรีจิสเตอรทีมีใน MCS-51ในเบื้องตนเพื่อที่จะเรียนรูการเขียนโปรแกรมควบคุมและสําหรับรีจิสเตอรควบคุมการทํางานตางๆนั้นก็จะกลาวถึงอีกครั้งในตอนที่อธิบายการทํางานของสวนนั้นๆพรอมทั้งการเขียนโปรแกรมควบคุม
- Cycle การทํางานของไมโครคอนโทรลเลอร- การทํางานของพอรตบน MCS-51- หนวยความจําของ MCS-51- การติดตอหนวยความจําของ MCS-51
สิ่งที่ควรรูและทบทวน
Top Related