Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51...

25
Lecture 03 1 Microprocessor and Microcontroller Architectures MCS-51 Microcontroller จากโครงสร้างของระบบ Microcomputer ที่จะต้องประกอบด้วยส่วนต่างๆ ดังที่กล่าวมาแล้วข้างต้น ซึ่งถ้า ต้องการสร้างระบบ Microcomputer โดยใช้ Microprocessor (เช่น Z80) เป็น CPU ก็จะต้องต่อวงจรภายนอกทีจาเป็นต่างๆ อีกจานวนมาก ดังนั้น แล ้ว เพื่อที่จะให้ได้ Microcomputer ที่มีขนาดเล็ก จึงได้มีการออกแบบ ที่จะ รวมส่วนประกอบที่จาเป็นทั้งหมดของ Microcomputer เข้าภายใน IC เพียงตัวเดียว ซึ่งถูกเรียกว่า Microcontroller เช่น MCS-51 (von Neuman Architecture) เป็นต้น คุณสมบัติเบื้องต ้นของ Microcontroller ในตระกูล MCS-51 จะมีดังนี ้ มี Core CPU ที่เป็น 8-Bit และชุดคาสั่งที่เหมาะในงานควบคุม สามารถประมวลผลทาง Logic กับข้อมูลในระดับ BIT ได้ มีหน่วยความจา โปรแกรม 4K ภายใน และรองรับการใช้งานของหน่วยความจา โปรแกรม ได้ถึง 64K มีหน่วยความจา ข้อมูล (RAM) 128 Bytes ภายใน และรองรับการใช้งานของหน่วยความจา ข้อมูล ได้ถึง 64K มี Port ที่เป็นได้ทั ้ง I / O ทั้งหมด 4 port และสามารถใช้งานได้ในระดับ BIT มีส่วน Timer / Counter ขนาด 16 Bit สองชุด สาหรับใช้ในการจับเวลา หรือนับจานวน มี Full duplex UART สาหรับใช้ รับ/ส่ง ข้อมูลแบบอนุกรม รับ Interrupt ได้จาก 6 แหล่งกาเนิด โดยมี 5 ตาแหน่งของ ISR และการ Interrupt โดยสามารถจัดระดับ ความสาคัญได้ 2 ระดับ มีตัวกาเนิดความถีClock ภายใน

Transcript of Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51...

Page 1: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

1

Microprocessor and Microcontroller Architectures MCS-51 Microcontroller

จากโครงสรางของระบบ Microcomputer ทจะตองประกอบดวยสวนตางๆ ดงทกลาวมาแลวขางตน ซงถาตองการสรางระบบ Microcomputer โดยใช Microprocessor (เชน Z80) เปน CPU กจะตองตอวงจรภายนอกทจ าเปนตางๆ อกจ านวนมาก ดงนน แลว เพอทจะใหได Microcomputer ทมขนาดเลก จงไดมการออกแบบ ทจะรวมสวนประกอบทจ าเปนทงหมดของ Microcomputer เขาภายใน IC เพยงตวเดยว ซงถกเรยกวา Microcontroller เชน MCS-51 (von Neuman Architecture) เปนตน

คณสมบตเบองตนของ Microcontroller ในตระกล MCS-51 จะมดงน

ม Core CPU ทเปน 8-Bit และชดค าสงทเหมาะในงานควบคม

สามารถประมวลผลทาง Logic กบขอมลในระดบ BIT ได

มหนวยความจ า โปรแกรม 4K ภายใน และรองรบการใชงานของหนวยความจ า โปรแกรม ไดถง 64K

มหนวยความจ า ขอมล (RAM) 128 Bytes ภายใน และรองรบการใชงานของหนวยความจ า ขอมล ไดถง 64K

ม Port ทเปนไดทง I / O ทงหมด 4 port และสามารถใชงานไดในระดบ BIT

มสวน Timer / Counter ขนาด 16 Bit สองชด ส าหรบใชในการจบเวลา หรอนบจ านวน

ม Full duplex UART ส าหรบใช รบ/สง ขอมลแบบอนกรม

