Upload
dangkhanh
View
215
Download
0
Embed Size (px)
Citation preview
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
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