01 mcs51arch.doc · web viewท port p3.x ถ า bit latch ของ p3.x สามารถเล...

43
Lecture 01 MICROPROCESSOR AND MICROCONTROLLER ARCHITECTURES MCS-51 MICROCONTROLLER คคคคคคคคคคคคคคคค คคคคคคค ogic คคคคคคคคคคคคคคคค BIT คคค คคคคคคคคคคคคคค คคคคคคค 4K คคคคค คคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคค คคคคคคค คคคคคค 64K 1

Upload: others

Post on 22-Feb-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

MICROPROCESSOR AND MICROCONTROLLER ARCHITECTURES

MCS-51 MICROCONTROLLER

คณุสมบติัเบื้องต้นของ Microcontroller ในตระกลู MCS-51 จะมดีังน้ี

มี Core CPU ท่ีเป็น 8-Bit และชุดคำ"สัง่ที่เหม"ะในง"นควบคมุ ส"ม"รถป ogic กับขอ้มูลในระดับ BIT ได้ มหีน่วยคว"มจำ" โปรแกรม 4K ภ"ยใน และรองรบัก"รใชง้"นของ

หน่วยคว"มจำ" โปรแกรม ได้ถึง 64K มหีน่วยคว"มจำ" ขอ้มูล (RAM) 128 Bytes ภ"ยใน และรองรบั

ก"รใชง้"นของหน่วยคว"มจำ" ขอ้มูล ได้ถึง 64K มี Port ท่ีเป็นได้ทัง้ I / O ทัง้หมด 4 port และส"ม"รถใชง้"นได้ใน

ระดับ BIT 8-bit CPU

1

Page 2: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

มสีว่น Timer / Counter ขน"ด 16 Bit สองชุด สำ"หรบัใชใ้นก"ร จบัเวล" หรอืนับจำ"นวน

มี Full duplex UART สำ"หรบัใช้ รบั/ สง่ ขอ้มูลแบบอนุกรม รบั Interrupt ได้จ"ก 6 แหล่งกำ"เนิด โดยมี 5 ตำ"แหน่งของ ISR

และก"ร Interrupt โดยส"ม"รถจดัระดับคว"มสำ"คัญได้ 2 ระดับ มตัีวกำ"เนิดคว"มถ่ี Clock ภ"ยใน

MCS-51 FAMILYMCS-51 นัน้ ได้มกี"รออกแบบและผลิตออกม"ในหล"ยๆ รูปแบบ

ซึ่งมคีว"มส"ม"รถและสว่นประกอบภ"ยในที่เพิม่ขึ้นม" แต่อย"่งไรก็ดีคำ"สัง่ ต่"งๆ ยงัคงเหมอืนกัน

DeviceName

ROMLESSVersion

ROMBytes

RAMBytes

16-BitTimers

SpeedUp to

Process

80C51 80C31 4K 128 2 20MHz

CMOS

80C52 80C32 8K 256 3 20MHz

CMOS

83C154 83C154 16K 256 3 20MHz

CMOS

83C154D

- 32K 256 3 16MHz

CMOS

80C51 80C31 4K 128 2 42MHz

SCMOS

80C52 80C32 8K 256 3 42MHz

SCMOS

2

Page 3: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

83C154

80C154

16K 256 3 42MHz

SCMOS

83C154D

- 32K 256 3 36MHz

SCMOS

80C51PX

- - 128/256

2/3 12MHz

CMOS

3

9 = FLASH

Page 4: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

EXTERNAL VIEW

Pin I / O / Z

หน้"ท่ี / ก"รทำ"ง"น

P0.0-P0.7

I / O / Z

Port 0 เป็น Open drain bidirectional I/O Port 8 Bit

เมื่อใชเ้ป็น Output มนัส"ม"รถรบั (Sink) กระแสของ Input แบบ LS TTL ได้ 8 ตัว นอกจ"กน้ี ยงัทำ"หน้"ท่ีเป็น Addr. Bus สว่น

ของ Low byte (PCL) สลับกับ Data Bus ในกรณีท่ีมกี"รใชง้"น External Memory

P1.0-P1.7

I / O Port 1 เป็น Bidirectional I/O Port 8 Bit with Internal pull-up

เมื่อใชเ้ป็น Output มนัส"ม"รถรบั/ จ"่ย4

Page 5: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

(Sink/Source) กระแสของ Input แบบ LS TTL ได้ 4 ตัว

สำ"หรบั 80C52, 83C154 and 83C154D ข" Port 1.0 และ P1.1 จะส"ม"รถใชง้"นเป็น

T2, T2EX (T2: Timer 2 input, T2EX: Timer 2 “Capture” input)

P2.0-P2.7

I / O Port 2 เป็น Bidirectional I/O Port 8 Bit with Internal pull-up

เมื่อใชเ้ป็น Output มนัส"ม"รถรบั/ จ"่ย(Sink/Source) กระแสของ Input แบบ LS TTL ได้ 4 ตัว

นอกจ"กน้ี Port 2 ยงัทำ"หน้"ที่เป็น Address Bus ในสว่นของ High byte (PCH) ในกรณี

ท่ีมกี"รใชง้"น External Memory ท่ีใชก้"ร อ้"ง Address แบบ 16 Bit

P3.0-P3.7

I / O

IOIIIIOO

Port 3 เป็น Bidirectional I/O Port 8 Bit with Internal pull-up

นอกจ"กน้ีแล้ว ข" ต่"งๆ ของ Port 3 จะมกี"ร ใชง้"นเป็น Special feature ของ MCS-51

ดังต่อไปน้ีP3.0: RXD (Serial input port)P3.1: TXD (Serial output port)P3.2: INT0 (External interrupt 0)P3.3: INT1 (External interrupt 1)P3.4: T0 (Timer 0 external input)P3.5: T1 (Timer 1 external input)P3.6: WR (External data memory write strobe)P3.7: RD (External data memory read strobe)

RST I Reset เป็นสญัญ"ณป้อนใหก้ับ MCS-51 เพื่อ5

Page 6: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

เป็นก"รกำ"หนดค่"เริม่ต้นต่"งๆ ก"รทำ" Reset น้ีจะต้องทำ"ทกุครัง้ท่ีจ"่ยไฟใหก้ับวงจร ในก"ร

Reset สญัญ"ณ RST ต้องมอียูอ่ย"่งน้อย 2 Machine cycles จงึจะทำ"ก"ร Reset ได้

ALE O Address Latch Enable เป็นสญัญ"ณ จะไป ทำ"ใหค่้"ของ PCL ถกูเก็บเข"้ท่ี LATCH

