“土巴兔”提交创业板上市申请拟募资7亿元
06-17
为了保证程序能够连续执行,CPU必须有某种手段来确定一条指令的地址。
程序计数器PC就是起到这个作用的,所以通常也称为指令地址计数器。
在程序开始执行之前,必须设置其起始地址。
即向PC发送程序第一条指令所在内存单元的地址。
当执行一条指令时,CPU会自动修改PC的内容,使其始终保存下一条要执行的指令的地址。
由于大部分都是按顺序执行的,所以修改过程只是简单的加1。
下面我们看一下内存系统:(这一章很重要,请仔细理解)串行单片机的内存配置方法与一般微型计算机不同。
一般微型计算机通常只有一个地址空间,ROM和RAM可以随意布置在这个地址范围内的不同空间中。
即ROM和RAM的地址被分配到同一个队列中的不同地址空间。
CPU访问内存时,一个地址对应一个唯一的存储单元,可以是ROM或RAM,并使用类似的访问指令。
这种内存结构称为普林斯顿结构。
的内存在物理上分为程序内存空间和数据内存空间。
有四个存储空间:片内程序存储器和片外程序存储空间,以及片内数据存储器和片外数据存储器。
这种程序存储器和数据存储器分离的结构称为哈佛结构。
但从用户使用的角度来看,内存地址空间分为三类: 1。
片内、片外统一地址H-FFFFH 64K字节程序存储器地址空间,采用16位地址; 2、64K字段外数据存储器的地址空间也是从H到FFFFH,使用16位地址; 3、K字节数据存储器地址空间使用8位地址。
以上三个存储空间的地址有重叠。
这三个不同的逻辑空间有什么区别?指令系统设计了不同的数据传输指令符号:CPU使用MOVC访问片内和片外ROM指令,访问片内ROM指令。
使用 MOVX 作为外部指令,使用 MOV 作为访问片上 RAM 的指令。
1。
程序存储器地址空间 程序存储器用于存储编程的程序和表常量。
程序存储器通过16位程序计数器PC寻址,寻址容量为64K字节。
,64位程序存储器片内ROM为4K字节,地址为H-0FFFH,片外最大可扩展为64K字节ROM,地址为H-FFFFH,片内和内部统一编址。
当引脚EA接高电平时,程序计数器PC在H-0FFFH范围内,即第一个4K字节地址执行片内ROM中的程序;当指令地址超过0FFFH时,自动切换到片外ROM指令。
当引脚EA接低电平时,片内ROM不工作,CPU只能从片外ROMZ取指令,地址可以从H开始寻址。
这种接法特别适用于使用单片机的应用。
由于芯片上没有ROM,因此必须将EA 设置为0,以便可以从外部扩展EPROM 中取指令。
从片内程序存储器和片外程序存储器取值时执行速度是相同的。
程序存储器的某些位置被保留供系统使用。
存储单元H-H作为上电复位后的启动程序存储单元。
由于上电复位后程序计数器PC的内容为H,所以CPU总是从H开始执行程序。
如果这三个单元中有传送指令,则程序将被定向到传送指令指定的ROM空间以便执行。
H-H单元均匀分为5段,作为5个中断服务程序的入口。
因为这五个入口之间的间隔较小,所以一般来说,这五个入口都放置跳转指令,而真正的中断服务程序则酌情安排在后面的内存中。
这五个条目分别是: h:外部中断0的入口地址。
当外部中断引脚INT0,即P3.2有效时,产生中断申请。
CPU响应中断后,自动将地址H加载到程序计数器PC中。
,程序切换到H,执行外部中断0的中断服务程序。
Bh:定时器0溢出中断的入口地址。
当定时器T0溢出时,产生中断请求。
CPU响应中断后,自动将地址BH加载到程序计数器PC中,并将程序传送到BH执行定时器。
0 中断服务程序。
h:外部中断入口地址1。
当外部中断引脚INT1,即P3.3有效时,产生中断申请。
CPU响应中断后,自动将地址H装入程序计数器PC,程序转入H执行外部中断1的中断服务程序。
Bh:定时器1溢出的入口地址打断。
当定时器T1溢出时,产生中断申请。
CPU响应中断后,自动将地址BH加载到程序计数器PC中,程序转入H执行。
定时器1的中断服务程序。
h:串行接口中断的入口地址。
当串行接口接收或发送一段数据时,会引起中断请求。
CPU响应中断后,自动将地址H装入程序计数器PC,程序转入H.串行接口中断服务程序。
2。
数据存储器地址空间。
数据存储器RAM用于存储运算中的中间结果、暂存数据、缓冲区、标志位等。
数据存储器空间也分为片内和片外两部分,即片内RAM和片外RAM。
片外数据存储空间为64K,范围从H-FFFFH;片内存储空间以字节为单位,地址范围为H-00FFH。
(1) 片外RAM 片外数据存储器的低地址H-00FFH 与片内数据存储器空间重叠。
如何区分片内和片外RAM空间?有两个指令:MOV 和 MOVX。
用途 区分片内和片外RAM空间。
片内RAM使用MOV指令,片外64KRAM空间专门用于MOVX指令。
(2) 片内RAM数据存储器的最大可寻址单元分为两部分: 低字节00H-7KH是真正的RAM区域。
高字节80H-FFH为特殊功能寄存器区。
低字节RAM,地址00H-1FH分为四组寄存器区,每组有8个工作寄存器,即R0-R7,共占用32个单元。
通过设置程序状态字PSW中的RS1和RS0两位,可以选择每组寄存器作为CPU当前的工作寄存器组。
如果程序中不需要4组,则其余的可以作为通用RAN单元。
CPU复位后,选择第0组工作寄存器。
工作寄存器区之后的16字节单元,即20H-2FH,可以按位寻址方式访问。
该位的地址为00H-7FH。
低字节RAM单元的地址范围也是00H-7FH,以不同的寻址方式来区分,即采用位寻址来访问单位地址。
访问低字节单元可以采用直接寻址或间接寻址,这样就可以区分00H-7FH是位地址还是字节地址。
稍后将讨论寻址方法。
通过执行指令,可以直接对某一位进行操作,如置1、校验0,或者判断1、判断0等,可以作为软件标志位,也可以进行位处理。
高字节RAM,特殊功能寄存器。
在片内高字节RAM中,除了程序计数器PC外,还有21个特殊寄存器,也称为特殊功能寄存器。
它们离散地分布在80H-FFH的RAM空间中。
21个特殊功能寄存器中,有11个特殊功能寄存器具有位寻址能力,其字节地址正好能被8整除。
下面介绍部分特殊功能寄存器,其余的稍后介绍:页--] (1) 累加器ACC 累加器ACC 是最常见、最繁忙的八位特殊功能寄存器。
很多指令的操作数都是从ACC中取出的,很多运算结果也存放在ACC中。
A用作指令系统中累加器ACC的助记符。

