01 mcs51arch.doc · web viewท port p3.x ถ า bit latch ของ p3.x สามารถเล...
TRANSCRIPT
Lecture 01
MICROPROCESSOR AND MICROCONTROLLER ARCHITECTURES
MCS-51 MICROCONTROLLER
คณุสมบติัเบื้องต้นของ Microcontroller ในตระกลู MCS-51 จะมดีังน้ี
มี Core CPU ท่ีเป็น 8-Bit และชุดคำ"สัง่ที่เหม"ะในง"นควบคมุ ส"ม"รถป ogic กับขอ้มูลในระดับ BIT ได้ มหีน่วยคว"มจำ" โปรแกรม 4K ภ"ยใน และรองรบัก"รใชง้"นของ
หน่วยคว"มจำ" โปรแกรม ได้ถึง 64K มหีน่วยคว"มจำ" ขอ้มูล (RAM) 128 Bytes ภ"ยใน และรองรบั
ก"รใชง้"นของหน่วยคว"มจำ" ขอ้มูล ได้ถึง 64K มี Port ท่ีเป็นได้ทัง้ I / O ทัง้หมด 4 port และส"ม"รถใชง้"นได้ใน
ระดับ BIT 8-bit CPU
1
Lecture 01
มสีว่น Timer / Counter ขน"ด 16 Bit สองชุด สำ"หรบัใชใ้นก"ร จบัเวล" หรอืนับจำ"นวน
มี Full duplex UART สำ"หรบัใช้ รบั/ สง่ ขอ้มูลแบบอนุกรม รบั Interrupt ได้จ"ก 6 แหล่งกำ"เนิด โดยมี 5 ตำ"แหน่งของ ISR
และก"ร Interrupt โดยส"ม"รถจดัระดับคว"มสำ"คัญได้ 2 ระดับ มตัีวกำ"เนิดคว"มถ่ี Clock ภ"ยใน
MCS-51 FAMILYMCS-51 นัน้ ได้มกี"รออกแบบและผลิตออกม"ในหล"ยๆ รูปแบบ
ซึ่งมคีว"มส"ม"รถและสว่นประกอบภ"ยในที่เพิม่ขึ้นม" แต่อย"่งไรก็ดีคำ"สัง่ ต่"งๆ ยงัคงเหมอืนกัน
DeviceName
ROMLESSVersion
ROMBytes
RAMBytes
16-BitTimers
SpeedUp to
Process
80C51 80C31 4K 128 2 20MHz
CMOS
80C52 80C32 8K 256 3 20MHz
CMOS
83C154 83C154 16K 256 3 20MHz
CMOS
83C154D
- 32K 256 3 16MHz
CMOS
80C51 80C31 4K 128 2 42MHz
SCMOS
80C52 80C32 8K 256 3 42MHz
SCMOS
2
Lecture 01
83C154
80C154
16K 256 3 42MHz
SCMOS
83C154D
- 32K 256 3 36MHz
SCMOS
80C51PX
- - 128/256
2/3 12MHz
CMOS
3
9 = FLASH
Lecture 01
EXTERNAL VIEW
Pin I / O / Z
หน้"ท่ี / ก"รทำ"ง"น
P0.0-P0.7
I / O / Z
Port 0 เป็น Open drain bidirectional I/O Port 8 Bit
เมื่อใชเ้ป็น Output มนัส"ม"รถรบั (Sink) กระแสของ Input แบบ LS TTL ได้ 8 ตัว นอกจ"กน้ี ยงัทำ"หน้"ท่ีเป็น Addr. Bus สว่น
ของ Low byte (PCL) สลับกับ Data Bus ในกรณีท่ีมกี"รใชง้"น External Memory
P1.0-P1.7
I / O Port 1 เป็น Bidirectional I/O Port 8 Bit with Internal pull-up
เมื่อใชเ้ป็น Output มนัส"ม"รถรบั/ จ"่ย4
Lecture 01
(Sink/Source) กระแสของ Input แบบ LS TTL ได้ 4 ตัว
สำ"หรบั 80C52, 83C154 and 83C154D ข" Port 1.0 และ P1.1 จะส"ม"รถใชง้"นเป็น
T2, T2EX (T2: Timer 2 input, T2EX: Timer 2 “Capture” input)
P2.0-P2.7
I / O Port 2 เป็น Bidirectional I/O Port 8 Bit with Internal pull-up
เมื่อใชเ้ป็น Output มนัส"ม"รถรบั/ จ"่ย(Sink/Source) กระแสของ Input แบบ LS TTL ได้ 4 ตัว
นอกจ"กน้ี Port 2 ยงัทำ"หน้"ที่เป็น Address Bus ในสว่นของ High byte (PCH) ในกรณี
ท่ีมกี"รใชง้"น External Memory ท่ีใชก้"ร อ้"ง Address แบบ 16 Bit
P3.0-P3.7
I / O
IOIIIIOO
Port 3 เป็น Bidirectional I/O Port 8 Bit with Internal pull-up
นอกจ"กน้ีแล้ว ข" ต่"งๆ ของ Port 3 จะมกี"ร ใชง้"นเป็น Special feature ของ MCS-51
ดังต่อไปน้ีP3.0: RXD (Serial input port)P3.1: TXD (Serial output port)P3.2: INT0 (External interrupt 0)P3.3: INT1 (External interrupt 1)P3.4: T0 (Timer 0 external input)P3.5: T1 (Timer 1 external input)P3.6: WR (External data memory write strobe)P3.7: RD (External data memory read strobe)
RST I Reset เป็นสญัญ"ณป้อนใหก้ับ MCS-51 เพื่อ5
Lecture 01
เป็นก"รกำ"หนดค่"เริม่ต้นต่"งๆ ก"รทำ" Reset น้ีจะต้องทำ"ทกุครัง้ท่ีจ"่ยไฟใหก้ับวงจร ในก"ร
Reset สญัญ"ณ RST ต้องมอียูอ่ย"่งน้อย 2 Machine cycles จงึจะทำ"ก"ร Reset ได้
ALE O Address Latch Enable เป็นสญัญ"ณ จะไป ทำ"ใหค่้"ของ PCL ถกูเก็บเข"้ท่ี LATCH
ในระหว"่งท่ี ค่"ของ PCL ออกม"ท่ี P0 สญัญ"ณ ALE น้ี จะมอีอกม"ตลอดเวล" (ไมว่"่ จะมกี"รใช้ External memory หรอืไม)่ เป็น
คว"มถ่ี 1/6 ของสญัญ"ณ Clock ซึ่งส"ม"รถ นำ"ไปใชเ้ป็นฐ"นเวล"ใหก้ับวงจรภ"ยนอกได้ แต่
อย"่งไรก็ดี ในกรณีท่ีเป็นก"รติดต่อกับExternal data memory สญัญ"ณ ALE
จะข"้มไป หน่ึง ลกูO Program Store Enable สญัญ"ณ
ซึ่งเป็นสญัญ"ณท่ีใชใ้นก"ร Fetch คำ"สัง่จ"กExternal program memory จะไมท่ำ"ง"น
เมื่อเป็นก"ร Fetch คำ"สัง่จ"ก Internal program memory
สญัญ"ณ น้ีจะมเีกิดขึ้น สองครัง้ ต่อ หน่ึง Machine cycle
I External Access โดยก"รต่อข"สญัญ"ณ ‘เป็น High’ ก"ร Fetch คำ"สัง่ที่
Address น้อยกว"่ 0FFFh (4K สำ"หรบั80C51) จะได้จ"ก Internal program memory และถ้"เป็น Address ตัง้แต่1000H ก็ จะเป็นก"รอ่"นจ"ก External program memory
ถ้"ต่อข" ‘เข"้กับ Low’ ก"ร Fetch คำ"สัง่ ทัง้หมดจะกระทำ"กับ External program
6
Lecture 01
memoryXTAL1 I Input to inverting oscillator amplifier
และใชส้ำ"หรบัก"รป้อน External clockXTAL2 O Output to inverting oscillator
amplifier
INTERNAL ORGANIZATION OF THE MCS-51 โครงสร"้งภ"ยในของ Microcontroller MCS-51 จะมสีว่นประกอบดัง
แสดงน้ี
7
Lecture 01
MEMORY ORGANIZATION IN MCS-51
8
Lecture 01
Microcontroller MCS-51 ถกูออกแบบม"ให้ มหีน่วยคว"มจำ"สำ"หรบั เก็บโปรแกรม (Program memory) และหน่วยคว"มจำ"สำ"หรบัเก็บ
ขอ้มูล (Data Memory) ท่ีแยกออกจ"กกันดังรูป
ก"รอ่"น External program memory นัน้ MCS-51 จะใชข้" สญัญ"ณ (Program Store Enable)
ก"รอ่"นและเขยีน External data memory นัน้ MCS-51 จะใชข้" สญัญ"ณ และ
9
Lecture 01
PROGRAM MEMORY สว่นของ Program memory จะเป็นหน่วยคว"มจำ"ที่อ่"นได้เพยีงอย"่ง
เดียว และส"ม"รถมไีด้ทัง้หมด 64K ตำ"แหน่ง เชน่
ก) ข) ค) สำ"หรบั MCS-51 ในแบบที่มี Program memory ภ"ยใน ก็จะมพีื้นที่ใน
ก"รเก็บโปรแกรมภ"ยใน IC เอง 4K (รูป ก), 8K (รูป ก), 16K หรอื32K Address ( ต"มรุน่ของ IC ท่ีใช)้ สำ"หรบัหน่วยคว"มจำ"ท่ีม"กกว"่นี้
ก็จะเป็น Program memory ภ"ยนอก สว่น MCS-51 ท่ีไมม่ีInternal program memory สว่นของ Program memory
ทัง้หมดจะอยูภ่"ยนอก (รูป ค) Program memory จะมตีำ"แหน่งได้ ทัง้หมด 64K Address
จ"กรูปท่ี แสดงสว่นของ
Program memory ใน
ตำ"แหน่งเริม่ต้น ซึ่งเมื่อ CPU เริม่
ก"รทำ"ง"นหลัง จ"กก"ร Reset ก็
จะเริม่ก"รทำ"ง"น ต"มคำ"สัง่ที่
Address 0000H สำ"หรบั
10
Lecture 01
Address ต่อม"เป็นตำ"แหน่งของ ISR: Interrupt Service Routine โดยก"รทำ"ง"นของ Interrupt ใน MCS-51 เมื่อเกิด
สญัญ"ณ Interrupt เข"้ม" มนัก็จะกระโดดก"รทำ"ง"นม"ยงัโปรแกรมในตำ"แหน่งที่กำ"หนดน้ี
ตัวอย"่งเชน่ สำ"หรบั Interrupt 0 จ"กภ"ยนอก เมื่อ MCS-51 ได้รบั สญัญ"ณ Interrupt น้ี มนัก็จะกระโดดก"รทำ"ง"นม"ยงัโปรแกรมใน
Address 0003H และสำ"หรบั Interrupt ท่ีเกิดจ"ก Timer 0 ก็จะกระโดดก"รทำ"ง"นม"ยงั โปรแกรมใน Address 000BH และ Interrupt 1 จ"กภ"ยนอก ก็จะ
กระโดดก"รทำ"ง"นม"ยงัโปรแกรมใน Address 0013H เป็นต้น ในแต่ละ ISR นัน้จะมพีื้นในก"รเก็บโปรแกรมได้ 8 Address ซึ่งถ้" ISR
ท่ีต้องก"ร เป็นโปรแกรมที่สัน้ๆ ก็จะส"ม"รถใสเ่ข"้ไปได้ แต่ถ้"เป็น ISR ท่ี ย"วม"กก็ต้องใชค้ำ"สัง่ Jump ไปยงัโปรแกรมท่ีตำ"แหน่งอ่ืนอีกที
DATA MEMORYData memory ของ MSC-51 นัน้จะแบง่ออกเป็น Internal data memory และ External data memory โดยก"รใชง้"นของ Data memory ทัง้สองสว่นน้ีจะมี Address ท่ีแยกจ"กกันด้วย
MCS-51 with 128 bytes Internal Data memory (ซ"้ย)MCS-51 with 256 bytes Internal Data memory (ขว")
11
Lecture 01
ก"รออกแบบของ Data memory ภ"ยในน้ี จะทำ"ใหส้"ม"รถเรยีกใชง้"น ได้โดยใช้ Address เพยีง 8 Bit แต่ก"รใช้ Address เพยีง 8 Bit ทำ"ให้
อ้"งถึงตำ"แหน่งของ Data memory ภ"ยในได้เพยีง 256 ตำ"แหน่ง เท่"นัน้ (00H – FFH) ซึ่งก็เพยีงพอสำ"หรบัก"รใชใ้นก"รทำ"ง"นของ
โปรแกรมขน"ดเล็ก แต่ถ้"ต้องก"รใชง้"น Data memory จำ"นวนม"ก จะต้องเป็นก"รใชง้"นของ External data memory ซึ่งส"ม"รถใชก้"ร
อ้"งถึงตำ"แหน่ง Address แบบ 16 Bit โดยใช้ DPTR: Data pointer (Data memory address register) INTERNAL DATA MEMORY
ผังก"รจดัแบง่พื้นท่ีของ Internal data memory จะเป็นดังรูป ซึ่งมนั จะถกูแบง่ออกเป็น ส"มสว่นด้วยกัน คือ Lower 128, Upper 128
และ SFR และจ"กก"รที่ Internal data memory นัน้มเีพยีง 256 ตำ"แหน่ง
เท่"นัน้ ทำ"ใหก้"รอ้"ง Address ส"ม"รถทำ"ได้ โดยใชเ้พยีง 8 Bit
แต่ด้วยเทคนิคของก"รอ้"งถึงตำ"แหน่งขอ้มูล (Addressing mode) ทำ"ใหไ้ด้ตำ"แหน่งของ Internal data memory ทัง้หมด 384 bytes
โดยสำ"หรบัขอ้มูลตัง้แต่ Address 80H – FFH ถ้"อ้"งถึงขอ้มูลท่ีAddress นัน้ๆ ด้วยวธิขีอง Direct addressing ก็จะได้ขอ้มูลที่ม"จ"ก
คนละสว่น กับก"รอ้"งถึงขอ้มูลที่ Address เดียวกันนัน้ ด้วยวธิขีองIndirect addressing
12
Lecture 01
จ"กรูปจะเหน็ได้ว"่ Memory ในสว่นของ Upper 128 ก็จะมี Address เดียวกับ Memory ในสว่นของ SFR แต่จะใชว้ธิกี"รเข"้ถึงขอ้มูลท่ีแตก
ต่"งกันนัน่เอง
Lower 128 bytes of internal data memoryInternal data memory 128 ตำ"แหน่งแรก จะมอียูเ่หมอืนกัน
ทัง้หมดใน MCS-51 แบบต่"งๆ โดยจะมกี"รจดัแบง่ดังรูป
ในสว่นของ 32 bytes แรก จะใชง้"นเป็น Register 4 ชุด(Banks) ชุด ละ 8 registers คือ R0 – R7 ซึ่งส"ม"รถเรยีกใชง้"นได้จ"กคำ"สัง่ต่"งๆ
ก"รเลือกชุดของ Register ท่ีจะใชง้"น จะทำ"โดย ใชส้ถ"นะของขอ้มูล 2 Bit ท่ีอยูใ่น PSW: Program Status Word
ตำ"แหน่ง 07H เป็นตำ"แหน่งที่ถกูกำ"หนดไวใ้น Stack pointer โดย อัตโนมติั ซึ่ง Stack จะเป็นท่ีเก็บขอ้มูลชัว่คร"ว เมื่อมกี"รเรยีกทำ"ง"น
โปรแกรมยอ่ย หรอืเมื่อถกูเรยีกใช้ ขอ้มูลจะถกูเก็บท่ีตำ"แหน่ง 08H เรื่อย ไปในลักษณะ last in- first out
ถัดม"จ"ก Register banks อีก 16 Address จะเป็นพื้นที่เก็บขอ้มูลที่ ส"ม"รถเรยีกใชง้"นในระดับ Bit ได้ 128 bit โดยจะมี Address สำ"หรบั
ก"รเรยีกใชง้"นระดับ Bit คือ 00H - 7FH ขอ้มูลในทกุๆ ตำ"แหน่งในสว่น
13
Lecture 01
ของ Lower 128 น้ี ส"ม"รถจะอ้"งถึงด้วยวธิกี"รของDirect/Indirect addressing
Upper 128 bytes of internal data memory หน่วยคว"มจำ"ในสว่นของ Upper 128 น้ี จะมสีองสว่นทับซอ้นกันอยูใ่น
MCS-51 แบบท่ีมี Internal data memory 256 ตำ"แหน่งเท่"นัน้ เชน่ 80C52, 83C154, 83C154D ก"รเข"้ถึงขอ้มูลท่ีอยูใ่น Upper
128 น้ีจะต้องทำ"โดยใชว้ธิกี"รของ Indirect addressing เท่"นัน้ เชน่ เป็นก"รใชง้"นโดยอ้"งตำ"แหน่งด้วย Stack pointer หรอื R0, R1
เป็นต้น
แต่ถ้" MCS-51 ตัวนัน้มี Internal data memory เพยีง 128 ตำ"แหน่ง สว่น 80H-F8H จะเป็นตำ"แหน่งของรจีสิเตอรฟ์งัก์ชัน่พเิศษ
(Special Function Registers) เพยีงอย"่งเดียว และต้องอ้"งถึง ขอ้มูลแบบ Direct addressing เพื่อเข"้ถึงหน่วยคว"มจำ"สว่นน้ีแท้จรงิ
แล้วจะก"รอ้"งถึงขอ้มูลสองแบบนี้เป็นก"รเข"้ถึงเป็นหน่วยคว"มจำ"คนละ สว่นกัน ใน สว่น Upper 128
SFR: SPECIAL FUNCTION REGISTERS ก"รจดัพื้นท่ีใน SFR จะเป็นพื้นที่ในก"รเก็บค่"ของ Register ใชง้"น
พเิศษต่"งๆ เชน่ Accumulator, Port latch, ค่" Timer และRegister สำ"หรบัควบคมุก"รทำ"ง"นของสว่นต่"งๆ ภ"ยใน เชน่ PSW
14
Lecture 01
ก"รอ้"งอิงถึงขอ้มูลใน SFR น้ี จะทำ"ได้ด้วยวธิขีอง Direct addressing เท่"นัน้ ซึ่ง MCS-51 ทกุตัวจะมี SFR ท่ีเป็นม"ตรฐ"น
เหมอืนกันในตำ"แหน่งเดียวกัน และสำ"หรบั MCS-51 แบบท่ีมคีว"ม ส"ม"รถเพิม่ขึ้นนัน้ ก็จะมกี"รกำ"หนด ตำ"แหน่งใน SFR เพื่อรองรบัก"ร
ทำ"ง"นที่เพิม่ขึ้น และจะมตีำ"แหน่ง Address ใน SFR อยู่ 16 ตำ"แหน่งที่ส"ม"รถ
เรยีกใชง้"นในระดับ Bit ได้ คือตำ"แหน่งใน SFR ท่ีมี Address ลงท้"ย ด้วย 0H และ 8H โดยจะมี Bit address ตัง้แต่ 80H – FFH
15
Lecture 01
จะเหน็ได้ว"่ตำ"แหน่งต่"งๆ ใน SFR จะไมไ่ด้ถกูใชทั้ง้หมด ก"รอ่"นขอ้มูล จ"กตำ"แหน่งที่ยงัไมไ่ด้ กำ"หนดน้ี จะทำ"ใหไ้ด้ค่"สุม่ออกม" สว่นก"รเขยีน
‘ขอ้มูลเข"้ไปจะไมม่ผีลใดๆ แต่อย่"งไรก็ดี เร"ไมค่วรเขยีนขอ้มูล 1’ เข"้ไป ในตำ"แหน่งท่ีไมไ่ด้กำ"หนดน้ี เน่ืองจ"กมนัอ"จถกูใชง้"นในก"รควบคมุ
ฟงัก์ชนัก"รทำ"ง"นที่จะเพิม่เข"้ม"ในอน"คตAccumulator (A) 0E0H
เป็นรจีสิเตอรท์ี่ใชม้"ก มขีน"ด 8 Bit คำ"สัง่ที่จะอ่"นหรอืเก็บขอ้มูลจ"ก ภ"ยนอกจะต้องกระทำ"ผ่"นรจีสิเตอรตั์วน้ีเท่"นัน้ ในรหสัคำ"สัง่จะใชอั้กษร A
B Register (B) 0F0H16
Lecture 01
มขีน"ด 8 Bit ใชใ้นก"รคณูและก"รห"รเท่"นัน้ หรอือ"จใชใ้นก"รเก็บ ขอ้มูลอ่ืนๆ ท่ีต้องก"รก็ได้
Program status word (PSW) 0D0H มขีน"ด 8 Bit แต่ละ Bit จะบอกถึงสภ"วะต่"งๆ ในก"รทำ"ง"นของ
CPU (Flag) ซึ่งแต่ละ Bit ของ PSW ส"ม"รถกำ"หนดใหเ้ป็น 1 หรอื 0 ได้โดยคำ"สัง่ SETB หรอื CLRB ต"มลำ"ดับค่"ตำ"แหน่ง Bit Address 0
ถึง Bit 7 ของ PSW เท่"กับ 0D0H ถึง 0D7H
Stack Pointer (SP) 081H มขีน"ด 8 Bit ใชช้ีต้ำ"แหน่งในหน่วยคว"มจำ"ภ"ยใน 8051 ท่ีจะใชส้ร"้ง
เป็น Stack ใชเ้ก็บตำ"แหน่งหน่วยคว"มจำ"ก่อนก"รทำ"ง"นคำ"สัง่ CALL หรอืใชเ้ก็บขอ้มูลด้วยคำ"สัง่ PUSH ค่"ของ SP น้ีจะมคี่"ท่ีเพิม่ขึ้น ก่อนท่ีจะ
มกี"รเก็บขอ้มูลเข"้ไป ค่"ในรจีสิเตอรน้ี์จะมคี่" 07H เมื่อมกี"รรเีซท็ทำ"ให้ ก"รเก็บขอ้มูลตำ"แหน่งแรกของ Stack เริม่ที่ Internal data
memory ตำ"แหน่งที่ 08HData Pointer Register (DPTR) 82H และ83H
ประกอบไปด้วย Register ขน"ด 8 Bit 2 ตัวคือ DPH และ DPL ซึ่งDPTR น้ี จะใชใ้นก"รชีต้ำ"แหน่งของขอ้มูลของ External data memory แบบ 16 Bit ในก"รแก้ไขขอ้มูลใน Register DPTR จะ
กระทำ"ทีละ 16 Bit หรอื 8 Bit ก็ได้ (DPH, DPL)
17
Lecture 01
PORT 0 ถึง 3 (P0, P1, P2, P3) 80H, 90H, 0A0H, 0B0H
เป็น Register ขน"ด 8 Bit ใชอ่้"นและเขยีนขอ้มูลติดต่ออุปกรณ์ ภ"ยนอก ก"รเขยีนขอ้มูลไปยงัหน่วยคว"มจำ"แต่ละตำ"แหน่งเป็นก"รสง่
ขอ้มูลไปยงัพอรท์นัน้ๆ ของ MCS-51 ขอ้มูลท่ีเขยีนออกไปจะถกู Latch ค้"งไวท้ี่ Register น้ี และปร"กฏที่แต่ละ Bit ของ Port ก"รอ่"นขอ้มูล
จ"ก Register แต่ละตัวจะเป็นก"รอ่"นสภ"วะ Logic ท่ีมปีร"กฏอยูแ่ต่ละ ข"ของ Port นัน้ๆแต่ก"รอ่"นขอ้มูล ต้องเขยีน 11111111B ไปที่พอร์
ทนัน้ๆก่อนSerial Data Buffer (SBUF) 99H
มขีน"ด 8 Bit แต่จ"กโครงสร"้งภ"ยในแล้วมนัคือ Register 2 ตัวที่ มชีื่อเดียวกัน ตัวหน่ึงสำ"หรบัเก็บขอ้มูลท่ีจะสง่แบบอนุกรม และอีกตัวหน่ึง
สำ"หรบัรบัขอ้มูลแบบอนุกรมที่เข้"ม" ในก"รเขยีนขอ้มูลเข"้ท่ี SBUF มนัจะ ถกูเขยีนไปยงัที่สำ"หรบัเก็บขอ้มูลสำ"หรบัสง่ และเริม่ต้นก"รสง่ขอ้มูล สว่น
ก"รอ่"นขอ้มูลจ"ก SBUF ก็จะเป็นก"รอ่"นค่"ของขอ้มูลที่รบัเข้"ม"ได้
TIMER/COUNTER Register (8CH, 8AH) (8DH, 8BH) และ (0CDH, 0CCH)
เป็นรจีสิเตอรค์ู่ใชใ้นก"รเก็บค่"ของก"รนับแบบ 16 Bit ใน 80C51 จะมีTimer อยู่ 2 ชุดได้แก่ Timer 0 (TH0, TL0), Timer 1(TH1, TL1) และ Timer 2 (TH2, TL2) (ถ้"มี) ใชง้"นเป็น Timer หรอืCounter
ก"รกำ"หนดก"รทำ"ง"นของวงจร Timer ในแบบ Timer หรอื Counter ทำ"ได้โดยก"รกำ"หนดใน Register TMOD (Timer/Counter Mode
Control Register) ก"รทำ"ง"นเป็น Timer คือก"รใช้ Timer 0 หรอื1 นับจำ"นวนไซเคิลของสญัญ"ณน"ฬิก" ในก"รทำ"ง"นเป็น Counter คือ
ก"รใช้ Register THx และ TLx ทำ"ก"รนับจำ"นวนไซเคิลของสญัญ"ณที่ เข"้ม"ท"งข" T0 หรอื T1
Control Registers
18
Lecture 01
Interrupt Priority Register (IP), Interrupt Enable Register (IE) สำ"หรบักำ"หนดรูปแบบก"รทำ"ง"น และสถ"นะของก"ร Interrupt
Timer/Counter Mode Control Register (TMOD), Timer/Counter Control Register (TCON), T2CON
สำ"หรบักำ"หนดรูปแบบก"รทำ"ง"นของ Timer/Counter และ Serial Port Control Register (SCON) จะสำ"หรบักำ"หนดรูปแบบก"รทำ"ง"น
ของ Serial port และ
Power Control Register (PCON) สำ"หรบักำ"หนดรูปแบบก"รใชพ้ลังง"นของตัว CPU
POWER-SAVING MODESในก"รใชง้"นซึ่งต้องคำ"นึงถึงคว"มสิน้เปลืองพลังง"นเป็น
เรื่องสำ"คัญ เชน่ระบบท่ีทำ"ง"น ด้วย Battery ตัว MCS-
51 ได้ถกูออกแบบม"ใหม้รูีป แบบก"รประหยดัพลังง"น 2
แบบคือ Power down และIdle modeก"รเข"้สูก่"รทำ"ง"นในแบบ
ประหยดัพลังง"นน้ี ส"ม"รถท่ี จะทำ"ได้โดย Software ด้วย
ก"รตัง้ค่"ผ่"น Register PCON
POWER DOWN MODE19
Lecture 01
เป็นก"รลดก"รใชก้ระแสของตัว MCS-51 ใหเ้หลือเพยีงไมก่ี่ A (น้อย กว"่ 10 µA)
หลังจ"กคำ"สัง่ท่ีทำ"ให้ PCON.1=1 แล้ว MCS-51 จะเข"้สู่ Power down mode วงจร Oscillator จะหยุดทำ"ง"น และเป็นก"รปิด
สญัญ"ณ Clock ทัง้หมด ดังนัน้จะไมม่กี"รทำ"ง"นใดๆ แต่ค่"ขอ้มูลต่"งๆ ใน Internal RAM และขอ้มูลในรจีสิเตอรต่์"งๆ รวมถึงค่"ขอ้มูลท่ีสง่ไป
ออกยงั Port จะไมป่ล่ียนแปลง ก"รใชก้ำ"ลังจะตำ่"ม"ก ข"สญัญ"ณ ALE, ~PSEN จะมสีถ"นะเป็น Logic Low ก"รออกจ"ก Power down mode มวีธิเีดียวคือ ก"รทำ" Hardware reset แต่จะทำ"ใหข้อ้มูลในSFR เปล่ียนไปเป็นค่"เริม่ต้นทัง้หมด จะมแีต่ค่"ขอ้มูลใน RAM เท่"นัน้ท่ีจะคงเดิม
อย"่งไรก็ต"มต้องระวงัท่ีว"่ VCC จะต้องไมล่ดลงก่อนที่ MCS-51 เข"้สู่Power down mode และจะต้องกลับเป็นค่"ปกติ ก่อนที่จะออกจ"กPower down mode น้ี สญัญ"ณ Reset ซึ่งจะเป็นก"รเปิดก"ร
ทำ"ง"นของ Oscillator ต้องไมเ่กิดขึ้นก่อนที่ VCC จะกลับเป็นปกติ และจะ ต้องมอียูเ่ป็นเวล"น"นพอท่ีสญัญ"ณ Clock จะเกิดขึ้นคงตัว
โดยปกติแล้ว เมื่อทำ"ก"ร Reset หรอืเมื่อเริม่จ"่ยไฟใหก้ับระบบ ค่"ของ ขอ้มูลใน Internal RAM จะเป็นค่"สุม่ แต่จะยกเวน้เมื่อ เป็นก"รทำ"
Reset เพื่อออกจ"ก Power down mode ซึ่งในกรณีน้ี ค่"ขอ้มูล ต่"งๆ ใน Internal RAM จะยงัคงเดิมเหมอืนก่อนก"ร Reset
20
Lecture 01
IDLE MODE ลดก"รใชก้ระแสเหลือเพยีง 15% จ"กก"รทำ"ง"นปกติ คำ"สัง่ที่ทำ"ให้
PCON.0 = ‘1’ จะเป็นคำ"สัง่สดุท้"ยก่อนที่ MCS-51 จะเข"้สู่ Idle mode ไมม่สีญัญ"ณน"ฬิก"ไป CPU แต่ยงัคงมสีญัญ"ณ Clock ไปยงั
วงจรในสว่นซึ่งทำ"หน้"ท่ีในก"ร Interrupt, Timer และ Serial port ใน Mode น้ี CPU จะคงค่"ขอ้มูลต่"งๆ ใน SP, PC, PSW, Acc และค่" ใน Register ทัง้หมด เอ"ไวเ้ชน่เดิม รวมถึงค่"ขอ้มูลท่ีสง่ไปออกยงั
Port ด้วย และข"สญัญ"ณ ALE, ~PSEN จะมสีถ"นะเป็น Logic High ก"รออกจ"ก Idle mode มสีองวธิคืีอ
1. โดยก"รทำ" Hardware reset ซึ่งสญัญ"ณ Reset น้ีก็จะต้องมี อยูเ่ป็นเวล"อย"่งน้อย 2 Machine cycles ก"รทำ"ง"นจะทำ"ง"นใน
คำ"สัง่ที่ต่อจ"กคำ"สัง่ที่ทำ"ให้ PCON.0=1 ไปอีก 2-3 คำ"สัง่ ก่อนเข"้ สูก่"ร Reset ดังนัน้จงึต้องระวงัว"่คำ"สัง่เหล่"นัน้อ"จทำ"ใหก้"รคว"ม
ผิดพล"ดในก"รปฏิบติัง"นได้
2. โดยก"ร Interrupt: ก"รทำ"ง"นจะกระโดดไปทำ"ง"นยงัตำ"แหน่งของ Interrupt service routine (ISR) หลังจ"กจบก"รทำ"ง"นของISR ด้วย RETI คำ"สัง่ที่ MCS-51 จะทำ"ง"นต่อไป คือคำ"สัง่ท่ีอยู่
ต่อจ"ก คำ"สัง่ท่ีทำ"ใหเ้ข"้สู่ Idle Mode นัน่เอง และ Bit PCON.0 จะถกู Clear ดังนัน้อ"จใชบ้ติ GF0 หรอื GF1 ชว่ยแสดงว"่ระบบ
เป็น Idle mode ก่อนเข"้สู่ Interrupt routine สำ"หรบั Flag Bit GF0 และ GF1 ส"ม"รถใชง้"นเป็นตัวบอกสถ"นะ
ว"่ ก"ร Interrupt นัน้เกิดขึ้นใน Idle Mode หรอืเกิดในระหว"่ง ก"รทำ"ง"นปกติ โดยก่อนที่จะคำ"สัง่เพื่อเข"้สู่ Idle Mode ก็ให้
ทำ"ก"ร Set Bit น้ี ดังนัน้แล้ว โปรแกรมในสว่นของ ISR ก็จะ ส"ม"รถตรวจสอบได้ว"่ มนัเป็นก"รทำ"ง"นที่ม"จ"ก Idle Mode
หรอืไม่
RESET
21
Lecture 01
สญัญ"ณสำ"หรบัก"ร Reset MCS-51 จะต่อเข"้ที่ข" RST โดยมวีงจรSchmitt trigger อยูภ่"ยใน
ก"ร Reset ทำ"โดยก"รให้ Logic high เข"้ที่ข" RST เป็นเวล"อย"่ง
น้อย 2 Machine cycle ( หรอื 24 Clock) ในขณะที่สญัญ"ณ Clock
ยงัคงทำ"ง"นอยู่ จ"กนัน้ CPU จะ ทำ"ก"ร Reset ก"รทำ"ง"นของตัวเอง
ในชว่งเวล"ของ Cycle ท่ี 2 และก"รReset จะเกิดขึ้นทกุๆ Cycle ต่อไป
เรื่อยๆ จนกว"่ สญัญ"ณ RST จะ กลับเป็น Low
และสำ"หรบั Internal RAM ซึ่งจะ ไมม่กี"รเปล่ียนแปลง เมื่อทำ"ก"ร
Reset ดังนัน้ เมื่อเริม่จ"่ยไฟใหก้ับ ระบบ ค่"ของขอ้มูล จะเป็นค่"สุม่ แต่
จะยกเวน้เมื่อ เป็นก"รทำ" Reset เพื่อออกจ"ก Power down mode ซึ่งในกรณีน้ี ค่"ขอ้มูลต่"งๆ ใน Internal RAM จะยงัคงเดิม
POWER-ON RESET จ"กท่ีก"ร Reset ซึ่งจะต้องทำ"ทกุครัง้ที่เริม่จ"่ยไฟใหก้ับระบบ ก"ร
Reset น้ี จะส"ม"รถทำ"ได้อย"่งง่"ย โดยก"รต่อวงจรดังรูป โดยใชตั้วเก็บประจุขน"ด 1F ถ้" Rise time ของ VCC ไมเ่กิน 1
millisecond และ เวล"ที่ วงจรClock เริม่ทำ"ง"นไมเ่กิน 10 milliseconds ก"รทำ"ง"นของPower-on reset อธบิ"ยได้ดังน้ี
22
Lecture 01
เมื่อเริม่จ"่ยไฟใหก้ับระบบ กระแสที่ไหลเข้"ในข" RST จะเป็นก"รประจุใหก้ับ ตัวเก็บประจุ แรงดันท่ีเกิดขึ้นที่ข" RST จะเป็นผลต่"งระหว"่ง VCC กับ
แรงดันที่ตกครอ่มตัวเก็บประจุ และจะมค่ี"ลดลงเรื่อยๆ เมื่อตัวเก็บประจุ ถกู Charge
ค่"แรงดันท่ีข" RST จะต้องมค่ี"ม"กกว"่ Lower threshold ของSchmitt trigger เป็นเวล"ที่น"นพอท่ีจะทำ"ใหก้"ร Reset สมบูรณ์(Oscillator start-up time + 2 machine cycle)
MCS-51 PORT STRUCTURES AND OPERATION
Port ทัง้สี่ ของ MCS-51 นัน้จะเป็นแบบสองทิศท"ง โดยจะมสีว่น ประกอบภ"ยในคือ Latch หรอื Register ซึ่งจะทำ"หน้"ที่ในก"รคงสถ"นะ
ของขอ้มูลท่ีสง่ออกม"ท่ี Port (P0, P1, P2, P3 ใน SFR) ท่ีพอรต์จะมี ตัวต้"นท"นพูลอัพไวภ้"ยใน ยกเวน้ที่พอรต์ 0 แต่ละพอรต์ส"ม"รถจ"่ย
กระแส หรอืท่ีเรยีกว"่ กระแสซอรซ์ (Source Current) ได้สงูสดุ ประม"ณ 20 mA และทกุข"ของพอรต์รวมกันจะส"ม"รถจ"่ยกระแสรวม
กันได้ไมเ่กินประม"ณ 80 mA ดังนัน้เพื่อไมใ่หเ้กิดปัญห"จงึควรต่อวงจร บฟัเฟอรท์"งเอ"ต์พุตเพื่อชว่ยในก"รขบักระแส เชน่ IC 74HCT245
Output driver and Input buffer
23
Lecture 01
จ"กรูป เป็นก"รแสดงโครงสร"้งภ"ยในของแต่ละ Bit ใน Port ต่"งๆ สำ"หรบั Latch ท่ีแสดง จะหม"ยถึง Bit ของ Port นัน้ๆ ซึ่งจะเก็บค่"จ"ก
Internal bus “เมื่อมสีญัญ"ณ Write latch” จ"ก CPU ค่"จ"ก Internal bus สง่ผ่"นไปยงัข" Q ของ D-FF ค่"สถ"นะท่ีข"ของPort จะส"ม"รถสง่กลับไปท่ี Internal bus ทัง้ 8 bits หรอื เพยีง 1 bit ขึ้นอยูก่ับว"่เป็น “สญัญ"ณ Read Latch” “หรอื Read Pin”
จ"กรูปสว่น Output driver ของ Port 0.X และ 2.X ส"ม"รถเลือกให้ ติดต่อเข"้กับ Internal bus หรอื ADDR/DATA ด้วยก"รควบคมุจ"ก
CPU
ท่ี Port P3.X ถ้" Bit latch ของ P3.X ส"ม"รถเลือกใหส้ถ"นะของOutput เป็นขอ้มูลจ"ก Internal bus หรอืทำ"หน้"ท่ีอ่ืนๆได้โดย
“สญัญ"ณ Alternate output function” และ ท่ี Port 1, 2 และ 3 จะมี Internal pull-ups สว่นที่ Port 0 จะเป็นโครงสร"้งแบบ Open
drain output24
Lecture 01
การใชง้านเป็นพอรต์อินพุตพอรต์ส"ม"รถรบัก"รเปล่ียนแปลงระดับลอจกิจ"กระดับสงูสูร่ะดับตำ่"
เท่"นัน้ ดังนัน้จะต้องเริม่ต้นด้วยก"รเขยีนขอ้มูลใหก้ับพอรต์หรอืบตินัน้ๆให้ “เป็นลอจกิ 1” ก่อน เชน่ MOV P3,#0FFH เพื่อหยุดก"รทำ"ง"นของ
เฟต (FET) และทำ"ใหข้"สญัญ"ณของพอรต์เชื่อมต่อเข้"กับวงจรพูลอัพ “ภ"ยในโดยตรง สง่ผลใหข้"พอรต์นัน้มลีอจกิเป็น 1” และส"ม"รถที่จะรบั
“สญัญ"ณจ"กลอจกิ 0” จ"กอุปกรณ์ภ"ยนอกได้
การใชง้านเป็นพอรต์เอาต์พุต ก"รใชง้"นเป็นพอรต์เอ"ต์พุตส"ม"รถสง่ขอ้มูลออกไปได้เลย เชน่ ถ้"
“ต้องก"รสง่ขอ้มูลท่ีเป็นลอจกิ 0” ไปยงัวงจรแลตชซ์ึ่งจะสง่ต่อไปขบัเฟต “ทำ"ใหเ้ฟตทำ"ง"นและที่ข"พอรต์กำ"หนดใหท้ำ"ง"นก็จะเกิดลอจกิ 0” ขึ้น ใน
“ทำ"นองเดียวกัน ถ้"ต้องก"รสง่ขอ้มูลท่ีเป็นลอจกิ 1” ออกไปก็ส"ม"รถที่ “เขยีนขอ้มูล 1” ไปยงัวงจรแลตช์ วงจรขบัก็จะหยุดก"รทำ"ง"นเป็นผลใหท้ี่
“ข"ของพอรต์เชื่อมต่อกับวงจรพูลอัพภ"ยในเกิดเป็นลอจกิ 1”ท่ีข"พอรต์ นัน้
สำ"หรบั Port 0 นัน้ จะต่"งออกไป เน่ืองจ"กมนัไมม่ี Internal pull-ups (FET ซึ่งทำ"หน้"ที่ pull-ups จะ ON เมื่อ Port ‘สง่ค่"สถ"นะ 1’ ออกม"
เมื่อมนัทำ"หน้"ท่ีในก"รติดต่อกับ External memory เท่"นัน้) ดังนัน้ เมื่อมกี"รใชง้"นของ Port 0 เป็น Output ‘เมื่อสง่ค่"ของ 1’ ไปออกท่ี
Port 0 จะทำ"ให้ FET ทัง้สอง OFF ค่"สถ"นะท่ีข"สญัญ"ณก็จะลอยอยู่(Float) ซึ่งส"ม"รถใชง้"นเป็น Input แบบ High impedance ได้แต่
‘ก"รเปล่ียนค่"สถ"นะจ"ก 0’ ‘เป็น 1’ จะทำ"ได้ช"้ เพร"ะ FET ตัวบนจะ เสมอืนเป็นตัวเก็บประจุซึ่งต้องใชเ้วล"ม"กกว"่ 10 S ช"รจ์ประจุเพื่อ
เปล่ียนระดับแรงดัน
25
Lecture 01
Read-Modify-Write Feature สำ"หรบัคำ"สัง่ท่ีเป็นก"รอ่"นค่"จ"ก Port นัน้ บ"งคำ"สัง่ก็จะเป็นก"ร
อ่"นค่"จ"ก Port latch และบ"งคำ"สัง่ก็จะเป็นก"รอ่"นค่"จ"กข"สญัญ"ณ ของ Port
สำ"หรบัคำ"สัง่ท่ีเป็นก"รอ่"นค่"จ"ก Port แล้วมกี"รเปล่ียนแปลงค่"นัน้ และเขยีนผลลัพธท์ี่ได้กลับไปท่ี Port จะเป็นก"รอ่"นค่"ม"จ"ก Port latch
( เรยีกก"รทำ"ง"นน้ีว"่ Read-Modify-Write) ตัวอย"่งของคำ"สัง่ท่ีเป็นก"รทำ"ง"นน้ีได้แก่ ANL (logical AND, e.g., ANL P1, A) ORL (logical OR, e.g., ORL P2, A) XRL (logical EXIOR, e.g., XRL P3, A) JBC (jump if bit = 1 and clear bit, e.g., JBC P1.1, LABEL) CPL (complement bit, e.g., CPL P3.0) INC (increment, e.g., INC P2) DEC (decrement, e.g., DEC P2) DJNZ (decrement and jump if not zero, e.g., DJNZ P3, LABEL) MOV PX.Y, C (move carry bit to bit Y of Port X)
26
Lecture 01
CLR PX.Y (clear bit Y of Port X) SETB PX.Y (set bit Y of Port X)
คว"มจำ"เป็นที่จะคำ"สัง่เหล่"น้ีจะต้องอ่"นค่"ม"จ"ก Port latch คือเพื่อ เป็นก"รป้องกันก"รรบัขอ้มูลที่ไมถ่กูต้องโดยไมตั่ง้ใจ เชน่ ถ้"ต่อข"
สญัญ"ณของ Port ไปใชง้"นเพื่อขบักระแสใหท่ี้ข" Base ของTransistor เมื่อต้องก"รให้ Transistor นัน้ๆ Turn-on ก็จะทำ"โดยสง่ Logic ‘1’ ของไปท่ี Port bit นัน้ๆ แล้วถ้" CPU ทำ"ก"รอ่"นค่"สถ"นะ
เข"้ม"จ"กข"สญัญ"ณของ Port ค่"ท่ีจะได้รบัม"จะเป็นค่"สถ"นะของBase voltage ซึ่งอ"จถกูมองว"่เป็น Logic ‘0’ ได้ ดังนัน้แล้วเพื่อ
คว"มถกูต้อง จงึจำ"เป็นท่ีจะต้องอ่"นค่"สถ"นะม"จ"ก Port latch ซึ่งจะได้ ‘ค่"เป็น 1’
CPU TIMING ใน MCS-51 มสีว่นของวงจรกำ"เนิด Clock อยูภ่"ยใน ซึ่งส"ม"รถใชเ้ป็น
สญัญ"ณน"ฬิก"ใหก้ับ CPU ได้ ในก"รใชง้"นของ On-Chip Oscillator นัน้ ก็เพยีงต่อ Crystal หรอื Ceramic resonator ท่ีข" XTAL1 กับ
XTAL2 และตัวเก็บประจุ ดังรูป
อย"่งไรก็ดี ถ้"ต้องก"รใชส้ญัญ"ณ Clock จ"กภ"ยนอก ก็ทำ"ได้โดยก"ร
ต่อสญัญ"ณ Ext. Clock เข"้ที่ข" XTAL1 ดังรูป
MACHINE CYCLES สำ"หรบั MCS-51 Machine cycle จะประกอบด้วยก"รทำ"ง"น 6
States (S1 – S6) ซึ่งในแต่ละ State ของก"รทำ"ง"น จะใชเ้วล" 2
27
Lecture 01
Clocks ดังนัน้ถ้"ใช้ Clock 12 MHz ก็จะได้เวล"ในก"รทำ"ง"นของ 1 Machine cycle คือ 1 S
ในรูปเป็นตัวอย่"งของก"ร Fetch / Execute ของคำ"สัง่ ซึ่งจะในแต่ละMachine cycle จะมกี"ร Fetch รหสัคำ"สัง่ 2 ครัง้ ถึงแมว้"่คำ"สัง่นัน้ๆ
จะเป็นคำ"สัง่แบบ 1 Byte ก็ต"ม ในกรณีที่คำ"สัง่นัน้ๆ ไมต้่องก"รขอ้มูลByte ท่ีสอง CPU ก็เพยีงแต่ไมส่นใจขอ้มูลที่ Fetch ได้เกินม" และค่"
ของ PC ก็จะไมเ่พิม่ขึ้น
28
Lecture 01
จ" กรูป a และ b ซึ่งเป็นคำ"สัง่ที่ใชก้"รทำ"ง"น 1 Machine cycle ท่ี S1
CPU ก็จะอ่"น Op-code ท่ีต้องก"รเข"้ม"ยงั Instruction register และที่ S4 จะมกี"ร Fetch ครัง้ท่ีสองเกิดขึ้น ซึ่งในรูป a ก"ร Fetch
29
Lecture 01
ครัง้ท่ีสองน้ี CPU จะไมส่นใจขอ้มูลท่ีได้ม" สว่นในรูป b ขอ้มูลท่ีได้ม"ก็จะ เป็น Byte ท่ีสองของคำ"สัง่
จ"กรูป c เป็นก"รทำ"ง"นของคำ"สัง่ที่ใชก้"รทำ"ง"น 2 Machine cycles CPU จะไมส่นใจขอ้มูลท่ีได้จ"กก"ร Fetch 3 ครัง้ด้วยกันและในรูป d
เป็นก"รทำ"ง"นของคำ"สัง่ MOVX ซึ่งเป็นก"รติดต่อกับ External data memory ในกรณีน้ี จะไมม่กี"ร Fetch เกิดขึ้น เน่ืองเป็นก"รอ่"นขอ้มูล
เข"้จ"ก External data memory ขบวนก"ร Fetch / Execute น้ีจะเหมอืนกัน ไมว่"่จะเป็นก"รทำ"ง"นของ
โปรแกรมที่อยูใ่น Internal หรอื External program memory ดัง นัน้แล้วมนัจะใชเ้วล"ในก"รทำ"ง"นของคำ"สัง่ต่"งๆ เท่"กัน
30
Lecture 01
จ"กรูป a จะเป็นก"รแสดงถึงจงัหวะก"รทำ"ง"นของสญัญ"ณต่"งๆ ของ ก"ร Fetch เมื่อคำ"สัง่นัน้อยูใ่น External program memory ซึ่ง
สญัญ"ณ จะเกิดขึ้น 2 ครัง้ต่อ Machine cycle ในรูป b จะแสดงสญัญ"ณต่"งๆ ที่เกิดขึ้นเมื่อกระทำ"คำ"สัง่ท่ีมกี"รติดต่อ
กับ External data memory ก"ร Fetch จะถกูข"้มไป 2 ครัง้ และจะ เหน็ว"่จงัหวะเวล"ของก"รอ่"นขอ้มูลจ"ก External data memory นัน้จะใชเ้วล"ท่ีม"กกว"่ก"รอ่"นขอ้มูลจ"ก Program memory
และจ"กรูป จะแสดงถึงจงัหวะเวล"ของก"รสง่ค่" Address ท่ีต้องก"ร ออกม"ท"ง Port 0, Port 2, สญัญ"ณ และ ซึ่ง
31
Lecture 01
สญัญ"ณ น้ีจะใชใ้นก"ร Latch ค่"ของ Low address byte ท่ี ออกม"ท"ง Port 0
สว่นเมื่อ CPU ทำ"ง"นจ"กคำ"สัง่ท่ีอยูใ่น Internal program memory นัน้ สญัญ"ณ จะไมท่ำ"ง"น แต่อย"่งไรก็ต"มสำ"หรบัสญัญ"ณ
จะทำ"ง"น 2 ครัง้ต่อ Machine cycle ตลอด แต่จะยกเวน้เมื่อCPU ทำ"ง"นคำ"สัง่ MOVX
Timing Diagram
จงัหวะเวล"ก"รทำ"ง"นของสญัญ"ณต่"งๆ ท่ีเกิดขึ้นนัน้ส"ม"รถจะแบง่ได้ดังน้ี
เมื่อ Fetch Op-code จ"ก External Program Memory
32
Lecture 01
เมื่อ MCS-51 อ่"นขอ้มูลจ"ก External Data Memory
เมื่อ MCS-51 เขยีนขอ้มูลเข้" External Data Memory33
Lecture 01
เมื่อ MCS-51 ทำ"ง"นกับ I/O Port
34