ในระหว"่งท่ี ค่"ของ PCL ออกม"ท่ี P0 สญัญ"ณ ALE น้ี จะมอีอกม"ตลอดเวล" (ไมว่"่ จะมกี"รใช้ External memory หรอืไม)่ เป็น

คว"มถ่ี 1/6 ของสญัญ"ณ Clock ซึ่งส"ม"รถ นำ"ไปใชเ้ป็นฐ"นเวล"ใหก้ับวงจรภ"ยนอกได้ แต่

อย"่งไรก็ดี ในกรณีท่ีเป็นก"รติดต่อกับExternal data memory สญัญ"ณ ALE

จะข"้มไป หน่ึง ลกูO Program Store Enable สญัญ"ณ

ซึ่งเป็นสญัญ"ณท่ีใชใ้นก"ร Fetch คำ"สัง่จ"กExternal program memory จะไมท่ำ"ง"น

เมื่อเป็นก"ร Fetch คำ"สัง่จ"ก Internal program memory

สญัญ"ณ น้ีจะมเีกิดขึ้น สองครัง้ ต่อ หน่ึง Machine cycle

I External Access โดยก"รต่อข"สญัญ"ณ ‘เป็น High’ ก"ร Fetch คำ"สัง่ที่

Address น้อยกว"่ 0FFFh (4K สำ"หรบั80C51) จะได้จ"ก Internal program memory และถ้"เป็น Address ตัง้แต่1000H ก็ จะเป็นก"รอ่"นจ"ก External program memory

ถ้"ต่อข" ‘เข"้กับ Low’ ก"ร Fetch คำ"สัง่ ทัง้หมดจะกระทำ"กับ External program

6

Page 7: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

memoryXTAL1 I Input to inverting oscillator amplifier

และใชส้ำ"หรบัก"รป้อน External clockXTAL2 O Output to inverting oscillator

amplifier

INTERNAL ORGANIZATION OF THE MCS-51 โครงสร"้งภ"ยในของ Microcontroller MCS-51 จะมสีว่นประกอบดัง

แสดงน้ี

7

Page 8: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

MEMORY ORGANIZATION IN MCS-51

8

Page 9: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

Microcontroller MCS-51 ถกูออกแบบม"ให้ มหีน่วยคว"มจำ"สำ"หรบั เก็บโปรแกรม (Program memory) และหน่วยคว"มจำ"สำ"หรบัเก็บ

ขอ้มูล (Data Memory) ท่ีแยกออกจ"กกันดังรูป

ก"รอ่"น External program memory นัน้ MCS-51 จะใชข้" สญัญ"ณ (Program Store Enable)

ก"รอ่"นและเขยีน External data memory นัน้ MCS-51 จะใชข้" สญัญ"ณ และ

9

Page 10: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

PROGRAM MEMORY สว่นของ Program memory จะเป็นหน่วยคว"มจำ"ที่อ่"นได้เพยีงอย"่ง

เดียว และส"ม"รถมไีด้ทัง้หมด 64K ตำ"แหน่ง เชน่

ก) ข) ค) สำ"หรบั MCS-51 ในแบบที่มี Program memory ภ"ยใน ก็จะมพีื้นที่ใน