(2) 寄存器B 在乘法和除法指令中使用8 位B 寄存器。
乘法指令的两个操作数分别来自A和B,乘积存储在两个8位寄存器B和A中。
除法指令中,被除数存储在A中,除数存储在B中,商存储在存储在A中,余数存储在B中。
在其他指令中,B可以用作通用寄存器或RAM单元。
(3) 程序状态寄存器PSWPSW 是8 位特殊功能寄存器。
其位包含程序执行后的状态信息,用于程序查询或判断。
各位的含义和格式如下: 除了确定的字节地址DOH外,PSW的各位还有一个位地址。
PY,PSW.7,携带旗帜。
执行加法或减法运算指令时,如果运算结果的最高位为 7,且有进位或借位,则 CY 位由硬件置 1。
如果运算结果的最高位没有进位或借位,则CY 清0。
CY 也是位运算时的累加器。
AC,PSW.6 半标志位,也称辅助进位标志。
当进行加法或减法运算时,运算结果从低四位产生,即当位 3 到高四位有半进位或借位时,AC 位将自动设置为 1。
硬件,否则AC将自动清0。
PSW.5,用户标志。
用户可以根据自己的需要为FO位赋予一定的含义。
它由用户设置和重置。
系统并没有明确其含义。
RSO、RS1、PSW.4、PSW.5,工作寄存器组选择控制位。
这两位的值决定选择哪组工作寄存器作为当前工作寄存器组。
用户通过软件改变RS1和RS0值的组合来切换当前选择的工作寄存器组。
当RS1=0、RS0=0时,工作寄存器组位于00~07单元,即R0为00、R1为01、R2为02、R3为03、R4为04、R5为05. R6 为 06,R7 为 07。
当 RS1=0、RS0=1 时,工作寄存器组位于 08 至 0F 单元;当RS1=1,RS0=0时,工作寄存器组位于单元10至单元17;当RS1=1、RS0=1时,工作寄存器组位于18~1F单元;上电复位后,RS1=0,RS0=0,工作寄存器组位于00~07单元;根据需要,可以使用传输指令操作 PSW 整个字节或使用位操作指令改变 RS1 和 RS0 的状态来切换当前工作寄存器组。
该设置为保护节目中的场景提供了方便。
OV,PSW.2,溢出标志。
在进行二进制补码运算时,如果出现溢出,即运算结果超出-to范围时,OV位会被硬件自动置1;当没有溢出时,OV=0。
PSW.1为保留位,未使用,为F1用户标志位。
P,PSW.0,奇偶校验标志。
每条指令执行后,该位始终记录累加器 A 中 1 的个数。
如果结果 A 中 1 的个数为奇数,则设置 P=1,否则 P=0。
常用于检查串行通信中数据传输是否有错误。
(4) 堆栈指针SP 堆栈指针SP 是8 位特殊功能寄存器。
SP的内容即堆栈指针,可以指向片内RAM 00H-7FH的任意单元。
系统复位后,SP被初始化为07H,指向RAM单元07H。
我们先来介绍一下栈的概念。
和一般的微机处理器一样,它有一个堆栈。
在片内RAM中专门开辟了一个区域,并以“后进先出”的结构处理数据访问。
这种数据就像一般的微机处理器一样配备了堆栈。
在片内RAM中专门开辟了一个区域,并以“后进先出”的结构处理数据访问。
这种数据结构方式对于中断和调用子程序来说非常方便。
栈操作有两种: 一种叫数据压入,即PUSH;另一种叫data pop,即POP。
栈顶由栈指针SP自动管理。
每次压入或弹出操作后,堆栈指针都会自动调整以保持指示堆栈顶部的位置。
在使用栈之前,先给SP赋值,指定栈的起始位置,称为栈底。
当数据入栈时,SP自动加1,表示当前栈顶位置。
堆栈指针SP是一个双向计数器。
SP 内容在压入堆栈时自动递增,在从堆栈弹出时自动递减。
接入信号必须遵循“后进先出”的原则。
(5) 数据指针DPTRDPTR 是16 位特殊功能寄存器。
高位字节寄存器用DPH表示,地址为83H。
低位字节寄存器用DPL表示,地址为82H。
DPTR既可以作为16位寄存器处理,也可以作为16位寄存器处理,也可以作为两个独立的8位寄存器DPH和DPL处理。
(6)IO口P0、P1、P2、P3PO、P1、P2、P3为4个8位特殊功能寄存器,是4个并行IO口的锁存器。
它们都有字节地址,每个锁存器也有位地址,所以当每条IO线独立输入或输出时,可以锁存数据,输出时可以缓冲数据。
中断源包括:定时计数器0、定时计数器1、外部中断0、外部中断1、串口中断。
除了上述资源外,还有40个引脚(这40个引脚请查看相关信息)。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-18
06-18
06-17
06-18
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现