รบ Interrupt ไดจาก 6 แหลงก าเนด โดยม 5 ต าแหนงของ ISR และการ Interrupt โดยสามารถจดระดบความส าคญได 2 ระดบ

มตวก าเนดความถ Clock ภายใน

Page 2: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

2

MCS-51 Family MCS-51 นน ไดมการออกแบบและผลตออกมาในหลายๆ รปแบบ ซงมความสามารถและสวนประกอบภายในท

เพมขนมา แตอยางไรกดค าสงตางๆ ยงคงเหมอนกน

Device Name

ROMLESS Version

ROM Bytes

RAM Bytes

16-Bit Timers

Speed Up 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

83C154 80C154 16K 256 3 42MHz SCMOS

83C154D - 32K 256 3 36MHz SCMOS

80C51PX - - 128/256 2/3 12MHz CMOS

9 = FLASH

Page 3: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

3

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 มนสามารถรบ/จาย (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

Port 3 เปน Bidirectional I/O Port 8 Bit with Internal pull-up นอกจากนแลว ขา ตางๆ ของ Port 3 จะมการใชงานเปน Special feature ของ

Page 4: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

4

I O I I I I O O

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 เพอเปนการก าหนดคาเรมตนตางๆ การท า 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 จะขามไป หนง ลก

PSEN O Program Store Enable สญญาณ PSEN ซงเปนสญญาณทใชในการ Fetch ค าสงจาก External program memory จะไมท างานเมอเปนการ Fetch ค าสงจาก Internal program memory

สญญาณ PSEN นจะมเกดขน สองครง ตอหนง Machine cycle

EA I External Access โดยการตอขาสญญาณ EA เปน ‘High’ การ Fetch ค าสงท Address นอยกวา 0FFFh (4K ส าหรบ 80C51) จะไดจาก Internal program memory และถาเปน Address ตงแต 1000H ก จะเปนการอานจาก External program memory

ถาตอขา EA เขากบ ‘Low’ การ Fetch ค าสงทงหมดจะกระท ากบ External program memory

XTAL1 I Input to inverting oscillator amplifier และใชส าหรบการปอน External clock

XTAL2 O Output to inverting oscillator amplifier

Page 5: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

5

Internal Organization of the MCS-51 โครงสรางภายในของ Microcontroller MCS-51 จะมสวนประกอบดงแสดงน

Memory Organization in MCS-51

Page 6: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

6

Microcontroller MCS-51 ถกออกแบบมาให มหนวยความจ าส าหรบเกบโปรแกรม (Program memory) และหนวยความจ าส าหรบเกบขอมล (Data Memory) ทแยกออกจากกนดงรป

FFFF

EXTERNAL

PROGRAM MEMORY

(READ ONLY)

0000

PSEN

EA=1

INTERNAL

EA=0

EXTERNAL

FFH:

00

INTERNAL

0000

FFFF

EXTERNAL

RD WR

DATA MEMORY

(READ/WRITE)

การอาน External program memory นน MCS-51 จะใชขาสญญาณ PSEN (Program Store Enable)

การอานและเขยน External data memory นน MCS-51 จะใชขาสญญาณ RD และ WR

Program Memory

สวนของ Program memory จะเปนหนวยความจ าทอานไดเพยงอยางเดยว และสามารถมไดทงหมด 64K ต าแหนง เชน

Page 7: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

7

FFFF

0000

64K

BYTES

EXTERNAL

60K

BYTES

EXTERNAL

4K BYTES

INTERNAL

FFFF

0000

0FFF

1000

FFFF

0000

64K

BYTES

EXTERNAL

56K

BYTES

EXTERNAL

8K BYTES

INTERNAL

FFFF

0000

1FFF

2000

ส าหรบ 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 ส าหรบ 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 ไปยงโปรแกรมทต าแหนงอนอกท

Page 8: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

8

Data memory Data memory ของ MSC-51 นนจะแบงออกเปน Internal data memory และ External data memory โดยการใชงานของ Data memory ทงสองสวนนจะม Address ทแยกจากกนดวย

FFFF

0000

64K

BYTES

EXTERNAL

SFRs

DIRECT

ADDRESSING

ONLY

DIRECT&

INDIRECT

ADDRESSING

FF

00

7F

80

FFFF

0000

64K

BYTES

EXTERNAL

SFRs

DIRECT

ADDRESSING

ONLY

DIRECT&

INDIRECT

ADDRESSING00

FF

7F

80

FF

INDIRECT

ADDRESSING ONLY

80H TO FFH

MCS-51 with 128 bytes Internal Data memory (ซาย)

MCS-51 with 256 bytes Internal Data memory (ขวา)

การออกแบบของ 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

Page 9: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

9

ACCESSIBLE

BY DIRECT

AND INDIRECT

ADDRESSING

ACCESSIBLE

BY DIRECT

ADDRESSING

SPECIAL

FUNCTION

REGISTERS

ACCESSIBLE

BY INDIRECT

ADDRESSING

ONLY

FFH

80H

FFH

80H7FH

00H

LOWER

128

UPPER

128

PORTS

STATUS AND

CONTROL BITS

TIMER

REGISTERS

STRACK POINTER

ACCUMULATOR

(ECT.)

แตดวยเทคนคของการอางถงต าแหนงขอมล (Addressing mode) ท าใหไดต าแหนงของ Internal data memory ทงหมด 384 bytes

โดยส าหรบขอมลตงแต Address 80H – FFH ถาอางถงขอมลท Address นนๆ ดวยวธของ Direct addressing กจะไดขอมลทมาจากคนละสวน กบการอางถงขอมลท Address เดยวกนนน ดวยวธของ Indirect addressing

จากรปจะเหนไดวา Memory ในสวนของ Upper 128 กจะม Address เดยวกบ Memory ในสวนของ SFR แตจะใชวธการเขาถงขอมลทแตกตางกนนนเอง

Lower 128 bytes of internal data memory Internal data memory 128 ต าแหนงแรก จะมอยเหมอนกนทงหมดใน MCS-51 แบบตางๆ โดยจะมการจดแบงดงรป

4 BANKS OF

8 REGISTERS

R0-R7

7FH

1FH

2FH

17H

0FH

07H08H

10H

18H

20H

0

BIT-ADDRESSABLE SPACE

(BIT ADDRESSABLE 0-7F

RESET VALUE OF

STACK POINTER

BANK SELECT

BIT IN PSW

00

01

10

11

ในสวนของ 32 bytes แรก จะใชงานเปน Register 4 ชด(Banks) ชดละ 8 registers คอ R0 – R7 ซงสามารถเรยกใชงานไดจากค าสงตางๆ การเลอกชดของ Register ทจะใชงาน จะท าโดย ใชสถานะของขอมล 2 Bit ทอยใน PSW: Program Status Word

Page 10: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

10

ต าแหนง 07H เปนต าแหนงทถกก าหนดไวใน Stack pointer โดยอตโนมต ซงStack จะเปนทเกบขอมลชวคราว เมอมการเรยกท างานโปรแกรมยอย หรอเมอถกเรยกใช ขอมลจะถกเกบทต าแหนง 08H เรอยไปในลกษณะ last in- first out

ถดมาจาก Register banks อก 16 Address จะเปนพนทเกบขอมลทสามารถเรยกใชงานในระดบ Bit ได 128 bit โดยจะม Address ส าหรบการเรยกใชงานระดบ Bit คอ 00H - 7FH ขอมลในทกๆ ต าแหนงในสวนของ 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

การอางองถงขอมลใน SFR น จะท าไดดวยวธของ Direct addressing เทานน ซงMCS-51 ทกตวจะม SFR ทเปนมาตรฐานเหมอนกนในต าแหนงเดยวกน และส าหรบ MCS-51 แบบทมความสามารถเพมขนนน กจะมการก าหนด ต าแหนงใน SFR เพอรองรบการท างานทเพมขน

Page 11: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

11

และจะมต าแหนง Address ใน SFR อย 16 ต าแหนงทสามารถเรยกใชงานในระดบ Bit ได คอต าแหนงใน SFR ทม Address ลงทายดวย 0H และ 8H โดยจะม Bit address ตงแต 80H – FFH

Page 12: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

12

จะเหนไดวาต าแหนงตางๆ ใน SFR จะไมไดถกใชทงหมด การอานขอมลจากต าแหนงทยงไมได ก าหนดน จะท าใหไดคาสมออกมา สวนการเขยนขอมลเขาไปจะไมมผลใดๆ แตอยางไรกด เราไมควรเขยนขอมล ‘1’ เขาไปในต าแหนงทไมไดก าหนดน เนองจากมนอาจถกใชงานในการควบคม ฟงกชนการท างานทจะเพมเขามาในอนาคต

Accumulator (A) 0E0H เปนรจสเตอรทใชมาก มขนาด 8 Bit ค าสงทจะอานหรอเกบขอมลจากภายนอกจะตองกระท าผานรจสเตอรตวน

เทานน ในรหสค าสงจะใชอกษร A

B Register (B) 0F0H มขนาด 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

Page 13: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

13

Program Counter (PC)

เปน register 16 bits ทไมมใน memory map เอาไวก าหนดต าแหนงของค าสงทจะอาน (Fetch) ค าสงตอไป

Stack Pointer (SP) 081H

มขนาด 8 Bit ใชชต าแหนงในหนวยความจ าภายใน 8051 ทจะใชสรางเปน Stack ใชเกบต าแหนงหนวยความจ ากอนการท างานค าสง CALL หรอใชเกบขอมลดวยค าสง PUSH คาของ SP นจะมคาทเพมขน กอนทจะมการเกบขอมลเขาไป คาในรจสเตอรนจะมคา 07H เมอมการรเซทท าใหการเกบขอมลต าแหนงแรกของ Stack เรมท Internal data memory ต าแหนงท 08H

Microprocessor

Register

DATA

07

SP

ADDRESS

015

STACK

BASE

Data Memory 07

Data Bus

PUSH

POP

Address Bus

การใชงาน Stack ดวยค าสง PUSH และ POP

Page 14: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

14

Microprocessor

PC

000DH

015

SP

0007H

015

Program Memory 07

000AH000BH

000DH000EH

Sub

routine

000FH

ACALL 0500H

RET

Address Bus

0500H

0501H0502H0503H

1

STACK

BASE

Data Memory 07

0007H

0010H0011H

000CH ACALL 0500H

Main

Program

STACK

BASE

Data Memory 07

Microprocessor

PC

0500H

015

SP

0008H

015

Program Memory 07

000AH

000BH000CH000DH

Sub

routine

000EH

ACALL 0500H

RET

Address Bus

0500H

0501H0502H0503H

2

0007H0008H

Data Bus (000DH)

000DH

Address Bus

Main

Program

0010H0011H

000FH

Page 15: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

15

รปแสดงการใชงาน Stack เมอเกดการเรยกโปรแกรมยอย

Data 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)

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 กจะเปนการอานคาของขอมลทรบเขามาได

STACK

BASE

Data Memory 07

Microprocessor

PC

0504H

015

SP

0007H

015

Program Memory 07

000AH

000BH000CH000DH

Sub

routine

000EH

ACALL 0500H

RET

Address Bus

0500H

0501H0502H0503H

3

0007H0008H

Data Bus

000DH

Address Bus

Main

Program

0010H0011H

000FH

RET

000DH

Page 16: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

16

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 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

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

Page 17: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

17

Output driver and Input buffer

จากรป จะเปนการแสดงโครงสรางภายในของแตละ 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 output

การใชงานเปนพอรตอนพต

พอรตสามารถรบการเปลยนแปลงระดบลอจกจากระดบสงสระดบต าเทานน ดงนนจะตองเรมตนดวยการเขยนขอมลใหกบพอรตหรอบตนนๆใหเปนลอจก “1” กอน เชน MOV P3,#0FFH เพอหยดการท างานของเฟต (FET) และท าใหขาสญญาณ

Page 18: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

18

ของพอรตเชอมตอเขากบวงจรพลอพภายในโดยตรง สงผลใหขาพอรตนนมลอจกเปน “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 ชารจประจเพอเปลยนระดบแรงดน

Read-Modify-Write Feature ส าหรบค าสงทเปนการอานคาจาก Port นน บางค าสงกจะเปนการอานคาจาก Port latch และบางค าสงกจะเปน

การอานคาจากขาสญญาณของ Port

ส าหรบค าสงทเปนการอานคาจาก Port แลวมการเปลยนแปลงคานน และเขยนผลลพธทไดกลบไปท Port จะเปนการอานคามาจาก Port latch (เรยกการท างานนวา Read-Modify-Write) ตวอยางของค าสงทเปนการท างานนไดแก

Page 19: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

19

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) 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