ก"รเก็บโปรแกรมภ"ยใน IC เอง 4K (รูป ก), 8K (รูป ก), 16K หรอื32K Address ( ต"มรุน่ของ IC ท่ีใช)้ สำ"หรบัหน่วยคว"มจำ"ท่ีม"กกว"่นี้

ก็จะเป็น Program memory ภ"ยนอก สว่น MCS-51 ท่ีไมม่ีInternal program memory สว่นของ Program memory

ทัง้หมดจะอยูภ่"ยนอก (รูป ค) Program memory จะมตีำ"แหน่งได้ ทัง้หมด 64K Address

จ"กรูปท่ี แสดงสว่นของ

Program memory ใน

ตำ"แหน่งเริม่ต้น ซึ่งเมื่อ CPU เริม่

ก"รทำ"ง"นหลัง จ"กก"ร Reset ก็

จะเริม่ก"รทำ"ง"น ต"มคำ"สัง่ที่

Address 0000H สำ"หรบั

10

Page 11: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

Address ต่อม"เป็นตำ"แหน่งของ ISR: Interrupt Service Routine โดยก"รทำ"ง"นของ Interrupt ใน MCS-51 เมื่อเกิด

สญัญ"ณ Interrupt เข"้ม" มนัก็จะกระโดดก"รทำ"ง"นม"ยงัโปรแกรมในตำ"แหน่งที่กำ"หนดน้ี

ตัวอย"่งเชน่ สำ"หรบั Interrupt 0 จ"กภ"ยนอก เมื่อ MCS-51 ได้รบั สญัญ"ณ Interrupt น้ี มนัก็จะกระโดดก"รทำ"ง"นม"ยงัโปรแกรมใน

Address 0003H และสำ"หรบั Interrupt ท่ีเกิดจ"ก Timer 0 ก็จะกระโดดก"รทำ"ง"นม"ยงั โปรแกรมใน Address 000BH และ Interrupt 1 จ"กภ"ยนอก ก็จะ

กระโดดก"รทำ"ง"นม"ยงัโปรแกรมใน Address 0013H เป็นต้น ในแต่ละ ISR นัน้จะมพีื้นในก"รเก็บโปรแกรมได้ 8 Address ซึ่งถ้" ISR

ท่ีต้องก"ร เป็นโปรแกรมที่สัน้ๆ ก็จะส"ม"รถใสเ่ข"้ไปได้ แต่ถ้"เป็น ISR ท่ี ย"วม"กก็ต้องใชค้ำ"สัง่ Jump ไปยงัโปรแกรมท่ีตำ"แหน่งอ่ืนอีกที

DATA MEMORYData memory ของ MSC-51 นัน้จะแบง่ออกเป็น Internal data memory และ External data memory โดยก"รใชง้"นของ Data memory ทัง้สองสว่นน้ีจะมี Address ท่ีแยกจ"กกันด้วย

MCS-51 with 128 bytes Internal Data memory (ซ"้ย)MCS-51 with 256 bytes Internal Data memory (ขว")

11

Page 12: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

ก"รออกแบบของ Data memory ภ"ยในน้ี จะทำ"ใหส้"ม"รถเรยีกใชง้"น ได้โดยใช้ Address เพยีง 8 Bit แต่ก"รใช้ Address เพยีง 8 Bit ทำ"ให้

อ้"งถึงตำ"แหน่งของ Data memory ภ"ยในได้เพยีง 256 ตำ"แหน่ง เท่"นัน้ (00H – FFH) ซึ่งก็เพยีงพอสำ"หรบัก"รใชใ้นก"รทำ"ง"นของ

โปรแกรมขน"ดเล็ก แต่ถ้"ต้องก"รใชง้"น Data memory จำ"นวนม"ก จะต้องเป็นก"รใชง้"นของ External data memory ซึ่งส"ม"รถใชก้"ร

อ้"งถึงตำ"แหน่ง Address แบบ 16 Bit โดยใช้ DPTR: Data pointer (Data memory address register) INTERNAL DATA MEMORY

ผังก"รจดัแบง่พื้นท่ีของ Internal data memory จะเป็นดังรูป ซึ่งมนั จะถกูแบง่ออกเป็น ส"มสว่นด้วยกัน คือ Lower 128, Upper 128

และ SFR และจ"กก"รที่ Internal data memory นัน้มเีพยีง 256 ตำ"แหน่ง

เท่"นัน้ ทำ"ใหก้"รอ้"ง Address ส"ม"รถทำ"ได้ โดยใชเ้พยีง 8 Bit

แต่ด้วยเทคนิคของก"รอ้"งถึงตำ"แหน่งขอ้มูล (Addressing mode) ทำ"ใหไ้ด้ตำ"แหน่งของ Internal data memory ทัง้หมด 384 bytes

โดยสำ"หรบัขอ้มูลตัง้แต่ Address 80H – FFH ถ้"อ้"งถึงขอ้มูลท่ีAddress นัน้ๆ ด้วยวธิขีอง Direct addressing ก็จะได้ขอ้มูลที่ม"จ"ก

คนละสว่น กับก"รอ้"งถึงขอ้มูลที่ Address เดียวกันนัน้ ด้วยวธิขีองIndirect addressing

12

Page 13: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

จ"กรูปจะเหน็ได้ว"่ Memory ในสว่นของ Upper 128 ก็จะมี Address เดียวกับ Memory ในสว่นของ SFR แต่จะใชว้ธิกี"รเข"้ถึงขอ้มูลท่ีแตก

ต่"งกันนัน่เอง

Lower 128 bytes of internal data memoryInternal data memory 128 ตำ"แหน่งแรก จะมอียูเ่หมอืนกัน

ทัง้หมดใน MCS-51 แบบต่"งๆ โดยจะมกี"รจดัแบง่ดังรูป

ในสว่นของ 32 bytes แรก จะใชง้"นเป็น Register 4 ชุด(Banks) ชุด ละ 8 registers คือ R0 – R7 ซึ่งส"ม"รถเรยีกใชง้"นได้จ"กคำ"สัง่ต่"งๆ

ก"รเลือกชุดของ Register ท่ีจะใชง้"น จะทำ"โดย ใชส้ถ"นะของขอ้มูล 2 Bit ท่ีอยูใ่น PSW: Program Status Word

ตำ"แหน่ง 07H เป็นตำ"แหน่งที่ถกูกำ"หนดไวใ้น Stack pointer โดย อัตโนมติั ซึ่ง Stack จะเป็นท่ีเก็บขอ้มูลชัว่คร"ว เมื่อมกี"รเรยีกทำ"ง"น

โปรแกรมยอ่ย หรอืเมื่อถกูเรยีกใช้ ขอ้มูลจะถกูเก็บท่ีตำ"แหน่ง 08H เรื่อย ไปในลักษณะ last in- first out

ถัดม"จ"ก Register banks อีก 16 Address จะเป็นพื้นที่เก็บขอ้มูลที่ ส"ม"รถเรยีกใชง้"นในระดับ Bit ได้ 128 bit โดยจะมี Address สำ"หรบั

ก"รเรยีกใชง้"นระดับ Bit คือ 00H - 7FH ขอ้มูลในทกุๆ ตำ"แหน่งในสว่น

13

Page 14: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

ของ Lower 128 น้ี ส"ม"รถจะอ้"งถึงด้วยวธิกี"รของDirect/Indirect addressing

Upper 128 bytes of internal data memory หน่วยคว"มจำ"ในสว่นของ Upper 128 น้ี จะมสีองสว่นทับซอ้นกันอยูใ่น

MCS-51 แบบท่ีมี Internal data memory 256 ตำ"แหน่งเท่"นัน้ เชน่ 80C52, 83C154, 83C154D ก"รเข"้ถึงขอ้มูลท่ีอยูใ่น Upper

128 น้ีจะต้องทำ"โดยใชว้ธิกี"รของ Indirect addressing เท่"นัน้ เชน่ เป็นก"รใชง้"นโดยอ้"งตำ"แหน่งด้วย Stack pointer หรอื R0, R1

เป็นต้น

แต่ถ้" MCS-51 ตัวนัน้มี Internal data memory เพยีง 128 ตำ"แหน่ง สว่น 80H-F8H จะเป็นตำ"แหน่งของรจีสิเตอรฟ์งัก์ชัน่พเิศษ

(Special Function Registers) เพยีงอย"่งเดียว และต้องอ้"งถึง ขอ้มูลแบบ Direct addressing เพื่อเข"้ถึงหน่วยคว"มจำ"สว่นน้ีแท้จรงิ

แล้วจะก"รอ้"งถึงขอ้มูลสองแบบนี้เป็นก"รเข"้ถึงเป็นหน่วยคว"มจำ"คนละ สว่นกัน ใน สว่น Upper 128

SFR: SPECIAL FUNCTION REGISTERS ก"รจดัพื้นท่ีใน SFR จะเป็นพื้นที่ในก"รเก็บค่"ของ Register ใชง้"น

พเิศษต่"งๆ เชน่ Accumulator, Port latch, ค่" Timer และRegister สำ"หรบัควบคมุก"รทำ"ง"นของสว่นต่"งๆ ภ"ยใน เชน่ PSW

14

Page 15: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

ก"รอ้"งอิงถึงขอ้มูลใน SFR น้ี จะทำ"ได้ด้วยวธิขีอง Direct addressing เท่"นัน้ ซึ่ง MCS-51 ทกุตัวจะมี SFR ท่ีเป็นม"ตรฐ"น

เหมอืนกันในตำ"แหน่งเดียวกัน และสำ"หรบั MCS-51 แบบท่ีมคีว"ม ส"ม"รถเพิม่ขึ้นนัน้ ก็จะมกี"รกำ"หนด ตำ"แหน่งใน SFR เพื่อรองรบัก"ร

ทำ"ง"นที่เพิม่ขึ้น และจะมตีำ"แหน่ง Address ใน SFR อยู่ 16 ตำ"แหน่งที่ส"ม"รถ

เรยีกใชง้"นในระดับ Bit ได้ คือตำ"แหน่งใน SFR ท่ีมี Address ลงท้"ย ด้วย 0H และ 8H โดยจะมี Bit address ตัง้แต่ 80H – FFH

15

Page 16: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

จะเหน็ได้ว"่ตำ"แหน่งต่"งๆ ใน SFR จะไมไ่ด้ถกูใชทั้ง้หมด ก"รอ่"นขอ้มูล จ"กตำ"แหน่งที่ยงัไมไ่ด้ กำ"หนดน้ี จะทำ"ใหไ้ด้ค่"สุม่ออกม" สว่นก"รเขยีน

‘ขอ้มูลเข"้ไปจะไมม่ผีลใดๆ แต่อย่"งไรก็ดี เร"ไมค่วรเขยีนขอ้มูล 1’ เข"้ไป ในตำ"แหน่งท่ีไมไ่ด้กำ"หนดน้ี เน่ืองจ"กมนัอ"จถกูใชง้"นในก"รควบคมุ

ฟงัก์ชนัก"รทำ"ง"นที่จะเพิม่เข"้ม"ในอน"คตAccumulator (A) 0E0H

เป็นรจีสิเตอรท์ี่ใชม้"ก มขีน"ด 8 Bit คำ"สัง่ที่จะอ่"นหรอืเก็บขอ้มูลจ"ก ภ"ยนอกจะต้องกระทำ"ผ่"นรจีสิเตอรตั์วน้ีเท่"นัน้ ในรหสัคำ"สัง่จะใชอั้กษร A

B Register (B) 0F0H16

Page 17: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

มขีน"ด 8 Bit ใชใ้นก"รคณูและก"รห"รเท่"นัน้ หรอือ"จใชใ้นก"รเก็บ ขอ้มูลอ่ืนๆ ท่ีต้องก"รก็ได้

Program status word (PSW) 0D0H มขีน"ด 8 Bit แต่ละ Bit จะบอกถึงสภ"วะต่"งๆ ในก"รทำ"ง"นของ

CPU (Flag) ซึ่งแต่ละ Bit ของ PSW ส"ม"รถกำ"หนดใหเ้ป็น 1 หรอื 0 ได้โดยคำ"สัง่ SETB หรอื CLRB ต"มลำ"ดับค่"ตำ"แหน่ง Bit Address 0

ถึง Bit 7 ของ PSW เท่"กับ 0D0H ถึง 0D7H

Stack Pointer (SP) 081H มขีน"ด 8 Bit ใชช้ีต้ำ"แหน่งในหน่วยคว"มจำ"ภ"ยใน 8051 ท่ีจะใชส้ร"้ง

เป็น Stack ใชเ้ก็บตำ"แหน่งหน่วยคว"มจำ"ก่อนก"รทำ"ง"นคำ"สัง่ CALL หรอืใชเ้ก็บขอ้มูลด้วยคำ"สัง่ PUSH ค่"ของ SP น้ีจะมคี่"ท่ีเพิม่ขึ้น ก่อนท่ีจะ

มกี"รเก็บขอ้มูลเข"้ไป ค่"ในรจีสิเตอรน้ี์จะมคี่" 07H เมื่อมกี"รรเีซท็ทำ"ให้ ก"รเก็บขอ้มูลตำ"แหน่งแรกของ Stack เริม่ที่ Internal data

memory ตำ"แหน่งที่ 08HData Pointer Register (DPTR) 82H และ83H

ประกอบไปด้วย Register ขน"ด 8 Bit 2 ตัวคือ DPH และ DPL ซึ่งDPTR น้ี จะใชใ้นก"รชีต้ำ"แหน่งของขอ้มูลของ External data memory แบบ 16 Bit ในก"รแก้ไขขอ้มูลใน Register DPTR จะ

กระทำ"ทีละ 16 Bit หรอื 8 Bit ก็ได้ (DPH, DPL)

17

Page 18: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

PORT 0 ถึง 3 (P0, P1, P2, P3) 80H, 90H, 0A0H, 0B0H

เป็น Register ขน"ด 8 Bit ใชอ่้"นและเขยีนขอ้มูลติดต่ออุปกรณ์ ภ"ยนอก ก"รเขยีนขอ้มูลไปยงัหน่วยคว"มจำ"แต่ละตำ"แหน่งเป็นก"รสง่

ขอ้มูลไปยงัพอรท์นัน้ๆ ของ MCS-51 ขอ้มูลท่ีเขยีนออกไปจะถกู Latch ค้"งไวท้ี่ Register น้ี และปร"กฏที่แต่ละ Bit ของ Port ก"รอ่"นขอ้มูล

จ"ก Register แต่ละตัวจะเป็นก"รอ่"นสภ"วะ Logic ท่ีมปีร"กฏอยูแ่ต่ละ ข"ของ Port นัน้ๆแต่ก"รอ่"นขอ้มูล ต้องเขยีน 11111111B ไปที่พอร์

ทนัน้ๆก่อนSerial Data Buffer (SBUF) 99H

มขีน"ด 8 Bit แต่จ"กโครงสร"้งภ"ยในแล้วมนัคือ Register 2 ตัวที่ มชีื่อเดียวกัน ตัวหน่ึงสำ"หรบัเก็บขอ้มูลท่ีจะสง่แบบอนุกรม และอีกตัวหน่ึง

สำ"หรบัรบัขอ้มูลแบบอนุกรมที่เข้"ม" ในก"รเขยีนขอ้มูลเข"้ท่ี SBUF มนัจะ ถกูเขยีนไปยงัที่สำ"หรบัเก็บขอ้มูลสำ"หรบัสง่ และเริม่ต้นก"รสง่ขอ้มูล สว่น

ก"รอ่"นขอ้มูลจ"ก SBUF ก็จะเป็นก"รอ่"นค่"ของขอ้มูลที่รบัเข้"ม"ได้

TIMER/COUNTER Register (8CH, 8AH) (8DH, 8BH) และ (0CDH, 0CCH)

เป็นรจีสิเตอรค์ู่ใชใ้นก"รเก็บค่"ของก"รนับแบบ 16 Bit ใน 80C51 จะมีTimer อยู่ 2 ชุดได้แก่ Timer 0 (TH0, TL0), Timer 1(TH1, TL1) และ Timer 2 (TH2, TL2) (ถ้"มี) ใชง้"นเป็น Timer หรอืCounter

