單片機(jī)的硬件結(jié)構(gòu)
書上是以MCS-51為例介紹的單片機(jī)硬件結(jié)構(gòu)。對(duì)硬件不太感興趣,省略若干內(nèi)容。
按功能來分主要包括如下部分:
- CPU
- RAM
- ROM
- 四個(gè)并行I/O口
- 1個(gè)串行口
- 2個(gè)16位定時(shí)器/計(jì)數(shù)器
- 中斷系統(tǒng)
- 特殊功能寄存器
CPU是8位的,RAM只有可憐的128B,8051ROM為4KB。
引腳介紹省略……
PSW(Program Status Word)
位7 | 位6 | 位5 | 位4 | 位3 | 位2 | 位1 | 位0 |
Cy | Ac | F0? | RS1 | RS0 | OV | -- | P |
- CY:進(jìn)位標(biāo)志CY(PSW 7)。它表示了運(yùn)算是否有進(jìn)位(或借位)。如果操作結(jié)果在最高位有進(jìn)位(加法)或者借位(減法),則該位為1,否則為0。
- AC:輔助進(jìn)位標(biāo)志AC。又稱半進(jìn)位標(biāo)志,它反映了兩個(gè)八位數(shù)運(yùn)算低四位是否有半進(jìn)位,即低四位相加(或減)有否進(jìn)位(或借位),如有則AC為1狀態(tài),否則為0。
- F0:標(biāo)志0(用戶可用途一般用途)
- RS1,RS0:在四組工作寄存器中選擇
- OV:溢出標(biāo)志位OV。MCS-51反映帶符號(hào)數(shù)的運(yùn)算結(jié)果是否有溢出,有溢出時(shí),此位為1,否則為0。
- P:奇偶標(biāo)志P。反映累加器ACC內(nèi)容的奇偶性,如果ACC中的運(yùn)算結(jié)果有偶數(shù)個(gè)1(如11001100B,其中有4個(gè)1),則P為0,否則,P=1。
RS1 | RS0 | 所選擇的寄存器組 |
0 | 0 | 0區(qū)(00H~07H) |
0 | 1 | 1區(qū)(08H~0FH) |
1 | 0 | 2區(qū)(10H~17H) |
1 | 1 | 3區(qū)(18H~1FH) |
PC
PC是程序計(jì)數(shù)器,正常時(shí)存放著下一條將要執(zhí)行的指令,在程序跳轉(zhuǎn)以及子程序調(diào)用的時(shí)候會(huì)有變化。PC是16位的,216=65536,所以51可以尋址64KB的存儲(chǔ)器空間。復(fù)位后PC的值是0000H。
ROM
RAM稱為數(shù)據(jù)存儲(chǔ)器,ROM稱為程序存儲(chǔ)器,SFR稱為特殊功能寄存器。RAM又分為內(nèi)部RAM與外部RAM,ROM也分為內(nèi)部ROM與外部ROM,不過ROM的區(qū)分僅僅是物理上的,邏輯上ROM不區(qū)分內(nèi)外。
ROM中有5個(gè)特殊地址:
中斷源 | 處理程序地址 |
外部中斷0(INT0) | 0003H |
定時(shí)器0中斷(T0) | 000BH |
外部中斷1(INT1) | 0013H |
定時(shí)器1中斷(T1) | 001BH |
串口中斷 | 0023H |
RAM
7FH 30H | 用戶RAM區(qū) |
2FH 20H | 位尋址區(qū) |
1FH 18H | 第3工作寄存器區(qū) |
17H 10H | 第2工作寄存器區(qū) |
0FH 08H | 第1工作寄存器區(qū) |
07H 00H | 第0工作寄存器區(qū) |
SFR
特殊功能寄存器以及其地址見下圖。空白地區(qū)不能讀寫,行為隨機(jī)。
SFR列表
標(biāo)識(shí)符號(hào) | 地址 | 寄存器名稱 |
ACC | 0E0H | 累加器 |
B | 0F0H | B寄存器 |
PSW | 0D0H | 程序狀態(tài)字 |
SP | 81H | 堆棧指針 |
DPTR | 82H、83H | 數(shù)據(jù)指針(16位)含DPL和DPH |
IE | 0A8H | 中斷允許控制寄存器 |
IP | 0B8H | 中斷優(yōu)先控制寄存器 |
P0 | 80H | I/O口0寄存器 |
P1 | 90H | I/O口1寄存器 |
P2 | 0A0H | I/O口2寄存器 |
P3 | 0B0H | I/O口3寄存器 |
PCON | 87H | 電源控制及波特率選擇寄存器 |
SCON | 98H | 串行口控制寄存器 |
SBUF | 99H | 串行數(shù)據(jù)緩沖寄存器 |
TCON | 88H | 定時(shí)控制寄存器 |
TMOD | 89H | 定時(shí)器方式選擇寄存器 |
TL0 | 8AH | 定時(shí)器0低8位 |
TH0 | 8CH | 定時(shí)器0高8位 |
TL1 | 8BH | 定時(shí)器1低8位 |
TH1 | 8DH | 定時(shí)器1高8位 |
時(shí)鐘周期、機(jī)器周期與指令周期
時(shí)鐘周期:Tosc = 1 / fosc。
機(jī)器周期:12Tosc = 12 / fosc。
指令周期:1~3個(gè)機(jī)器周期。單字節(jié)指令一個(gè)機(jī)器周期,雙字節(jié)可能1或2個(gè)機(jī)器周期,而3字節(jié)指令肯定是兩個(gè)機(jī)器周期,乘除法個(gè)別、是4個(gè)機(jī)器周期。
編輯:admin 最后修改時(shí)間:2018-05-08