Page 20: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

20

ส าหรบ MCS-51 Machine cycle จะประกอบดวยการท างาน 6 States (S1 – S6) ซงในแตละ State ของการท างาน จะใช

เวลา 2 Clocks ดงนนถาใช Clock 12 MHz กจะไดเวลาในการท างานของ 1 Machine cycle คอ 1 S

ในรปเปนตวอยางของการ Fetch / Execute ของค าสง ซงจะในแตละ Machine cycle จะมการ Fetch รหสค าสง 2 ครง ถงแมวาค าสงนนๆ จะเปนค าสงแบบ 1 Byte กตาม ในกรณทค าสงนนๆ ไมตองการขอมล Byte ทสอง CPU กเพยงแตไมสนใจขอมลท Fetch ไดเกนมา และคาของ PC กจะไมเพมขน

จากรป a และ b ซงเปนค าสงทใชการท างาน 1 Machine cycle ท S1 CPU กจะอาน Op-code ทตองการเขามายง Instruction register และท S4 จะมการ Fetch ครงทสองเกดขน ซงในรป a การ Fetch ครงทสองน CPU จะไมสนใจขอมลทไดมา สวนในรป b ขอมลทไดมากจะเปน Byte ทสองของค าสง

จากรป c เปนการท างานของค าสงทใชการท างาน 2 Machine cycles CPU จะไมสนใจขอมลทไดจากการ Fetch 3 ครงดวยกน