ก"รกำ"หนดก"รทำ"ง"นของวงจร Timer ในแบบ Timer หรอื Counter ทำ"ได้โดยก"รกำ"หนดใน Register TMOD (Timer/Counter Mode

Control Register) ก"รทำ"ง"นเป็น Timer คือก"รใช้ Timer 0 หรอื1 นับจำ"นวนไซเคิลของสญัญ"ณน"ฬิก" ในก"รทำ"ง"นเป็น Counter คือ

ก"รใช้ Register THx และ TLx ทำ"ก"รนับจำ"นวนไซเคิลของสญัญ"ณที่ เข"้ม"ท"งข" T0 หรอื T1

Control Registers

18

Page 19: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

Interrupt Priority Register (IP), Interrupt Enable Register (IE) สำ"หรบักำ"หนดรูปแบบก"รทำ"ง"น และสถ"นะของก"ร Interrupt

Timer/Counter Mode Control Register (TMOD), Timer/Counter Control Register (TCON), T2CON

สำ"หรบักำ"หนดรูปแบบก"รทำ"ง"นของ Timer/Counter และ Serial Port Control Register (SCON) จะสำ"หรบักำ"หนดรูปแบบก"รทำ"ง"น

ของ Serial port และ

Power Control Register (PCON) สำ"หรบักำ"หนดรูปแบบก"รใชพ้ลังง"นของตัว CPU

