1.1 mcs-51 microcontroller - ecpe.nu.ac.th 01 mcs51arch.pdf · lecture 01 1 1 microprocessor and...

27
Lecture 01 1 1 MICROPROCESSOR AND MICROCONTROLLER ARCHITECTURES 1.1 MCS-51 MICROCONTROLLER รูปแสดงตัวอย่างโครงสร้างของ Microcontroller ในตระกูล MCS-51 คุณสมบัติพื้นฐานของ Microcontroller ในตระกูล MCS-51 มี Core CPU ที่เป็น 8-Bit และชุดคาสั่งที่เหมาะในงานควบคุม สามารถเปลี่ยนแปลง logic กับข้อมูลในระดับ Bit ได้ มี Port ที่เป็นได้ทั ้ง I/O ทั้งหมด 4 port และสามารถใช้งานได้ในระดับ BIT มี Timer/Counter ขนาด 16 Bit สองชุด สาหรับใช้ในการจับเวลา หรือนับจานวน มี Full duplex UART สาหรับใช้ รับ/ส่ง ข้อมูลแบบอนุกรม

Upload: dangkhanh

Post on 13-Mar-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Lecture 01

1

1 MICROPROCESSOR AND MICROCONTROLLER ARCHITECTURES

1.1 MCS-51 MICROCONTROLLER

รปแสดงตวอยางโครงสรางของ Microcontroller ในตระกล MCS-51

คณสมบตพนฐานของ Microcontroller ในตระกล MCS-51

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

สามารถเปลยนแปลง logic กบขอมลในระดบ Bit ได

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

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

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

Lecture 01

2

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

ความส าคญได 2 ระดบ

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

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

เพมขนมาแลวแตบรษทผผลต แตอยางไรกดค าสงตางๆ ยงคงเหมอนกน เชน

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

มหนวยความจ า โปรแกรม 64K ภายใน on-chip Flash program memory with ISP (In-System

Programming) and IAP (In-Application Programming)

