SlideShare a Scribd company logo
1 of 21
Download to read offline
MCS-51 Architecture

Microprocessor by pisit wisutmetheekorn psw1999@yahoo.com

บทที่2: MCS-51

Architecture

รูปที่2-1โครงสรางภายใน8051

2

1
บทที่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
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
+5VDC

0V

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
(RXD)P3.0
(TXD)P3.1
(INT0)P3.2
(INT1)P3.3
(T0)P3.4
(T1)P3.5
(WR)P3.6
(RD)P3.7
XTAL2
XTAL1
GND

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

8051
(8031)

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

Vcc
P0.0(AD0)
P0.1(AD1)
P0.2(AD2)
P0.3(AD3)
P0.4(AD4)
P0.5(AD5)
P0.6(AD6)
P0.7(AD7)
EA/VPP
ALE/PROG
PSEN
P2.7(A15)
P2.6(A14)
P2.5(A13)
P2.4(A12)
P2.3(A11)
P2.2(A10)
P2.1(A9)
P2.0(A8)

รูปที่2-3 ลักษณะขาของ 8051 ไมโครคอนโทรลเลอร
7

บทที่2: MCS-51

Architecture

วงจรออสซิลเลเตอรและสัญญาณนาฬิกา
ทุ ก ส ว นของไมโครคอนโทรลเลอร นั้ น จะทํ า งานเป น จั ง หวะเดี ย วกั น ด ว ยการให
จั ง หวะการทํ า งานจากสั ญ ญาณนาฬิ ก าโดย 8051 จะมี ข า 18(XTAL1)และขา19
(XTAL2) ที่เตรียมไวเพื่อตออุปกรณใหวงจรออสซิลเลเตอรภายในทํางานโดยเราจะ
ตอเพียง Crystal Oscillator และตัวเก็บประจุ 2 ตัวดังในรูป2-4 เทานี้ก็จะเกิดสัญญาณ
นาฬิกาที่เปนตัวใหจังหวะกับสวนตางๆภายในของไมโครคอนโทรลเลอร

รูป2-4 วงจรออสซิลเลเตอรสําหรับ 8051
8

4
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
บทที่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
บทที่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
บทที่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
-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
ตําแหนงของ 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
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
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
บทที่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
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
บทที่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
กอนที่จะไปดูการทํางานของวงจรภายในพอรต 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
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
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
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
P3 Bit

Function

Pin

P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7

RxD
TxD
INT0
INT1
T0
T1
WR
RD

10
11
12
13
14
15
16
17

หนาที่อื่นของขาตางๆที่เปนพอรต P3

39

RESET Value of Some 8051 Registers:

Register
PC
ACC
B
PSW
SP
DPTR

Reset Value
0000
0000
0000
0000
0007
0000

RAM are all zero.

P0-P3จะมีคาเปนลอจิก 1
40

20
สรุปในบทนี้ก็จ ะกลาวถึงโครงสรางภายในของรีจิส เตอรทีมี ใน MCS-51ใน
เบื้องตนเพื่อที่จะเรียนรูการเขียนโปรแกรมควบคุมและสําหรับรีจิสเตอรควบคุม
การทํางานตางๆนั้นก็จะกลาวถึงอีกครั้งในตอนที่อธิบายการทํางานของสวน
นั้นๆพรอมทั้งการเขียนโปรแกรมควบคุม
สิ่งที่ควรรูและทบทวน
- Cycle การทํางานของไมโครคอนโทรลเลอร
- การทํางานของพอรตบน MCS-51
- หนวยความจําของ MCS-51
- การติดตอหนวยความจําของ MCS-51
41

21

More Related Content

Viewers also liked

The Haikufinaljan11
The Haikufinaljan11The Haikufinaljan11
The Haikufinaljan11guestd3d7159
 
Johanna lasteaias tehtud kunstitööd
Johanna  lasteaias tehtud kunstitöödJohanna  lasteaias tehtud kunstitööd
Johanna lasteaias tehtud kunstitöödrebazeke
 
Introduzione ai test automatici con PHPunit
Introduzione ai test automatici con PHPunitIntroduzione ai test automatici con PHPunit
Introduzione ai test automatici con PHPunitFabio Giannese (Diodœ)
 
خطة عمل في دورة انتل 2010
خطة عمل في دورة انتل 2010خطة عمل في دورة انتل 2010
خطة عمل في دورة انتل 2010aasrawi
 
Experimento de carater quantico da luz
Experimento de carater quantico da luzExperimento de carater quantico da luz
Experimento de carater quantico da luzLuana Oliveira
 