POWER-SAVING MODESในก"รใชง้"นซึ่งต้องคำ"นึงถึงคว"มสิน้เปลืองพลังง"นเป็น

เรื่องสำ"คัญ เชน่ระบบท่ีทำ"ง"น ด้วย Battery ตัว MCS-

51 ได้ถกูออกแบบม"ใหม้รูีป แบบก"รประหยดัพลังง"น 2

แบบคือ Power down และIdle modeก"รเข"้สูก่"รทำ"ง"นในแบบ

ประหยดัพลังง"นน้ี ส"ม"รถท่ี จะทำ"ได้โดย Software ด้วย

ก"รตัง้ค่"ผ่"น Register PCON

POWER DOWN MODE19

Page 20: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

เป็นก"รลดก"รใชก้ระแสของตัว MCS-51 ใหเ้หลือเพยีงไมก่ี่ A (น้อย กว"่ 10 µA)

หลังจ"กคำ"สัง่ท่ีทำ"ให้ PCON.1=1 แล้ว MCS-51 จะเข"้สู่ Power down mode วงจร Oscillator จะหยุดทำ"ง"น และเป็นก"รปิด

สญัญ"ณ Clock ทัง้หมด ดังนัน้จะไมม่กี"รทำ"ง"นใดๆ แต่ค่"ขอ้มูลต่"งๆ ใน Internal RAM และขอ้มูลในรจีสิเตอรต่์"งๆ รวมถึงค่"ขอ้มูลท่ีสง่ไป

ออกยงั Port จะไมป่ล่ียนแปลง ก"รใชก้ำ"ลังจะตำ่"ม"ก ข"สญัญ"ณ ALE, ~PSEN จะมสีถ"นะเป็น Logic Low ก"รออกจ"ก Power down mode มวีธิเีดียวคือ ก"รทำ" Hardware reset แต่จะทำ"ใหข้อ้มูลในSFR เปล่ียนไปเป็นค่"เริม่ต้นทัง้หมด จะมแีต่ค่"ขอ้มูลใน RAM เท่"นัน้ท่ีจะคงเดิม

อย"่งไรก็ต"มต้องระวงัท่ีว"่ VCC จะต้องไมล่ดลงก่อนที่ MCS-51 เข"้สู่Power down mode และจะต้องกลับเป็นค่"ปกติ ก่อนที่จะออกจ"กPower down mode น้ี สญัญ"ณ Reset ซึ่งจะเป็นก"รเปิดก"ร

ทำ"ง"นของ Oscillator ต้องไมเ่กิดขึ้นก่อนที่ VCC จะกลับเป็นปกติ และจะ ต้องมอียูเ่ป็นเวล"น"นพอท่ีสญัญ"ณ Clock จะเกิดขึ้นคงตัว

โดยปกติแล้ว เมื่อทำ"ก"ร Reset หรอืเมื่อเริม่จ"่ยไฟใหก้ับระบบ ค่"ของ ขอ้มูลใน Internal RAM จะเป็นค่"สุม่ แต่จะยกเวน้เมื่อ เป็นก"รทำ"

Reset เพื่อออกจ"ก Power down mode ซึ่งในกรณีน้ี ค่"ขอ้มูล ต่"งๆ ใน Internal RAM จะยงัคงเดิมเหมอืนก่อนก"ร Reset

20

Page 21: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

IDLE MODE ลดก"รใชก้ระแสเหลือเพยีง 15% จ"กก"รทำ"ง"นปกติ คำ"สัง่ที่ทำ"ให้

PCON.0 = ‘1’ จะเป็นคำ"สัง่สดุท้"ยก่อนที่ MCS-51 จะเข"้สู่ Idle mode ไมม่สีญัญ"ณน"ฬิก"ไป CPU แต่ยงัคงมสีญัญ"ณ Clock ไปยงั

วงจรในสว่นซึ่งทำ"หน้"ท่ีในก"ร Interrupt, Timer และ Serial port ใน Mode น้ี CPU จะคงค่"ขอ้มูลต่"งๆ ใน SP, PC, PSW, Acc และค่" ใน Register ทัง้หมด เอ"ไวเ้ชน่เดิม รวมถึงค่"ขอ้มูลท่ีสง่ไปออกยงั

Port ด้วย และข"สญัญ"ณ ALE, ~PSEN จะมสีถ"นะเป็น Logic High ก"รออกจ"ก Idle mode มสีองวธิคืีอ

1. โดยก"รทำ" Hardware reset ซึ่งสญัญ"ณ Reset น้ีก็จะต้องมี อยูเ่ป็นเวล"อย"่งน้อย 2 Machine cycles ก"รทำ"ง"นจะทำ"ง"นใน

คำ"สัง่ที่ต่อจ"กคำ"สัง่ที่ทำ"ให้ PCON.0=1 ไปอีก 2-3 คำ"สัง่ ก่อนเข"้ สูก่"ร Reset ดังนัน้จงึต้องระวงัว"่คำ"สัง่เหล่"นัน้อ"จทำ"ใหก้"รคว"ม

ผิดพล"ดในก"รปฏิบติัง"นได้

2. โดยก"ร Interrupt: ก"รทำ"ง"นจะกระโดดไปทำ"ง"นยงัตำ"แหน่งของ Interrupt service routine (ISR) หลังจ"กจบก"รทำ"ง"นของISR ด้วย RETI คำ"สัง่ที่ MCS-51 จะทำ"ง"นต่อไป คือคำ"สัง่ท่ีอยู่

ต่อจ"ก คำ"สัง่ท่ีทำ"ใหเ้ข"้สู่ Idle Mode นัน่เอง และ Bit PCON.0 จะถกู Clear ดังนัน้อ"จใชบ้ติ GF0 หรอื GF1 ชว่ยแสดงว"่ระบบ

เป็น Idle mode ก่อนเข"้สู่ Interrupt routine สำ"หรบั Flag Bit GF0 และ GF1 ส"ม"รถใชง้"นเป็นตัวบอกสถ"นะ

ว"่ ก"ร Interrupt นัน้เกิดขึ้นใน Idle Mode หรอืเกิดในระหว"่ง ก"รทำ"ง"นปกติ โดยก่อนที่จะคำ"สัง่เพื่อเข"้สู่ Idle Mode ก็ให้

ทำ"ก"ร Set Bit น้ี ดังนัน้แล้ว โปรแกรมในสว่นของ ISR ก็จะ ส"ม"รถตรวจสอบได้ว"่ มนัเป็นก"รทำ"ง"นที่ม"จ"ก Idle Mode

หรอืไม่

RESET

21

Page 22: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

สญัญ"ณสำ"หรบัก"ร Reset MCS-51 จะต่อเข"้ที่ข" RST โดยมวีงจรSchmitt trigger อยูภ่"ยใน

ก"ร Reset ทำ"โดยก"รให้ Logic high เข"้ที่ข" RST เป็นเวล"อย"่ง

น้อย 2 Machine cycle ( หรอื 24 Clock) ในขณะที่สญัญ"ณ Clock

ยงัคงทำ"ง"นอยู่ จ"กนัน้ CPU จะ ทำ"ก"ร Reset ก"รทำ"ง"นของตัวเอง

ในชว่งเวล"ของ Cycle ท่ี 2 และก"รReset จะเกิดขึ้นทกุๆ Cycle ต่อไป

เรื่อยๆ จนกว"่ สญัญ"ณ RST จะ กลับเป็น Low

และสำ"หรบั Internal RAM ซึ่งจะ ไมม่กี"รเปล่ียนแปลง เมื่อทำ"ก"ร

Reset ดังนัน้ เมื่อเริม่จ"่ยไฟใหก้ับ ระบบ ค่"ของขอ้มูล จะเป็นค่"สุม่ แต่

จะยกเวน้เมื่อ เป็นก"รทำ" Reset เพื่อออกจ"ก Power down mode ซึ่งในกรณีน้ี ค่"ขอ้มูลต่"งๆ ใน Internal RAM จะยงัคงเดิม

POWER-ON RESET จ"กท่ีก"ร Reset ซึ่งจะต้องทำ"ทกุครัง้ที่เริม่จ"่ยไฟใหก้ับระบบ ก"ร

Reset น้ี จะส"ม"รถทำ"ได้อย"่งง่"ย โดยก"รต่อวงจรดังรูป โดยใชตั้วเก็บประจุขน"ด 1F ถ้" Rise time ของ VCC ไมเ่กิน 1

millisecond และ เวล"ที่ วงจรClock เริม่ทำ"ง"นไมเ่กิน 10 milliseconds ก"รทำ"ง"นของPower-on reset อธบิ"ยได้ดังน้ี

22

Page 23: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

เมื่อเริม่จ"่ยไฟใหก้ับระบบ กระแสที่ไหลเข้"ในข" RST จะเป็นก"รประจุใหก้ับ ตัวเก็บประจุ แรงดันท่ีเกิดขึ้นที่ข" RST จะเป็นผลต่"งระหว"่ง VCC กับ

แรงดันที่ตกครอ่มตัวเก็บประจุ และจะมค่ี"ลดลงเรื่อยๆ เมื่อตัวเก็บประจุ ถกู Charge

ค่"แรงดันท่ีข" RST จะต้องมค่ี"ม"กกว"่ Lower threshold ของSchmitt trigger เป็นเวล"ที่น"นพอท่ีจะทำ"ใหก้"ร Reset สมบูรณ์(Oscillator start-up time + 2 machine cycle)

MCS-51 PORT STRUCTURES AND OPERATION

Port ทัง้สี่ ของ MCS-51 นัน้จะเป็นแบบสองทิศท"ง โดยจะมสีว่น ประกอบภ"ยในคือ Latch หรอื Register ซึ่งจะทำ"หน้"ที่ในก"รคงสถ"นะ

ของขอ้มูลท่ีสง่ออกม"ท่ี Port (P0, P1, P2, P3 ใน SFR) ท่ีพอรต์จะมี ตัวต้"นท"นพูลอัพไวภ้"ยใน ยกเวน้ที่พอรต์ 0 แต่ละพอรต์ส"ม"รถจ"่ย

กระแส หรอืท่ีเรยีกว"่ กระแสซอรซ์ (Source Current) ได้สงูสดุ ประม"ณ 20 mA และทกุข"ของพอรต์รวมกันจะส"ม"รถจ"่ยกระแสรวม

กันได้ไมเ่กินประม"ณ 80 mA ดังนัน้เพื่อไมใ่หเ้กิดปัญห"จงึควรต่อวงจร บฟัเฟอรท์"งเอ"ต์พุตเพื่อชว่ยในก"รขบักระแส เชน่ IC 74HCT245

Output driver and Input buffer

23

Page 24: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

จ"กรูป เป็นก"รแสดงโครงสร"้งภ"ยในของแต่ละ Bit ใน Port ต่"งๆ สำ"หรบั Latch ท่ีแสดง จะหม"ยถึง Bit ของ Port นัน้ๆ ซึ่งจะเก็บค่"จ"ก

Internal bus “เมื่อมสีญัญ"ณ Write latch” จ"ก CPU ค่"จ"ก Internal bus สง่ผ่"นไปยงัข" Q ของ D-FF ค่"สถ"นะท่ีข"ของPort จะส"ม"รถสง่กลับไปท่ี Internal bus ทัง้ 8 bits หรอื เพยีง 1 bit ขึ้นอยูก่ับว"่เป็น “สญัญ"ณ Read Latch” “หรอื Read Pin”

จ"กรูปสว่น Output driver ของ Port 0.X และ 2.X ส"ม"รถเลือกให้ ติดต่อเข"้กับ Internal bus หรอื ADDR/DATA ด้วยก"รควบคมุจ"ก

CPU

ท่ี Port P3.X ถ้" Bit latch ของ P3.X ส"ม"รถเลือกใหส้ถ"นะของOutput เป็นขอ้มูลจ"ก Internal bus หรอืทำ"หน้"ท่ีอ่ืนๆได้โดย

“สญัญ"ณ Alternate output function” และ ท่ี Port 1, 2 และ 3 จะมี Internal pull-ups สว่นที่ Port 0 จะเป็นโครงสร"้งแบบ Open

drain output24

Page 25: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

การใชง้านเป็นพอรต์อินพุตพอรต์ส"ม"รถรบัก"รเปล่ียนแปลงระดับลอจกิจ"กระดับสงูสูร่ะดับตำ่"

เท่"นัน้ ดังนัน้จะต้องเริม่ต้นด้วยก"รเขยีนขอ้มูลใหก้ับพอรต์หรอืบตินัน้ๆให้ “เป็นลอจกิ 1” ก่อน เชน่ MOV P3,#0FFH เพื่อหยุดก"รทำ"ง"นของ

เฟต (FET) และทำ"ใหข้"สญัญ"ณของพอรต์เชื่อมต่อเข้"กับวงจรพูลอัพ “ภ"ยในโดยตรง สง่ผลใหข้"พอรต์นัน้มลีอจกิเป็น 1” และส"ม"รถที่จะรบั

“สญัญ"ณจ"กลอจกิ 0” จ"กอุปกรณ์ภ"ยนอกได้

การใชง้านเป็นพอรต์เอาต์พุต ก"รใชง้"นเป็นพอรต์เอ"ต์พุตส"ม"รถสง่ขอ้มูลออกไปได้เลย เชน่ ถ้"

“ต้องก"รสง่ขอ้มูลท่ีเป็นลอจกิ 0” ไปยงัวงจรแลตชซ์ึ่งจะสง่ต่อไปขบัเฟต “ทำ"ใหเ้ฟตทำ"ง"นและที่ข"พอรต์กำ"หนดใหท้ำ"ง"นก็จะเกิดลอจกิ 0” ขึ้น ใน

“ทำ"นองเดียวกัน ถ้"ต้องก"รสง่ขอ้มูลท่ีเป็นลอจกิ 1” ออกไปก็ส"ม"รถที่ “เขยีนขอ้มูล 1” ไปยงัวงจรแลตช์ วงจรขบัก็จะหยุดก"รทำ"ง"นเป็นผลใหท้ี่

“ข"ของพอรต์เชื่อมต่อกับวงจรพูลอัพภ"ยในเกิดเป็นลอจกิ 1”ท่ีข"พอรต์ นัน้

สำ"หรบั Port 0 นัน้ จะต่"งออกไป เน่ืองจ"กมนัไมม่ี Internal pull-ups (FET ซึ่งทำ"หน้"ที่ pull-ups จะ ON เมื่อ Port ‘สง่ค่"สถ"นะ 1’ ออกม"

เมื่อมนัทำ"หน้"ท่ีในก"รติดต่อกับ External memory เท่"นัน้) ดังนัน้ เมื่อมกี"รใชง้"นของ Port 0 เป็น Output ‘เมื่อสง่ค่"ของ 1’ ไปออกท่ี