มหนวยความจ า ขอมล (RAM) 1 kBytes ภายใน (หนวยความจ า 768 Bytes ทเพมมาตองเขาถงเหมอน

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

ใชไฟเลยง 5 V ความถ 0 ถง 40 MHz

สามารถเลอกไดวา 1 machine cycle ม 12-clock (default) หรอ 6-clock โดยใช software หรอ ISP

SPI (Serial Peripheral Interface) และ enhanced UART

PCA (Programmable Counter Array) ซงม functions PWM และ Capture/Compare

มส 8-bit I/O ports โดย port 1 ขาท 1.5 1.6 และ 1.7 สามารถจายกระแสไดสง (16 mA)

ม Timer/Counter ขนาด 16 Bit สามชด

ม Programmable Watchdog timer (WDT)

รบ Interrupt ไดจาก 8 แหลงก าเนด โดยสามารถจดระดบความส าคญได 4 ระดบ

ม 2 DPTR registers

ม Low EMI mode (ALE inhibit)

สามารถใชงานไดกบระดบ logic แบบ TTL และ CMOS

Brown-out detection

Low power modes

o Power-down mode with external interrupt wake-up

o Idle mode

Lecture 01

3

มรปแบบ package PDIP40(plastic dual in-line package; 40 leads), PLCC44 (plastic

leaded chip carrier44 leads) และ TQFP44 (plastic thin quad flat package 44 leads)

EXTERNAL VIEW

ก. PDIP40 (Plastic dual in-line package) ข. PLCC44 (Plastic leaded chip carrier)

Lecture 01

4

ค. TQFP44 (Thin quad flat pack)

Pin I / O / Z หนาท / การท างาน

P0.0-P0.7

(AD0-AD7)

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

ท าหนาทเปน Addr. Bus สวนของ Low byte (PCL) สลบกบ Data Bus ในกรณ

ทมการใชงาน External Memory ตองตอ External Pull-ups เพอใชงาน Port

P1.0-P1.7 I / O Port 1 เปน Bidirectional I/O Port 8 Bit ทม Internal pull-up

ขา P1.5 P1.6 P1.7 สามารถจาย (Source) กระแสของ Input IIL ได 16 mA

นอกจากนแลว ขา ตางๆ ของ Port 1 จะมการใชงานเปนพเศษดงน

P1.0 :T2 (Timer 2 I/O)

P1.1: T2EX Timer/counter 2 capture/reload trigger and direction control

P1.2: ECI: External clock input. This signal is the external clock input for the PCA.

P1.3: CEX0: Capture/compare external I/O for PCA Module 0. Each capture/compare module connects to a Port 1 pin for external I/O. When not used by the PCA, this pin can handle standard I/O.

P1.4: SS: Slave port select input for SPI CEX1: Capture/compare external I/O for PCA Module 1

P1.5: MOSI: Master Output Slave Input for SPI CEX2: Capture/compare external I/O for PCA Module 2

P1.6: MISO: Master Input Slave Output for SPI CEX3: Capture/compare external I/O for PCA Module 3

P1.7: SCK: Master Output Slave Input for SPI CEX4: Capture/compare external I/O for PCA Module 4

P2.0-P2.7

(A8-A15)

I / O Port 2 เปน Bidirectional I/O Port 8 Bit ทม Internal pull-up

ท าหนาทเปน Address Bus ในสวนของ High byte (PCH) ในกรณทมการใช

งาน External Memory

P3.0-P3.7 I / O Port 3 เปน Bidirectional I/O Port 8 Bit ทม Internal pull-up

Lecture 01

5

I

O

I

I

I

I

O

O

นอกจากนแลว ขา ตางๆ ของ Port 3 จะมการใชงานเปนพเศษดงน

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 สญญาณ HIGH logic RST

ตองมอยอยางนอย 2 Machine cycles จงจะท าการ Reset ได

ALE O Address Latch Enable เปนสญญาณทท าใหคาของ Low byte ของ Address

(PCL) ถกเกบเขาท LATCH ในระหวางท คาของ PCL ออกมาท P0

สญญาณ ALE นมออกมาตลอดเวลา (ไมวาจะมการใช External memory

หรอไม) เปนความถ 1/6 ของสญญาณ Clock จงสามารถน าไปใชเปนฐานเวลา

ใหกบวงจรภายนอกได แตอยางไรกด ในกรณทเปนการตดตอกบ External data

memory สญญาณ ALE จะขามไปหนงลก

PSEN O Program Store Enable เปนสญญาณทใชในการ Fetch ค าสงจาก External

program memory จะไมท างานเมอเปนการ Fetch ค าสงจาก Internal program

memory

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

EA I External Access โดยการตอขาสญญาณ EA เปน ‘High’ การ Fetch จาก

Internal program memory แตถาตอขา EA เขากบ ‘Low’ การ Fetch ค าสง

ทงหมดจะกระท ากบ External program memory

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

XTAL2 O Output จาก inverting oscillator amplifier

INTERNAL ORGANIZATION OF THE MCS-51

Lecture 01

6

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

MEMORY ORGANIZATION IN MCS-51

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

หนวยความจ าส าหรบเกบขอมล (Data Memory) ทแยกออกจากกนดงรป

Lecture 01

7

FFFF

EXTERNAL

PROGRAM MEMORY(READ ONLY)

0000

PSEN

EA=1INTERNAL

EA=0EXTERNAL

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 ต าแหนง เชน

FFFF

0000

64KBYTES

EXTERNAL

60KBYTES

EXTERNAL

4K BYTESINTERNAL

FFFF

0000

0FFF

1000

56KBYTES

EXTERNAL

8K BYTESINTERNAL

FFFF

0000

1FFF

2000

ก) ข) ค)

