Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51...
Transcript of Microprocessor and Microcontroller Architectures › ponpisut › Micro 03_MCS51Arch.pdf · MCS-51...
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 ภายใน
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
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 ของ
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
Lecture 03
5
Internal Organization of the MCS-51 โครงสรางภายในของ Microcontroller MCS-51 จะมสวนประกอบดงแสดงน
Memory Organization in MCS-51
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 ต าแหนง เชน
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 ไปยงโปรแกรมทต าแหนงอนอกท
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
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
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 เพอรองรบการท างานทเพมขน
Lecture 03
11
และจะมต าแหนง Address ใน SFR อย 16 ต าแหนงทสามารถเรยกใชงานในระดบ Bit ได คอต าแหนงใน SFR ทม Address ลงทายดวย 0H และ 8H โดยจะม Bit address ตงแต 80H – FFH
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
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
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
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
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
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) และท าใหขาสญญาณ
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) ตวอยางของค าสงทเปนการท างานนไดแก
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
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 ครงดวยกน
Lecture 03
21
และในรป d เปนการท างานของค าสง MOVX ซงเปนการตดตอกบ External data memory ในกรณน จะไมมการ Fetch เกดขน เนองเปนการอานขอมลเขาจาก External data memory
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
Lecture 03
23
Timing Diagram
จงหวะเวลาการท างานของสญญาณตางๆ ทเกดขนนนสามารถจะแบงไดดงน
เมอ Fetch Op-code จาก External Program Memory
Lecture 03
24
เมอ MCS-51 อานขอมลจาก External Data Memory
เมอ MCS-51 เขยนขอมลเขา External Data Memory
Lecture 03
25
เมอ MCS-51 ท างานกบ I/O Port