More Related Content Similar to MCS51 Architecture Similar to MCS51 Architecture (20) MCS51 Architecture2. บทที่2: MCS-51
Architecture
รูปที่2-1เปนโครงสรางภายในไมโครคอนโทรลเลอร 8051 ของ Intel ประกอบดวย
1. 8 บิต CPU ที่มีรีจิสเตอร A (Accumulator) และรีจิสเตอร B
2. 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 ไบตสําหรับรีจิสเตอรใชงานทั่วไป
3
บทที่2: MCS-51
Architecture
7. มีพอรตอินพุตจํานวน 32 บิต (4 Port คือ P0-P3)
8. มี Timer/Counter 16 บิต 2 ตัวคือ T0 , T1
9. มีรีจิสเตอรชื่อ SBUF เปนรีจิสเตอรสําหรับการสื่อสารอนุกรมแบบ Full-Duplex
10. มีรีจิสเตอรควบคุมการทํางานไมโครคอนโทรลเลอรและPeripheral ใน MCS-51
คือ TCON, TMOD, SCON, PCON, IP และ IE
11. มีแหลงกําเนิดสัญญาณอินเตอรรัพต
- จากภายนอก 2 แหลง
- จากภายในไมโครคอนโทรลเลอร 3 แหลง
12. มีวงจรออสซิลเลเตอรและวงจรสัญญาณนาฬิกา
SFR (Special Function Register ) คือรีจิสเตอรภายใน8051 ที่มีหนาที่เฉพาะอยาง
ปกติ SFR มีแอดเดรสตั้งแต 80H ขึ้นไปจากรูป2-2 SFR บางตัวสามารถอาง
แอดเดรสแบบบิตได
4
2
3. E0
F0
รีจิสเตอร A
B8
รีจิสเตอร B
อางตําแหนงแบบบิตได
20
1F
18
17
10
0F
08
07
Bank 3
Bank 2
Bank 1
Bank 0
00
Byte Address
TCON รีจิสเตอร
8D
8B
TL0 Counter
TH1 Counter
98
99
SBUF รีจิสเตอร
PCON รีจิสเตอร
7F
00
TL1 Counter
87
SCON รีจิสเตอร
General Purpose
Area
88
TMOD รีจิสเตอร
8A
TH0 Counter
Bit Addressable
89
IE รีจิสเตอร
8C
7F
30
2F
A8
IP รีจิสเตอร
ตําแหนงบิตขอมูลที่อางแบบบิตได
R7
R6
R5
R4
R3
R2
R1
R0
07
06
05
04
03
02
01
00
81
Stack Pointer
80
D0
PSW
83
82
DPH Data Pointer DPL
16 บิต
ไมมีตําแหนง
Program Counter
Port P0
90
Port P1
A0
Port P2
E0
Port P3
รูปที่2-2 รีจิสเตอรและหนวยความจําภายใน8051(ยกเวน ROM)
บทที่2: MCS-51
5
Architecture
จากรูปที่2-2 เปนรีจิสเตอรภายในไมโครคอนโทรลเลอร MCS-51 ซึงมีทั้งรีจิสเตอรที่
ทํ า หน า ที่ ค วบคุ ม การทํ า งานของอุ ป กรณ ต า งๆบนไมโครคอนโทรลเลอร แ ละ
หนวยความจําแบบ RAM (Internal RAM) ที่ใชในการเก็บขอมูลรวมไปถึงรีจิสเตอร
A ซึ่งใชเก็บขอมูลหรือเปนรีจิสเตอรในตอนที่กระทําคําสั่งทางคณิตศาสตรรีจิสเตอร
รวมถึ ง หน ว ยความจํ า ภายในไมโครคอนโทรลเลอร เ หล า นี้ จ ะถู ก ควบคุ ม ด ว ย
โปรแกรม
ในรูปที่2-3 เปนรูปแสดงขาภายนอกของ 8051 ซึ่งบางขาก็มีหนาที่หลายอยางเชน
พอรตP2.0 เปนทั้งพอรตอินพุต/เอาตพุตและเปนขาที่เปนสายสัญญาณแอดเดรส A8
ที่ใชในการอางหนวยความจําภายนอกไมโครคอนโทรลเลอร โดยขาใดมีมากกวา
หนึ่งหนาที่ก็จะเขียนกํากับในวงเล็บซึ่งขาของ 8051 หลายๆขาที่ไมสามารถทําหนาที่
หลายอยางพรอมๆกันในเวลาเดียวกันได
ดังนั้นการออกแบบวงจรเชื่อมตอก็
ตองระวังคุณสมบัติของขาตางๆของไมโครคอนโทรลเลอรดวย
6
3
5. T
T
1>
1>
dX: 90.8 ns
X: 18.3 ns
1) C h 1:
1 V 25 ns
1) C h 1:
1 V 25 ns
XTAL1
XTAL2
T
ALE
1>
1) C h 1:
2 V 250 ns
รูป2-5 รูปคลื่นที่ขา XTAL2 , XTAL1 และ ALE ของ 8051
9
บทที่2: MCS-51
Architecture
ความถี่ของ Crystal Oscillator ที่ตอเขากับ MCS-51 มียานความถี่ที่สามารถ
ทํางานไดกวางทั้ งนี้ขึ้นกั บการออกแบบของผูผลิตวาจะใหทํางานในยานใด
เพราะบางบริษัทก็กําหนดใหความถี่สูงเพื่อไมโครคอนโทรลเลอรจะทํางานได
เร็วใชเวลาประมวลผลนอยกวาแตหากดูจากเอกสารคูมือ 8051 ที่ผลิตโดย Intel
ก็จะพบวายานความถี่สัญญาณนาฬิกาจะกําหนดใหอยูในชวง 1 ถึง 16 MHZ แต
ถาเปนของบริษัท Dallas Semiconductor ก็อาจสูงถึง 40 MHz (ปจจุบันรวมกับ
บริษัท Maxim)
รูปที่2-6 ตัวอยาง Crystal Oscillator
10
5
6. บทที่2: MCS-51
Architecture
จากสัญญาณนาฬิกาที่สรางขึ้นนี้จะเปนตัวกําหนดการทํางานใน MCS-51
โดยชวงเวลา 2 ลูกคลื่น ถือวาเปน 1 State และถารวมเปน 6 State นี้ก็จะถือ
วาเปน1 Machine Cycle ดังนั้นหากเราตองการรูวาคําสั่งใดของ8051 ทํางาน
จนเสร็จจะใชเวลาเทาใดก็จะหาไดจากจํานวน Machine Cycle ที่คําสั่งนั้นใช
แลวดูวาสัญญาณนาฬิกาคือเทาใดเราก็จะสามารถคํานวณคาเวลาได
1/ fCLK
CLK
6 State / Cycle
1 State
1 Machine Cycle
ALE
รูปที่2-7 Timing – Machine Cycle ของ 8051
บทที่2: MCS-51
11
Architecture
สมมุติวาคําสั่ง 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 ท ใี ช จํ า นวนClock1ใ S t
น
×
ค ว า ม ถี่ ข อ ง ค ริ ส ตั ล ที่ ใ ช
12
6
7. บทที่2: MCS-51
Architecture
Program Counter และ Data Pointer
ใน 8051 จะมีรีจิสเตอรขนาด 16 บิต 2 ตัวก็คือ
- Program Counter (PC) ใชชี้ตําแหนงหนวยความจําที่เก็บโปรแกรม
- Data Pointer (DPTR) ใช ชี้ ตํ า แหน ง หน ว ยความจํ า แบบข อ มู ล และ
โปรแกรม
ระบบไมโครคอนโทรลเลอร 8051 จะมีหนวยความจํา 2 ลักษณะ(ไมรวม RAM
ภายใน) คือ
1. หนวยความจําสําหรับเก็บโปรแกรม(Code Memory)
2. หนวยความจําภายนอกสําหรับเก็บขอมูล (Data Memory)
**
ที่ บ อกว า เป น หน ว ยความจํ า ภายนอกสํ า หรั บ เก็ บ ข อ มู ล ก็ เ พราะว า
หนวยความจําแบบนี้ในไมโครคอนโทรลเลอร 8051 จะมีเฉพาะที่เราตอเพิ่มเขา
ไปในระบบ
13
คําสั่งควบคุมการทํางานไมโครคอนโทรลเลอรจะถูก 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
14
7
8. บทที่2: MCS-51
Architecture
รีจิสเตอร A และ B
รีจิสเตอร A จะเปนรีจิสเตอรที่ใชงานในการกระทําทางคณิตศาสตร บวก, ลบ, คูณ
, หารรวมถึ ง การใช รี จิ ส เตอร A ในการส ง ผ า นข อ มู ล ระหว า งภายใน
ไมโครคอนโทรลเลอรเองและหนวยความจําภายนอก
รีจิสเตอร B จะถูกใชรวมกับรีจิสเตอร A ในตอนที่ทําคําสั่งคณิตศาสตรที่เปนการ
คู ณ และการหาร และนอกจากนั้ น ทั้ ง สองรี จิ ส เตอร นี้ ก็ ยั ง ใช ใ นการเก็ บ ข อ มุ ล
ทั่วๆไปไดอีกดวย
15
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 นั้นมีจํานวนเปนเลขคี่
16
8
9. -F0 เปน User Flag ซึ่ง User สามารถกําหนดคาใหเปน 1 หรือ 0 เองโดยใชบันทึก
เพื่อแสดงเหตุการณอะไรบางอยางในโปรแกรม
- RS0 , RS1 คือบิตที่ 0 และ 1 ที่ใชกําหนด Bank ของหนวยความจําที่ใชในโปร
แกรมวาเปนการอางถึงรีจิสเตอร R0-R7 ของหนวยความจํา Bank ใด
RS1 RS0
0
0
เลือกรีจิสเตอร R0-R7 ของ Bank 0
0
1
เลือกรีจิสเตอร R0-R7 ของ Bank 1
1
0
เลือกรีจิสเตอร R0-R7 ของ Bank 2
1
1
เลือกรีจิสเตอร R0-R7 ของ Bank 3
psw.7
psw.6
psw.5
psw.4
psw.3
psw.2
CY AC F0 RS1 RS0 OV
bit7
psw.1
-
psw.0
P
bit 0
รีจิสเตอร PSW
17
Stack and Stack Pointer
ในตอนเริ่มตนที่รีเซต 8051 หรือเพิ่งมีการจายไฟเลี้ยงใหระบบคาของรีจิสเตอร
SP จะมีคาเทากับ 07 ซึ่งชี้ที่หนวยความจําภายในของ 8051 (Internal RAM)โดย
พื้นที่ตรงนี้เราจะเรียกวา Stack และจะถูกใชงานเมื่อมีการใชคําสั่ง PUSH , POP
ซึ่งจะขอกลาวในภายหลังแตในกรณีของการเรียกโปรแกรมยอยนั้นจะมีการ
เก็บตําแหนงถัดของคําสั่ง(หลังการเรียกใชโปรแกรมยอย)ไวในหนวยความจําที่
รีจิสเตอร Stack ชี้อยูและหลังจากทําโปรแกรมยอยจบแลวหากเราเรียกใชคําสั่ง
ใหจบโปรแกรมยอยนั่นคือ RET (Return) ก็จะเกิดการนําตําแหนงที่เก็บใน
Stack นี้ไปใหรีจิสเตอร PC ซึ่งก็จะเกิดการกลับไปทํางานคําสั่งที่อยูหลังการ
เรียกโปรแกรมยอย อยางไรก็ตามเนื้อที่ของ Stack เปน RAMภายในดังนั้นการ
ใชงานหากไมระมัดระวังก็อาจเกิดการซอนกันระหวางขอมูลในหนวยความจํา
ที่เรากําหนดและ Stack ได ซึ่งจะขออธิบายในภายหลัง
18
9
10. ตําแหนงของ SFR ภายใน8051
SFR
Function
Address(HEX)
A
Accumulator
0E0
B
Arithmetic
0F0
DPH อางหนวยความจําภายนอก
83
DPL อางหนวยความจําภายนอก
82
IE
ควบคุมการเกิดของอินเตอรรัพท
0A8
IP
จัดลําดับการตอบสนองตออินเตอรรัพท
0B8
P0
I/O port latch
80
P1
I/O port latch
90
P2
I/O port latch
0A0
P3
I/O port latch
0B0
PCON Power Control
87
PSW Program Status Word
0D0
19
SFR
Function
SCON Serial Port Control
SBUF Serial Port Data Buffer
SP
TMOD
TCON
TL0
TH0
TL1
TH1
Stack Pointer
Timer counter mode control
Timer/Counter Control
Timer 0 Low byte
Timer 0 High byte
Timer1 Low byte
Timer 1 High byte
Address(HEX)
98
99
81
89
88
8A
8C
8B
8D
*** PC (Program Counter) ไมมีแอดเดรสซึ่งอาจกลาวไดวาไมใช SFR
20
10
11. Internal ROM
ROM ภายใน 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
และตองมีวงจรเพิ่มเติมในสวนถอดรหัสสัญญาณแอดเดรสที่จะตอกับหนวยความจํา
21
Memory Map ของ MCS-51
Program Memory
Data Memory
EPROM
ภายนอก
ขนาดสูงสุด
64 KB
ROM/
EPROM
FLASH
(ภายใน)
1-64KB**
EA = 0
RAM ภาย
นอกขนาด
สูงสุด 64KB
Internal
RAM
EA = 1
** ขนาด ROM ภายในขึ้นกับเบอรของ MCS-51
* ขนาด RAM ไมรวม SFR และขึ้นกับเบอร MCS-51
รูปที่2.8 โครงสราง Memory ของ 8051
22
11
12. D0-D7
Data
MCS-51
AD0-AD7
ALE
LATCH A0-A7 Address(L)
LE / OC
A8-A15
RD
WR
RAM
Address(H)
OE
WR
รูปที่2.9 ไดอะแกรมการเชื่อมตอ 8051 และ RAM
23
จากรูปที่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 อาน
ขอมูลเขาไปภายในพอดีในการออกแบบวงจรเชื่อมตอตองเขาใจสัญญาณนี้
เปนอยางดี
24
12
13. บทที่2: MCS-51
Port P0
A0-A7
Port P2
Architecture
D0-D7
A8-A15
Latch Address
ALE
RD
กรณีอานขอมูล
รูปที่ 2.10 Timing การอานขอมูลจากหนวยความจําภายนอก
25
บทที่2: MCS-51
Port P0
Port P2
ALE
WR
A0-A7
Architecture
D0-D7
A8-A15
Latch Address
กรณีเขียนขอมูล
รูปที่ 2.11 Timing การเขียนขอมูลจากหนวยความจําภายนอก
ในรูป2.11 ขา WR จะทํางานขอบขาลงโดยเปนจังหวะที่ D0-D7 มารอบนบัส
พรอมดวยแอดเดรส A8-A15 สวน A0-A7 นั้นถูก Latch ไวแลวกอนหนานี้
26
13
14. Data
MCS-51
AD0-AD7
ALE
LATCH D0-D7
Address(L)
LE / OC
EPROM
Address(H)
A8-A15
EA
PSEN
OE
รูปที่2.12 ไดอะแกรมการเชื่อมตอ 8051 และ EPROM
27
จากรูปที่2.12 การเชื่อมตอกับ Code Memory หรือสวนที่เปน EPROM นี้
จะตองใชสัญญาณที่ชื่อวา PSEN โดยสัญญาณนี้จะทํางานเมื่อมีการอาน
โปรแกรมจากหนวยความจําภายนอกซึ่งก็คือกระบวนการ Fetch คําสั่งของ
ไมโครคอนโทรลเลอรและอีกกรณีหนึ่งก็คือการใชคําสั่งประเภท MOVC
และในรูปที่2-13 นั้นขา PSEN จะทํางานหลังจากที่ขา ALE ทํางานนั่นก็คือ
มีแอดเดรส A0-A15 ไปปรากฏที่ EPROM แลวและมีขอมูลมารอบนบัส
D0-D7 และเมื่อ PSEN ทํางานที่ขอบขาลงผลก็คือขอมูลจะถูกอานขึ้นไป
อยางอัตโนมัติเขาไปในไมโครคอนโทรลเลอร
28
14
15. บทที่2: MCS-51
Port P0
Port P2
ALE
PSEN
A0-A7
Architecture
D0-D7
A8-A15
Latch Address
รูปที่ 2.11 Timing การอานขอมูลจาก External Code Memory ของ8051
29
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 และพอรตสื่อสารแบบอนุกรม
30
15
16. กอนที่จะไปดูการทํางานของวงจรภายในพอรต P0-P3 ขออธิบายอุปกรณพื้นฐาน
กอนนั่นก็คือ D-FlipFlop ดังรูป2.12 การทํางานของ D-FlipFlop ก็คือเอาตพุต
Q จะเปลี่ยนตามอินพุต D เมื่อมีสัญญาณClock เขามาโดยเปนแบบขอบขาลง
รูปที่ 2.12 การทํางานของ D-FlipFlop
31
Read latch
TB2
Internal CPU
bus
D
Write to latch
Clk
P0.X
pin
Q
P1.X
Q
M1
TB1
Read pin
รูปที่ 2.13 วงจรภายในพอรต P0
จากวงจรจะพบวาหากใชพอรตเปนเอาตพุตจะตองตอ R-Pull UP ไมเชนนั้นเมื่อสั่งให
M1 Off พอรต P0.X จะไมตอกับอะไรซึ่งก็คือ High Impedance ดูรูปที่2.14 ประกอบ
32
16
17. Read latch
Internal CPU
bus
TB2
1
D
Clk
P0.X
pin
Q
P1.X
Write to latch
High Impedance
Q
0
Off
M1
TB1
Read pin
รูปที่ 2.14 การทํางาน P0 เมื่อมีการเขียนขอมูล ‘1’
เมื่อสั่ง P0.x เปน ‘1’ นั่นคือขา D ของ Flip Flop = 1 และถาสัญญาณ Write to latch
ทํางานก็จะเกิดลอจิก 1 ที่ขา Q ของ FlipFlop หรือ 0 ที่สวิตช M1 ทําให M1 เปดวงจร
และขา P0 ที่ตอกับภายนอกก็จะอยูในสภาวะไมไดตอกับอะไรหรือ High Impedance
33
Read latch
Internal CPU
bus
Write to latch
TB2
0
D
P0.X
pin
Q
P1.X
Clk
Logic ‘ 0 ’
Q
1
On
M1
TB1
Read pin
รูปที่ 2.15 การทํางาน P0 เมื่อมีการเขียนขอมูล ‘0’
รูปนี้แสดงกรณีที่เขียนขอมูล 0 ไปยังพอรต P0.x ซึ่งกรณีนี้ M1 จะนํากระแสทําใหขา
ที่ตอภายนอกของ P0.x นั้นมีคาเปนลอจิกศูนย
34
17
18. 0
อุปกรณภายนอก
รูปที่ 2.16 การตอ R Pull ใหพอรต P0
เมื่อตอ R Pull Up และเขียนขอมูล 1 มาพอรต P0.x l สวิตช M1 จะเปดวงจร
ดังนั้นวงจรภายนอกขา P0.x จะตออยูกับ VCC โดยผาน R Pull Up
35
และถาเราใชงานพอรต P0 นี้เปนทั้งอินพุตและเอาตพุตสิ่งที่เราตองทํากอนที่จะ
ให P0 ทํางานเปนอินพุตก็คือจะตองสั่งคาลอจิก 1 ให P0กอนดวยการเขียน
ชุดคําสั่งนั่นคือ mov P0,#0FFh ซึ่งทําให M1 นั้น Off และตอนนี้เองที่ขาอินพุต
นี้จะมีคาตามสภาวะของสัญญาณจากภายนอกที่มาตอใหพอรต P0 เปนอินพุต
Read latch
TB2
1
Internal CPU
bus
Clk
1
P0.X
pin
Q
P1.X
Write to latch
Read pin
D
Q
0
M1
TB1
รูปที่ 2.17 วงจรภายใน P0 กรณีเปนทั้งอินพุตและเอาตพุต
36
18
19. Read latch
Vcc
TB2
Load(L1)
1
Internal CPU
bus
D
Write to latch
Clk
P1.X
pin
Q
P1.X
Q
0
M1
TB1
Read pin
รูปที่ 2.18 การทํางานเมื่อเขียนขอมูล 1ไปยังพอรต P1
พอรต P1 จะมีการ Pull Up อยูภายใน 8051 ซึ่ง R นี้ถูกสรางดวยวงจรอิเล็กทรอนิกส
ดังนั้นการใชงานเปนเอาตพุตจึงไมตองตอ R Pull up เหมือนอยางพอรต P0
37
Vcc
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
Port
DS5000
8751
8951
8051
10 K
0
รูปที่ 2.19 การตอ R Pull Up 10 K Ohm ที่พอรต 0
38
19
21. สรุปในบทนี้ก็จ ะกลาวถึงโครงสรางภายในของรีจิส เตอรทีมี ใน MCS-51ใน
เบื้องตนเพื่อที่จะเรียนรูการเขียนโปรแกรมควบคุมและสําหรับรีจิสเตอรควบคุม
การทํางานตางๆนั้นก็จะกลาวถึงอีกครั้งในตอนที่อธิบายการทํางานของสวน
นั้นๆพรอมทั้งการเขียนโปรแกรมควบคุม
สิ่งที่ควรรูและทบทวน
- Cycle การทํางานของไมโครคอนโทรลเลอร
- การทํางานของพอรตบน MCS-51
- หนวยความจําของ MCS-51
- การติดตอหนวยความจําของ MCS-51
41
21