Stop Allowing Your Life Be Ruled By Cigarettes: Get Aid Quitting Below!
Stop Allowing Your Life Be Ruled By Cigarettes: Get Aid Quitting Below!Stop Allowing Your Life Be Ruled By Cigarettes: Get Aid Quitting Below!
Stop Allowing Your Life Be Ruled By Cigarettes: Get Aid Quitting Below!zippyjail3667
 
Quick start guide_virtualization_uk_a4_online_2021-uk
Quick start guide_virtualization_uk_a4_online_2021-ukQuick start guide_virtualization_uk_a4_online_2021-uk
Quick start guide_virtualization_uk_a4_online_2021-ukAssespro Nacional
 
Challenges & Opportunitities for Digital TV In Africa
Challenges & Opportunitities for Digital TV In AfricaChallenges & Opportunitities for Digital TV In Africa
Challenges & Opportunitities for Digital TV In AfricaBSP Media Group
 
A guideto handbagcare
A guideto handbagcareA guideto handbagcare
A guideto handbagcareAdi Joy
 
Türkiye Marketing Projesi
Türkiye Marketing ProjesiTürkiye Marketing Projesi
Türkiye Marketing ProjesiHakan TOPUZOĞLU
 
Victory of the commons
Victory of the commonsVictory of the commons
Victory of the commonsJoost de Valk
 
транспортир през хор
транспортир през хортранспортир през хор
транспортир през хорA I
 

Viewers also liked (19)

The Haikufinaljan11
The Haikufinaljan11The Haikufinaljan11
The Haikufinaljan11
 
Regional Innovation Strategy South Moravia
Regional Innovation Strategy South Moravia Regional Innovation Strategy South Moravia
Regional Innovation Strategy South Moravia
 
Johanna lasteaias tehtud kunstitööd
Johanna  lasteaias tehtud kunstitöödJohanna  lasteaias tehtud kunstitööd
Johanna lasteaias tehtud kunstitööd
 
Introduzione ai test automatici con PHPunit
Introduzione ai test automatici con PHPunitIntroduzione ai test automatici con PHPunit
Introduzione ai test automatici con PHPunit
 
خطة عمل في دورة انتل 2010
خطة عمل في دورة انتل 2010خطة عمل في دورة انتل 2010
خطة عمل في دورة انتل 2010
 
CV_Narendrababu_T_27Nov2016
CV_Narendrababu_T_27Nov2016CV_Narendrababu_T_27Nov2016
CV_Narendrababu_T_27Nov2016
 
Experimento de carater quantico da luz
Experimento de carater quantico da luzExperimento de carater quantico da luz
Experimento de carater quantico da luz
 
主日投影片
主日投影片主日投影片
主日投影片
 
AR_Labour16_045vud
AR_Labour16_045vudAR_Labour16_045vud
AR_Labour16_045vud
 
Stop Allowing Your Life Be Ruled By Cigarettes: Get Aid Quitting Below!
Stop Allowing Your Life Be Ruled By Cigarettes: Get Aid Quitting Below!Stop Allowing Your Life Be Ruled By Cigarettes: Get Aid Quitting Below!
Stop Allowing Your Life Be Ruled By Cigarettes: Get Aid Quitting Below!
 
APERA-TERA 2016
APERA-TERA 2016APERA-TERA 2016
APERA-TERA 2016
 
What willbecomeofthem
What willbecomeofthemWhat willbecomeofthem
What willbecomeofthem
 
Quick start guide_virtualization_uk_a4_online_2021-uk
Quick start guide_virtualization_uk_a4_online_2021-ukQuick start guide_virtualization_uk_a4_online_2021-uk
Quick start guide_virtualization_uk_a4_online_2021-uk
 
Challenges & Opportunitities for Digital TV In Africa
Challenges & Opportunitities for Digital TV In AfricaChallenges & Opportunitities for Digital TV In Africa
Challenges & Opportunitities for Digital TV In Africa
 
A guideto handbagcare
A guideto handbagcareA guideto handbagcare
A guideto handbagcare
 
Türkiye Marketing Projesi
Türkiye Marketing ProjesiTürkiye Marketing Projesi
Türkiye Marketing Projesi
 
Victory of the commons
Victory of the commonsVictory of the commons
Victory of the commons
 
Free time
Free timeFree time
Free time
 
транспортир през хор
транспортир през хортранспортир през хор
транспортир през хор
 

Similar to MCS51 Architecture

บทที่ 1 พื้นฐานไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
บทที่ 1 พื้นฐานไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์บทที่ 1 พื้นฐานไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
บทที่ 1 พื้นฐานไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์Krukae Technicsakon
 
9789740332824
97897403328249789740332824
9789740332824CUPress
 