Port 0 จะทำ"ให้ FET ทัง้สอง OFF ค่"สถ"นะท่ีข"สญัญ"ณก็จะลอยอยู่(Float) ซึ่งส"ม"รถใชง้"นเป็น Input แบบ High impedance ได้แต่

‘ก"รเปล่ียนค่"สถ"นะจ"ก 0’ ‘เป็น 1’ จะทำ"ได้ช"้ เพร"ะ FET ตัวบนจะ เสมอืนเป็นตัวเก็บประจุซึ่งต้องใชเ้วล"ม"กกว"่ 10 S ช"รจ์ประจุเพื่อ

เปล่ียนระดับแรงดัน

25

Page 26: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

Read-Modify-Write Feature สำ"หรบัคำ"สัง่ท่ีเป็นก"รอ่"นค่"จ"ก Port นัน้ บ"งคำ"สัง่ก็จะเป็นก"ร

อ่"นค่"จ"ก Port latch และบ"งคำ"สัง่ก็จะเป็นก"รอ่"นค่"จ"กข"สญัญ"ณ ของ Port

สำ"หรบัคำ"สัง่ท่ีเป็นก"รอ่"นค่"จ"ก Port แล้วมกี"รเปล่ียนแปลงค่"นัน้ และเขยีนผลลัพธท์ี่ได้กลับไปท่ี Port จะเป็นก"รอ่"นค่"ม"จ"ก Port latch