Page 21: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

21

และในรป d เปนการท างานของค าสง MOVX ซงเปนการตดตอกบ External data memory ในกรณน จะไมมการ Fetch เกดขน เนองเปนการอานขอมลเขาจาก External data memory

Page 22: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

22

ขบวนการ Fetch / Execute นจะเหมอนกน ไมวาจะเปนการท างานของโปรแกรมทอยใน Internal หรอ External program memory ดงนนแลวมนจะใชเวลาในการท างานของค าสงตางๆ เทากน

จากรป a จะเปนการแสดงถงจงหวะการท างานของสญญาณตางๆ ของการ Fetch เมอค าสงนนอยใน External program

memory ซงสญญาณ PSEN จะเกดขน 2 ครงตอ Machine cycle

ในรป b จะแสดงสญญาณตางๆ ทเกดขนเมอกระท าค าสงทมการตดตอกบ External data memory การ Fetch จะถกขามไป 2 ครง และจะเหนวาจงหวะเวลาของการอานขอมลจาก External data memory นนจะใชเวลาทมากกวาการอานขอมลจาก Program memory

และจากรป จะแสดงถงจงหวะเวลาของการสงคา Address ทตองการออกมาทาง Port 0, Port 2, สญญาณ ALE และ

PSEN ซงสญญาณ ALE นจะใชในการ Latch คาของ Low address byte ทออกมาทาง Port 0

สวนเมอ CPU ท างานจากค าสงทอยใน Internal program memory นน สญญาณ PSEN จะไมท างาน แตอยางไรกตามส าหรบสญญาณ ALE จะท างาน 2 ครงตอ Machine cycle ตลอด แตจะยกเวนเมอ CPU ท างานค าสง MOVX

Page 23: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

23

Timing Diagram

จงหวะเวลาการท างานของสญญาณตางๆ ทเกดขนนนสามารถจะแบงไดดงน

เมอ Fetch Op-code จาก External Program Memory

Page 24: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

24

เมอ MCS-51 อานขอมลจาก External Data Memory

เมอ MCS-51 เขยนขอมลเขา External Data Memory

Page 25: Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51 Microcontroller ... มีส่วน Timer / Counter ขนาด 16 Bit สองชุด

Lecture 03

25

เมอ MCS-51 ท างานกบ I/O Port