Man et mini spi can1
Man et mini spi can1Man et mini spi can1
Man et mini spi can1billsprouse
 
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8Korakot Kaevwichian
 
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8Korakot Kaevwichian
 
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8Korakot Kaevwichian
 
ใบงาน 3.1 นางสาวอุบลวรรณ เลขที่ 30
ใบงาน 3.1 นางสาวอุบลวรรณ  เลขที่  30ใบงาน 3.1 นางสาวอุบลวรรณ  เลขที่  30
ใบงาน 3.1 นางสาวอุบลวรรณ เลขที่ 30Nuntawan Singhakun
 
ใบงาน 3.1 นางสาวอุบลวรรณ เลขที่ 30
ใบงาน 3.1 นางสาวอุบลวรรณ  เลขที่  30ใบงาน 3.1 นางสาวอุบลวรรณ  เลขที่  30
ใบงาน 3.1 นางสาวอุบลวรรณ เลขที่ 30Ubonwan Tupsai
 
คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์Srisomwong Sukkantharak
 
คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์Srisomwong Sukkantharak
 
งานไมโครคอนโทรลเลอร์
งานไมโครคอนโทรลเลอร์งานไมโครคอนโทรลเลอร์
งานไมโครคอนโทรลเลอร์Supawat Simswat
 
งานไมโครคอน2
งานไมโครคอน2งานไมโครคอน2
งานไมโครคอน2Supawat Simswat
 
ใบงาน 3.1 ชื่อน.ส.กรกช แก้ววิเชียร ม.4.5
ใบงาน 3.1 ชื่อน.ส.กรกช แก้ววิเชียร ม.4.5ใบงาน 3.1 ชื่อน.ส.กรกช แก้ววิเชียร ม.4.5
ใบงาน 3.1 ชื่อน.ส.กรกช แก้ววิเชียร ม.4.5Korakot Kaevwichian
 
เริ่มต้นใช้งานชุดกล่องสมองกล IPST-SE
เริ่มต้นใช้งานชุดกล่องสมองกล IPST-SEเริ่มต้นใช้งานชุดกล่องสมองกล IPST-SE
เริ่มต้นใช้งานชุดกล่องสมองกล IPST-SEInnovative Experiment Co.,Ltd.
 
โครงสร้างคอมพิวเตอร์และหลักการทำงานเบื้องต้น
โครงสร้างคอมพิวเตอร์และหลักการทำงานเบื้องต้นโครงสร้างคอมพิวเตอร์และหลักการทำงานเบื้องต้น
โครงสร้างคอมพิวเตอร์และหลักการทำงานเบื้องต้นBeerza Kub
 
หน่วยที่ 2 โปรโตคอล
หน่วยที่ 2 โปรโตคอลหน่วยที่ 2 โปรโตคอล
หน่วยที่ 2 โปรโตคอลSunthareenad
 
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์Noomim
 

Similar to MCS51 Architecture (20)

บทที่ 1 พื้นฐานไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
บทที่ 1 พื้นฐานไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์บทที่ 1 พื้นฐานไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
บทที่ 1 พื้นฐานไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
 
9789740332824
97897403328249789740332824
9789740332824
 
Man et mini spi can1
Man et mini spi can1Man et mini spi can1
Man et mini spi can1
 
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
 
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
 
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
ใบงานที่ 3 น.ส.กรกช แก้ววิเชียร ม.4.5 เลขที่ 8
 
ใบงาน 3.1 นางสาวอุบลวรรณ เลขที่ 30
ใบงาน 3.1 นางสาวอุบลวรรณ  เลขที่  30ใบงาน 3.1 นางสาวอุบลวรรณ  เลขที่  30
ใบงาน 3.1 นางสาวอุบลวรรณ เลขที่ 30
 
ใบงาน 3.1 นางสาวอุบลวรรณ เลขที่ 30
ใบงาน 3.1 นางสาวอุบลวรรณ  เลขที่  30ใบงาน 3.1 นางสาวอุบลวรรณ  เลขที่  30
ใบงาน 3.1 นางสาวอุบลวรรณ เลขที่ 30
 
คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์
 
คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์
 
งานไมโครคอนโทรลเลอร์
งานไมโครคอนโทรลเลอร์งานไมโครคอนโทรลเลอร์
งานไมโครคอนโทรลเลอร์
 
งานไมโครคอน2
งานไมโครคอน2งานไมโครคอน2
งานไมโครคอน2
 
ใบงาน 3.1 ชื่อน.ส.กรกช แก้ววิเชียร ม.4.5
ใบงาน 3.1 ชื่อน.ส.กรกช แก้ววิเชียร ม.4.5ใบงาน 3.1 ชื่อน.ส.กรกช แก้ววิเชียร ม.4.5
ใบงาน 3.1 ชื่อน.ส.กรกช แก้ววิเชียร ม.4.5
 