( เรยีกก"รทำ"ง"นน้ีว"่ Read-Modify-Write) ตัวอย"่งของคำ"สัง่ท่ีเป็นก"รทำ"ง"นน้ีได้แก่ ANL (logical AND, e.g., ANL P1, A) ORL (logical OR, e.g., ORL P2, A) XRL (logical EXIOR, e.g., XRL P3, A) JBC (jump if bit = 1 and clear bit, e.g., JBC P1.1, LABEL) CPL (complement bit, e.g., CPL P3.0) INC (increment, e.g., INC P2) DEC (decrement, e.g., DEC P2) DJNZ (decrement and jump if not zero, e.g., DJNZ P3, LABEL) MOV PX.Y, C (move carry bit to bit Y of Port X)

26

Page 27: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

CLR PX.Y (clear bit Y of Port X) SETB PX.Y (set bit Y of Port X)

คว"มจำ"เป็นที่จะคำ"สัง่เหล่"น้ีจะต้องอ่"นค่"ม"จ"ก Port latch คือเพื่อ เป็นก"รป้องกันก"รรบัขอ้มูลที่ไมถ่กูต้องโดยไมตั่ง้ใจ เชน่ ถ้"ต่อข"

สญัญ"ณของ Port ไปใชง้"นเพื่อขบักระแสใหท่ี้ข" Base ของTransistor เมื่อต้องก"รให้ Transistor นัน้ๆ Turn-on ก็จะทำ"โดยสง่ Logic ‘1’ ของไปท่ี Port bit นัน้ๆ แล้วถ้" CPU ทำ"ก"รอ่"นค่"สถ"นะ

เข"้ม"จ"กข"สญัญ"ณของ Port ค่"ท่ีจะได้รบัม"จะเป็นค่"สถ"นะของBase voltage ซึ่งอ"จถกูมองว"่เป็น Logic ‘0’ ได้ ดังนัน้แล้วเพื่อ

