程序计数器PC(Program Counter):
存放着下一条将要从程序存储器中取出的指令的地址。
工作方式:
① 程序计数器PC自动加1。
②程序计数器将被置入新的数值。
③ 在执行子程序或响应中断时:将PC的当前值(可称为断点值)自动送入堆栈;将子程序的入口地址或中断向量地址送入PC,程序流向发生变化,执行子程序或中断服务程序。
51单片机存储器采用哈佛(Harvard)结构,即将程序存储器和数据存储器截然分开,程序存储器和数据存储器各有自己的寻址方式、寻址空间和控制系统。
51单片机的4个物理存储空间相当于3个逻辑存储空间。
程序存储器ROM:(内外统一编址)
用来存放暂时性的数据、运算的中间结果或用作堆栈。 随时进行数据的写入和读出,关闭电源时,其所存储的信息将丢失。
特殊存储器单元:
0000H:复位后程序自动运行的首地址
0003H:外部中断0入口地址
000BH:定时器0溢出中断入口地址
0013H:外部中断1入口地址
001BH:定时器1溢出中断入口地址
0023H:串行口中断入口地址
程序一般应安排在0030H地址以后
数据存储器RAM:
用来存放MCU的固定系统程序、应用程序、数据或表格。如系统监控程序等。 写入信息后不易改写的存储器。断电后,其中的信息保留不变。
①工作寄存器区(含寄存器组0 ~ 3):
寄存器组0:地址00H~07H
寄存器组1:地址08H~0FH
寄存器组2:地址10H~17H
寄存器组3:地址18H~1FH
当前工作寄存器组选择 :RS1、RS0。通常采用位寻址比较方便。
②位寻址区:20H~2FH
片内数据RAM区的32~ 47(20H~2FH)16个字节单元,共包含128位。
③通用RAM区 :( 30H~7FH,共80字节 )
- 数据缓冲器
- 堆栈
- SP指示栈顶
- 复位时SP=07H
- 系统初始化通常重新设置
(4)特殊功能寄存器SFR区( 80H~0FFH)
(80C51的21个,80C52的26个)
除有字节寻址能力外,还有位寻址能力。
与运算器相关3个 :
- ACC 累加器
- B B寄存器
- PSW 程序状态字寄存器
指针类3个 :
- SP 堆栈指针
- DPH,DPL
与中断相关2个
- IE 中断允许控制寄存器
- IP 中断优先级控制寄存器
与口相关7个
- P0,P1,P2,P3
- SBUF 串行口数据缓冲器
- SCON 串行口控制寄存器
- PCON 电源控制寄存器
与定时/计数器相关6个
- TH0,TL0 T0的两个8位计数初值寄存器
- TH1,TL1 T1的两个8位计数初值寄存器
- TMOD 工作方式寄存器
- TCON 控制寄存器
时序:
时钟周期(或节拍)P、状态周期S、机器周期、指令周期
- 1个状态周期(S)= 2个节拍(P)
- 1个机器周期 = 6个状态(S) =12个节拍(P)
- 1个指令周期约为1~4个机器周期
几个常用的特殊功能寄存器:
程序状态字寄存器PSW:(8位)
CY:
- 判断有无进位或借位
- 可作为位累加器用。这时一般只用“C”表示。
AC:
- 根据AC判断加减运算时有无半进位或半借位;
- 在BCD码调整运算中要用到AC标志
F0(PSW.5)和F1(PSW.1): ——用户标志位,可作为用户自行定义的一个状态标记 。
RE1、RE0:控制片内工作寄存器区。
OV:有无溢出。溢出是指有符号数运算时,数值超过了+127—128。 OV=Cy7⊕Cy6,补码运算产生溢出OV=1,否则OV=0 。
P:用于串行通讯中的数据校验,判断是否存在传输错误。根据“1”个数的奇偶性
堆栈指针SP:(8位)
总是指向栈顶。遵循“先进后出,后进先出”的原则。SP指向操作。 入栈时,SP先加1,数据再压入SP指向的单元。出栈操作时
先将SP指向的单元的数据弹出,然后,SP再减1,这时SP指向的单元是新的栈顶。
堆栈功能作用有两个:保护断点和保护现场。
保护断点是将IP,CS的值压入堆栈,而保护现场是将断点处的有关寄存器的内容和标志位的状态压栈。
数据指针寄存器DPTR(Data Pointer——DPTR):(16位)
具有16位字长,可寻址范围216(64KB)
具有可被指令修改功能→可变更数据地址
存放16位的地址,可拆为2个8位的独立寄存器DPL和DPH