เริ่มต้นใช้งานชุดกล่องสมองกล IPST-SE
เริ่มต้นใช้งานชุดกล่องสมองกล IPST-SEเริ่มต้นใช้งานชุดกล่องสมองกล IPST-SE
เริ่มต้นใช้งานชุดกล่องสมองกล IPST-SE
 
Week8 TCP/IP and internet
Week8 TCP/IP and internetWeek8 TCP/IP and internet
Week8 TCP/IP and internet
 
โครงสร้างคอมพิวเตอร์และหลักการทำงานเบื้องต้น
โครงสร้างคอมพิวเตอร์และหลักการทำงานเบื้องต้นโครงสร้างคอมพิวเตอร์และหลักการทำงานเบื้องต้น
โครงสร้างคอมพิวเตอร์และหลักการทำงานเบื้องต้น
 
งานคอม 18.11.11
งานคอม 18.11.11งานคอม 18.11.11
งานคอม 18.11.11
 
งานคอม 18.11.11
งานคอม 18.11.11งานคอม 18.11.11
งานคอม 18.11.11
 
หน่วยที่ 2 โปรโตคอล
หน่วยที่ 2 โปรโตคอลหน่วยที่ 2 โปรโตคอล
หน่วยที่ 2 โปรโตคอล
 
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
 

MCS51 Architecture

  • 1. MCS-51 Architecture Microprocessor by pisit wisutmetheekorn psw1999@yahoo.com บทที่2: MCS-51 Architecture รูปที่2-1โครงสรางภายใน8051 2 1
  • 2. บทที่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
  • 4. +5VDC 0V P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST (RXD)P3.0 (TXD)P3.1 (INT0)P3.2 (INT1)P3.3 (T0)P3.4 (T1)P3.5 (WR)P3.6 (RD)P3.7 XTAL2 XTAL1 GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 8051 (8031) 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc P0.0(AD0) P0.1(AD1) P0.2(AD2) P0.3(AD3) P0.4(AD4) P0.5(AD5) P0.6(AD6) P0.7(AD7) EA/VPP ALE/PROG PSEN P2.7(A15) P2.6(A14) P2.5(A13) P2.4(A12) P2.3(A11) P2.2(A10) P2.1(A9) P2.0(A8) รูปที่2-3 ลักษณะขาของ 8051 ไมโครคอนโทรลเลอร 7 บทที่2: MCS-51 Architecture วงจรออสซิลเลเตอรและสัญญาณนาฬิกา ทุ ก ส ว นของไมโครคอนโทรลเลอร นั้ น จะทํ า งานเป น จั ง หวะเดี ย วกั น ด ว ยการให จั ง หวะการทํ า งานจากสั ญ ญาณนาฬิ ก าโดย 8051 จะมี ข า 18(XTAL1)และขา19 (XTAL2) ที่เตรียมไวเพื่อตออุปกรณใหวงจรออสซิลเลเตอรภายในทํางานโดยเราจะ ตอเพียง Crystal Oscillator และตัวเก็บประจุ 2 ตัวดังในรูป2-4 เทานี้ก็จะเกิดสัญญาณ นาฬิกาที่เปนตัวใหจังหวะกับสวนตางๆภายในของไมโครคอนโทรลเลอร รูป2-4 วงจรออสซิลเลเตอรสําหรับ 8051 8 4
  • 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
  • 20. P3 Bit Function Pin P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RxD TxD INT0 INT1 T0 T1 WR RD 10 11 12 13 14 15 16 17 หนาที่อื่นของขาตางๆที่เปนพอรต P3 39 RESET Value of Some 8051 Registers: Register PC ACC B PSW SP DPTR Reset Value 0000 0000 0000 0000 0007 0000 RAM are all zero. P0-P3จะมีคาเปนลอจิก 1 40 20
  • 21. สรุปในบทนี้ก็จ ะกลาวถึงโครงสรางภายในของรีจิส เตอรทีมี ใน MCS-51ใน เบื้องตนเพื่อที่จะเรียนรูการเขียนโปรแกรมควบคุมและสําหรับรีจิสเตอรควบคุม การทํางานตางๆนั้นก็จะกลาวถึงอีกครั้งในตอนที่อธิบายการทํางานของสวน นั้นๆพรอมทั้งการเขียนโปรแกรมควบคุม สิ่งที่ควรรูและทบทวน - Cycle การทํางานของไมโครคอนโทรลเลอร - การทํางานของพอรตบน MCS-51 - หนวยความจําของ MCS-51 - การติดตอหนวยความจําของ MCS-51 41 21