8. บทที่2: MCS-51
Architecture
รีจิสเตอร A และ B
รีจิสเตอร A จะเปนรีจิสเตอรที่ใชงานในการกระทําทางคณิตศาสตร บวก, ลบ, คูณ
, หารรวมถึ ง การใช รี จิ ส เตอร A ในการส ง ผ า นข อ มู ล ระหว า งภายใน
ไมโครคอนโทรลเลอรเองและหนวยความจําภายนอก
รีจิสเตอร B จะถูกใชรวมกับรีจิสเตอร A ในตอนที่ทําคําสั่งคณิตศาสตรที่เปนการ
คู ณ และการหาร และนอกจากนั้ น ทั้ ง สองรี จิ ส เตอร นี้ ก็ ยั ง ใช ใ นการเก็ บ ข อ มุ ล
ทั่วๆไปไดอีกดวย
15
Program Status Word(PSW)
PSW เปนรีจิสเตอรตัวหนึ่งใน 8051 ซึ่งใชในการเก็บ Flag ซึ่ง Flag นี้ก็คือบิตขอมูล
ที่บอกสถานะอะไรการทํางานของโปรแกรม ใน8051จะมีการเก็บ Flag ไวใน
รีจิสเตอร PSW และรีจิสเตอร PCON โดย Flag ที่เก็บใน PSW นี้ไดแก
- CY (Carry Flag) เปนบิตที่ใชเก็บผลเมื่อทําคําสั่งเกี่ยวกับคณิตศาสตร, การกระโดด
การ Rotate และคําสั่งเกี่ยวกับ Boolean
- AC (Auxilliary Carry Flag) เปนแฟลกที่จะมีการเซ็ตในกรณีการบวกลบเลข BCD
เพราะ BCD นี้จะมองที่ขอมูล 4 บิต
- OV (Over Flow Flag) เปนแฟลกที่มีการเปลี่ยนแปลงเมื่อมีการกระทําคําสั่ง
คณิตศาสตร
ซึ่งจะใชแสดงกรณีผลลัพธที่ไดเกินขนาดรีจิสเตอรเก็บได
- P (Parity Flag) เปนบิตที่บอกพาริตี้ของรีจิสเตอร A 1 เปน Odd Parity ซึ่งก็คือ
จํานวนบิตที่เปน1 นั้นมีจํานวนเปนเลขคี่
16
8
9. -F0 เปน User Flag ซึ่ง User สามารถกําหนดคาใหเปน 1 หรือ 0 เองโดยใชบันทึก
เพื่อแสดงเหตุการณอะไรบางอยางในโปรแกรม
- RS0 , RS1 คือบิตที่ 0 และ 1 ที่ใชกําหนด Bank ของหนวยความจําที่ใชในโปร
แกรมวาเปนการอางถึงรีจิสเตอร R0-R7 ของหนวยความจํา Bank ใด
RS1 RS0
0
0
เลือกรีจิสเตอร R0-R7 ของ Bank 0
0
1
เลือกรีจิสเตอร R0-R7 ของ Bank 1
1
0
เลือกรีจิสเตอร R0-R7 ของ Bank 2
1
1
เลือกรีจิสเตอร R0-R7 ของ Bank 3
psw.7
psw.6
psw.5
psw.4
psw.3
psw.2
CY AC F0 RS1 RS0 OV
bit7
psw.1
-
psw.0
P
bit 0
รีจิสเตอร PSW
17
Stack and Stack Pointer
ในตอนเริ่มตนที่รีเซต 8051 หรือเพิ่งมีการจายไฟเลี้ยงใหระบบคาของรีจิสเตอร
SP จะมีคาเทากับ 07 ซึ่งชี้ที่หนวยความจําภายในของ 8051 (Internal RAM)โดย
พื้นที่ตรงนี้เราจะเรียกวา Stack และจะถูกใชงานเมื่อมีการใชคําสั่ง PUSH , POP
ซึ่งจะขอกลาวในภายหลังแตในกรณีของการเรียกโปรแกรมยอยนั้นจะมีการ
เก็บตําแหนงถัดของคําสั่ง(หลังการเรียกใชโปรแกรมยอย)ไวในหนวยความจําที่
รีจิสเตอร Stack ชี้อยูและหลังจากทําโปรแกรมยอยจบแลวหากเราเรียกใชคําสั่ง
ใหจบโปรแกรมยอยนั่นคือ RET (Return) ก็จะเกิดการนําตําแหนงที่เก็บใน
Stack นี้ไปใหรีจิสเตอร PC ซึ่งก็จะเกิดการกลับไปทํางานคําสั่งที่อยูหลังการ
เรียกโปรแกรมยอย อยางไรก็ตามเนื้อที่ของ Stack เปน RAMภายในดังนั้นการ
ใชงานหากไมระมัดระวังก็อาจเกิดการซอนกันระหวางขอมูลในหนวยความจํา
ที่เรากําหนดและ Stack ได ซึ่งจะขออธิบายในภายหลัง
18
9
10. ตําแหนงของ SFR ภายใน8051
SFR
Function
Address(HEX)
A
Accumulator
0E0
B
Arithmetic
0F0
DPH อางหนวยความจําภายนอก
83
DPL อางหนวยความจําภายนอก
82
IE
ควบคุมการเกิดของอินเตอรรัพท
0A8
IP
จัดลําดับการตอบสนองตออินเตอรรัพท
0B8
P0
I/O port latch
80
P1
I/O port latch
90
P2
I/O port latch
0A0
P3
I/O port latch
0B0
PCON Power Control
87
PSW Program Status Word
0D0
19
SFR
Function
SCON Serial Port Control
SBUF Serial Port Data Buffer
SP
TMOD
TCON
TL0
TH0
TL1
TH1
Stack Pointer
Timer counter mode control
Timer/Counter Control
Timer 0 Low byte
Timer 0 High byte
Timer1 Low byte
Timer 1 High byte
Address(HEX)
98
99
81
89
88
8A
8C
8B
8D
*** PC (Program Counter) ไมมีแอดเดรสซึ่งอาจกลาวไดวาไมใช SFR
20
10