ส าหรบ MCS-51 ในแบบทม Program memory ภายใน กจะมพนทในการเกบโปรแกรมภายใน IC เอง 4K (รป ก), 8K

(รป ก), 16K หรอ 32K Address (ตามรนของ IC ทใช) ส าหรบหนวยความจ าทมากกวาน กจะเปน Program memory

Lecture 01

8

ภายนอก สวน MCS-51 ทไมม Internal program memory สวนของ Program memory ทงหมดจะอยภายนอก (รป ค)

Program memory จะมต าแหนงไดทงหมด 64K Address

จากรปทแสดงสวนของ

Program memory ใน

ต าแหนง 0000H-0033H ซง

เมอ CPU เรมการท างาน

หลงจากการ Reset กจะเรม

การท างานตามค าสงท

Address 0000H และ

Address 0003H, 000BH, …

ต าแหนงของ ISR: Interrupt

Service Routine โดยเมอเกด

สญญาณ Interrupt เขามา

CPU จะกระโดดการท างานมายงโปรแกรมในต าแหนงทก าหนดน

ตวอยางเชน ส าหรบ Interrupt 0 จากภายนอก เมอ MCS-51 ไดรบสญญาณ Interrupt น CPU จะกระโดดการท างาน

มายงโปรแกรมใน Address 0003H และส าหรบ Interrupt ทเกดจาก Timer 0 CPU จะกระโดดการท างานมายงโปรแกรม

ใน Address 000BH และเมอเกด Interrupt 1 จากภายนอก CPU จะกระโดดการท างานมายงโปรแกรมใน Address

0013H เปนตน

ในแตละ ISR นนจะมพนในการเกบโปรแกรมได 8 bytes ซงถา ISR ทตองการ เปนโปรแกรมทสนๆ กจะสามารถใสเขาไป

ได แตถาเปน ISR ทยาวมากกตองใชค าสง Jump ไปยงโปรแกรมทต าแหนงอนอกท

DATA MEMORY

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

ของ Data memory ทงสองสวนนจะม Address ทแยกจากกนดวย

Lecture 01

9

FFFF

0000

64KBYTESEXTERNAL

SFRsDIRECTADDRESSINGONLY

DIRECT&INDIRECTADDRESSING

FF

00

7F80

FFFF

0000

64KBYTESEXTERNAL

SFRsDIRECTADDRESSINGONLYDIRECT&INDIRECTADDRESSING

00

FF

7F80

FF

+ +80

INDIRECTADDRESSINGONLY

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

ACCESSIBLEBY DIRECT

AND INDIRECT ADDRESSING

ACCESSIBLEBY DIRECT

ADDRESSING

SPECIALFUNCTIONREGISTERS

ACCESSIBLEBY INDIRECTADDRESSING

ONLY

FFH

80H

FFH

80H7FH

00H

LOWER128

UPPER128

PORTSSTATUS ANDCONTROL BITSTIMERREGISTERSSTRACK POINTERACCUMULATOR(ECT.)

แตเนองจากการใชวธอางถงต าแหนงขอมล (Addressing mode) ทตางกน 2 แบบในสวน Upper 128 ทซอนกนอย ท าให

ไดต าแหนงของ Internal data memory ทงหมด 384 bytes โดยส าหรบขอมลตงแต Address 80H – FFH ถาอางถง

Lecture 01

10

ขอมลท Address นนๆ ดวยวธ Direct addressing กจะไดขอมลทมาจากคนละสวน กบการอางถงขอมลท Address

เดยวกนนนดวยวธ Indirect addressing และสวนของ Upper 128 นกจะเปนสวนเดยวกบ SFR ดวย

Lower 128 bytes of internal data memory

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

4 BANKS OF8 REGISTERS

R0-R7

7FH

1FH

2FH

17H

0FH

07H08H

10H

18H

20H

0