คว"มถกูต้อง จงึจำ"เป็นท่ีจะต้องอ่"นค่"สถ"นะม"จ"ก Port latch ซึ่งจะได้ ‘ค่"เป็น 1’

CPU TIMING ใน MCS-51 มสีว่นของวงจรกำ"เนิด Clock อยูภ่"ยใน ซึ่งส"ม"รถใชเ้ป็น

สญัญ"ณน"ฬิก"ใหก้ับ CPU ได้ ในก"รใชง้"นของ On-Chip Oscillator นัน้ ก็เพยีงต่อ Crystal หรอื Ceramic resonator ท่ีข" XTAL1 กับ

XTAL2 และตัวเก็บประจุ ดังรูป

อย"่งไรก็ดี ถ้"ต้องก"รใชส้ญัญ"ณ Clock จ"กภ"ยนอก ก็ทำ"ได้โดยก"ร

ต่อสญัญ"ณ Ext. Clock เข"้ที่ข" XTAL1 ดังรูป

MACHINE CYCLES สำ"หรบั MCS-51 Machine cycle จะประกอบด้วยก"รทำ"ง"น 6

States (S1 – S6) ซึ่งในแต่ละ State ของก"รทำ"ง"น จะใชเ้วล" 2

27

Page 28: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

Clocks ดังนัน้ถ้"ใช้ Clock 12 MHz ก็จะได้เวล"ในก"รทำ"ง"นของ 1 Machine cycle คือ 1 S

ในรูปเป็นตัวอย่"งของก"ร Fetch / Execute ของคำ"สัง่ ซึ่งจะในแต่ละMachine cycle จะมกี"ร Fetch รหสัคำ"สัง่ 2 ครัง้ ถึงแมว้"่คำ"สัง่นัน้ๆ

จะเป็นคำ"สัง่แบบ 1 Byte ก็ต"ม ในกรณีที่คำ"สัง่นัน้ๆ ไมต้่องก"รขอ้มูลByte ท่ีสอง CPU ก็เพยีงแต่ไมส่นใจขอ้มูลที่ Fetch ได้เกินม" และค่"

ของ PC ก็จะไมเ่พิม่ขึ้น

28

Page 29: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

จ" กรูป a และ b ซึ่งเป็นคำ"สัง่ที่ใชก้"รทำ"ง"น 1 Machine cycle ท่ี S1

CPU ก็จะอ่"น Op-code ท่ีต้องก"รเข"้ม"ยงั Instruction register และที่ S4 จะมกี"ร Fetch ครัง้ท่ีสองเกิดขึ้น ซึ่งในรูป a ก"ร Fetch

29

Page 30: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

ครัง้ท่ีสองน้ี CPU จะไมส่นใจขอ้มูลท่ีได้ม" สว่นในรูป b ขอ้มูลท่ีได้ม"ก็จะ เป็น Byte ท่ีสองของคำ"สัง่

จ"กรูป c เป็นก"รทำ"ง"นของคำ"สัง่ที่ใชก้"รทำ"ง"น 2 Machine cycles CPU จะไมส่นใจขอ้มูลท่ีได้จ"กก"ร Fetch 3 ครัง้ด้วยกันและในรูป d

เป็นก"รทำ"ง"นของคำ"สัง่ MOVX ซึ่งเป็นก"รติดต่อกับ External data memory ในกรณีน้ี จะไมม่กี"ร Fetch เกิดขึ้น เน่ืองเป็นก"รอ่"นขอ้มูล

เข"้จ"ก External data memory ขบวนก"ร Fetch / Execute น้ีจะเหมอืนกัน ไมว่"่จะเป็นก"รทำ"ง"นของ

โปรแกรมที่อยูใ่น Internal หรอื External program memory ดัง นัน้แล้วมนัจะใชเ้วล"ในก"รทำ"ง"นของคำ"สัง่ต่"งๆ เท่"กัน

30

Page 31: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

จ"กรูป a จะเป็นก"รแสดงถึงจงัหวะก"รทำ"ง"นของสญัญ"ณต่"งๆ ของ ก"ร Fetch เมื่อคำ"สัง่นัน้อยูใ่น External program memory ซึ่ง

สญัญ"ณ จะเกิดขึ้น 2 ครัง้ต่อ Machine cycle ในรูป b จะแสดงสญัญ"ณต่"งๆ ที่เกิดขึ้นเมื่อกระทำ"คำ"สัง่ท่ีมกี"รติดต่อ

กับ External data memory ก"ร Fetch จะถกูข"้มไป 2 ครัง้ และจะ เหน็ว"่จงัหวะเวล"ของก"รอ่"นขอ้มูลจ"ก External data memory นัน้จะใชเ้วล"ท่ีม"กกว"่ก"รอ่"นขอ้มูลจ"ก Program memory

และจ"กรูป จะแสดงถึงจงัหวะเวล"ของก"รสง่ค่" Address ท่ีต้องก"ร ออกม"ท"ง Port 0, Port 2, สญัญ"ณ และ ซึ่ง

31

Page 32: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

สญัญ"ณ น้ีจะใชใ้นก"ร Latch ค่"ของ Low address byte ท่ี ออกม"ท"ง Port 0

สว่นเมื่อ CPU ทำ"ง"นจ"กคำ"สัง่ท่ีอยูใ่น Internal program memory นัน้ สญัญ"ณ จะไมท่ำ"ง"น แต่อย"่งไรก็ต"มสำ"หรบัสญัญ"ณ

จะทำ"ง"น 2 ครัง้ต่อ Machine cycle ตลอด แต่จะยกเวน้เมื่อCPU ทำ"ง"นคำ"สัง่ MOVX

Timing Diagram

จงัหวะเวล"ก"รทำ"ง"นของสญัญ"ณต่"งๆ ท่ีเกิดขึ้นนัน้ส"ม"รถจะแบง่ได้ดังน้ี

เมื่อ Fetch Op-code จ"ก External Program Memory

32

Page 33: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

เมื่อ MCS-51 อ่"นขอ้มูลจ"ก External Data Memory

เมื่อ MCS-51 เขยีนขอ้มูลเข้" External Data Memory33

Page 34: 01 MCS51Arch.doc · Web viewท Port P3.X ถ า Bit latch ของ P3.X สามารถเล อกให สถานะของ Output เป นข อม ลจาก

Lecture 01

เมื่อ MCS-51 ทำ"ง"นกับ I/O Port

34