BIT-ADDRESSABLE SPACE(BIT ADDRESSABLE 0-7F

RESET VALUE OFSTACK POINTER

BANK SELECTBIT IN PSW

00

01

10

11

ในสวนของ 32 bytes แรก จะใชงานเปน Register 4 ชด(Banks) ชดละ 8 registers คอ R0 – R7 ซงสามารถเรยกใชงาน

ไดจากค าสงตางๆ การเลอกชดของ Register ทจะใชงานท าไดโดยใช 2 Bit ทอยใน PSW: Program Status Word ซงท า

หนาทเลอก Register Bank

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

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

ถดมาจาก Register banks คอ 20-2FH เปนพนทเกบขอมลทสามารถเรยกใชงานในระดบ Bit ได 128 bit โดยจะม

Address ส าหรบการเรยกใชงานคอ บตท 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 แตถา MCS-51 ตวนนม Internal data memory เพยง128

ต าแหนง สวน 80H-F8H จะเปนต าแหนงของรจสเตอรฟงกชนพเศษ (Special Function Registers) เพยงอยางเดยว

Lecture 01

11

การเขาถงขอมลทอยใน Upper 128 สวนแรกซงมใน MCS-51 ทกตวนนสามารถเขาถงโดยวธ Direct addressing

การเขาถงขอมลทอยใน Upper 128 สวนแรกทสองทม Internal data memory 256 ต าแหนง ตองท าโดยใชวธการ

Indirect addressing เทานน เชนเปนการใชงานโดยอางต าแหนงดวย Stack pointer หรอ R0, R1 เปนตน

หนวยความจ าสวนนแทจรงแลวใชการอางถงขอมลสองแบบเปนการเขาถงเปนหนวยความจ าคนละสวนกน

SFR: SPECIAL FUNCTION REGISTERS

การจดพนทใน SFR จะเปนพนทในการเกบคาของ Register ใชงานพเศษตางๆ เชน Accumulator, Port latch, คา

Timer และ Register ส าหรบควบคมการท างานของสวนตางๆ ภายใน เชน PSW

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

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

ต าแหนงใน SFR เพอรองรบการท างานทเพมขน

และจะมต าแหนง Address ใน SFR อย 16 ต าแหนงทสามารถเรยกใชงานในระดบ Bit ได คอต าแหนงใน SFR ทม

Address ลงทายดวย 0H และ 8H โดยจะม Bit address ตงแต 80H – FFH

Lecture 01

12

Lecture 01

13

จะเหนไดวาต าแหนงตางๆ ใน SFR จะไมไดถกใชทงหมด การอานขอมลจากต าแหนงทยงไมได ก าหนดน จะท าใหไดคา

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

ก าหนดน เนองจากมนอาจถกใชงานในการควบคม ฟงกชนการท างานทจะเพมเขามาในอนาคต

Accumulator (A) 0E0H

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

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

B Register (B) 0F0H

มขนาด 8 Bit ใชในการคณและการหารเทานน หรออาจใชในการเกบขอมลอนๆ ทตองการกได

Program status word (PSW) 0D0H

มขนาด 8 Bit แตละ Bit จะบอกถงสภาวะตางๆ ในการท างานของ CPU แตละ Bit ของ PSW สามารถก าหนดให

เปน 1 หรอ 0 ไดโดยค าสง SETB หรอ CLRB ตามล าดบคาต าแหนง Bit Address 0 ถง Bit 7 ของ PSW หรอ 0D0H ถง

0D7H

Lecture 01

14

Stack Pointer (SP) 08H

มขนาด 8 Bit ใชชต าแหนงในหนวยความจ าภายใน 8051 ทจะใชสรางเปน Stack ใชเกบต าแหนงหนวยความจ ากอนการ

ท างานโปรแกรมยอย หรอใชเกบขอมลดวยค าสง PUSH คาของ SP นจะมคาทเพมขนกอนทจะมการเกบขอมลเขาไป คา

ในรจสเตอรนจะมคา 07H เมอมการรเซทท าใหการเกบขอมลต าแหนงแรกของ Stack เรมทต าแหนงท 08H

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

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

Lecture 01

15

การก าหนดการท างานของวงจร 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) เปน Registers ส าหรบก าหนดรปแบบการท างาน และ

สถานะของการ Interrupt

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

เปน Registers ส าหรบก าหนดรปแบบการท างานของ Timer/Counter

Serial Port Control Register (SCON) เปน Registers ส าหรบก าหนดรปแบบการท างานของ Serial port

Power Control Register (PCON) เปน Registers ส าหรบก าหนดรปแบบการใชพลงงานของตว CPU

POWER-SAVING MODES

ในการใชงานซงตองค านงถงความสนเปลอง

พลงงานเปนเรองส าคญ เชนระบบทท างานดวย

Battery ตว MCS-51 ไดถกออกแบบมาใหม

รปแบบการประหยดพลงงาน 2 แบบคอ Power

down และ Idle mode

การเขาสการท างานในแบบประหยดพลงงานน

สามารถทจะท าไดโดย Software ดวยการตงคา

ผาน Register PCON

POWER DOWN MODE

เปนการลดการใชกระแสของตว MCS-51 ใหเหลอเพยงไมก A (นอยกวา 10 µA)

Lecture 01

16

หลงจากค าสงทท าให 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

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

Lecture 01

17

การออกจาก 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

สญญาณส าหรบการ 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 จะยงคงเดม

Lecture 01

18

POWER-ON RESET

จากทการ Reset ซงจะตองท าทกครงทเรมจายไฟใหกบระบบ การ Reset น จะสามารถท าไดอยางงาย โดยการตอวงจรดง

รป

โดยใชตวเกบประจขนาด 1F ถา Rise time ของ

VCC ไมเกน 1 millisecond และ เวลาท วงจร

Clock เรมท างานในเวลาไมเกน 10 milliseconds

การท างานของ Power-on reset อธบายไดดงน

เมอเรมจายไฟใหกบระบบ กระแสทไหลเขาในขา

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

Lecture 01

19

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

Lecture 01

20

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

Lecture 01

21

ส าหรบค าสงทเปนการอานคาจาก 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)

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 ดงรป

Lecture 01

22

MACHINE CYCLES

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

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

Lecture 01

23

ในรปเปนตวอยางของการ 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 ครง

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

Fetch เกดขน เนองเปนการอานขอมลเขาจาก External data memory

ขบวนการ Fetch / Execute นจะเหมอนกน ไมวาจะเปนการท างานของโปรแกรมทอยใน Internal หรอ External program

memory ดงนนแลวมนจะใชเวลาในการท างานของค าสงตางๆ เทากน

Lecture 01

24

การอานจากหนวยความจ าภายในและการอานจากหนวยความจ าภายนอก

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

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

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

PSEN จะหายไป 2 ครง และจงหวะเวลาของการอานขอมลจาก External data memory นนจะใชเวลาทมากกวาการ

อานขอมลจาก Program memory

และจากรป จะแสดงถงจงหวะเวลาของการสงคา Address ทตองการออกมาทาง Port 0 (A0-A7), Port 2 (A8-A16) กบ

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

Port 0 สวน PSEN จะเกดขนเมอมการ Fetch (อานค าสง) เทานน

Lecture 01

25

สวนเมอ CPU ท างานจากค าสงทอยใน Internal program memory นน สญญาณ PSEN จะไมท างาน แตอยางไรก

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

Timing Diagram

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

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

MCS-51

P0P1

P3 P2

PSEN

ALE

EA

INTERNAL

ROM

LATCH

OE

EPROM

INSTR.

ADDR

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

Lecture 01

26

MCS-51

P0P1

P3 P2

ALE

EA

INTERNAL

ROMLATCH

OE

RAM

DATA

ADDR

WR

VCC

WR

RD

Lecture 01

27

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