欢迎来到天天文库
浏览记录
ID:49958193
大小:864.50 KB
页数:48页
时间:2020-03-05
《微处理器结构与嵌入式系统设计第二讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、微处理器结构与嵌入式系统设计单片机架构剖析AT89S51内部架构从IO口到内部结构比较一下图(a)和(b),前者显示出4根数据线:读锁存器、内部总线、写锁存器、读管脚。这4根数据线与单片机内部结构中的总线相连。而后者则用一个双向箭头来表示这4根数据线,说明锁存器与总线之间的关系。可把整个P1口都抽象出一个结构框图,如图示,其中把8位I/O口的独立结构抽象到了P1口锁存器和P1口驱动两个方框中,这与图7-1所示的P0、P1、P2、P3口结构是一致的。由于I/O口都是双向的,所有的数据线都使用双向箭头。内部交换的数据举例:R
2、AM是单片机的随机访问存储器,用于存储运行过程中的数据。假设RAM中地址30H上存储了数据“3CH”,现在单片机执行指令“MOVA,30H”,之后,RAM中地址30H上的数据3CH“跑”到总线上,而累加器A根据指令要求,从总线上接收这个数据,执行完毕后,A=3CH。算术逻辑单元ALUALU为“进行算术运算和逻辑运算的处理单元”。它能进行加、减法等算术运算,也能做与、或、异或等逻辑运算。ALU就是单片机的“CPU”,ALU的输入端A和B,它们的数据都来自总线,经过ALU运算后,结果通过R又输出到总线上。在运算过程中,ALU
3、通过输出D向程序状态字PSW输出状态,PSW会随着ALU的运算发生相应的变化。如执行加法指令ADD时,当最高位有进位时,PSW的进位标志C就被置1,这都归功于ALU通过D向PSW的C位输出高电平。单片机的程序存储器整体结构程序下载以.HEX为后缀的执行代码文件可通过下载线下载到单片机中。如果用记事本打开执行代码文件会得到一串十六进制数,其中包含了每条指令的执行代码。比如指令“MOVA,#88H”执行代码为“74”、“88”,其他指令都可以找到相应的执行代码。执行代码通过下载线下载到了单片机的片内ROM中。因为片内ROM中
4、下载的是程序,所以也称这个片内ROM为片内程序存储器。片内程序存储器AT89S51单片机的片内程序存储器容量为4Kbytes,即4×1024=4096bytes。这4096bytes片内程序存储器可用地址0000H~0FFFH来指向。在我们通过下载线往单片机下载程序时,执行代码将从0000H开始,被依次存储到单片机中。如图示的执行代码,存储到0000H里的是74H,即“01110100”;0001H里的是88H,即“10001000”。按照这种方法直到程序全部下载完毕,根据程序的长短不同,程序存储器被占用的空间多少也就不
5、同。程序计数器(PC)程序计数器PC,它用于指示单片机下一条将要执行的代码的地址。当单片机上电复位时,PC=0000H,即指向程序存储器中的0000H,单片机就把0000H上的代码取出执行。之后PC自动增加1,变成0001H,如图示,接着单片机就执行0001H地址上的代码。由于程序计数器PC是个两个字节(16位)的寄存器,于是受PC的制约,AT89S51单片机最大的寻址范围是0000H~FFFFH,共64Kbytes。也就是说,除了AT89S51单片机片内的4Kbytes程序存储器(地址0000H~0FFFH)外,单片机
6、能寻址的外部扩展的程序存储器空间最大为64Kbytes-4Kbytes=60Kbytes,即地址1000H~FFFFH。当EA接高电平时,单片机复位时读取片内程序存储器中的程序,即从PC=0000H开始,依次读取0000H~0FFFH上的程序。当PC增加到0FFFH时,PC再增加1等于1000H,单片机将自动转到片外程序存储器上执行其中的程序。而当EA接低电平时,单片机则完全读取片外程序存储器中的程序,即从片外程序存储器中的0000H开始,依次读取程序来执行。由于受到程序计数器PC的位数限制,读取片内或片外程序存储器的最
7、大地址范围为0000H~FFFFH。单片机的数据存储器片内数据存储器单片机的数据存储器也有片内和片外之分。片内数据存储器就是单片机中原有的数据存储器,即片内RAM。片内数据存储器可分成三个部分:工作寄存器区、位寻址区、开放区。这三个区都可用来保存单片机运行过程所产生的数据。但片内数据存储器是一个RAM,即随机访问存储器,在掉电后其中的数据将会丢失。单片机的128×8-bit的片内数据存储器只有其中的20H~7FH共96个字节(开放区+位寻址区)给我们使用的,而00H~1FH则是工作寄存器区,一般通过工作寄存器R0~R7来
8、使用。AT89S51单片机最大的数据存储器(片内+片外)寻址范围也为0000H~FFFFH,共64Kbytes的空间。工作寄存器区(00H~1FH)工作寄存器共有8个,分别为R0、R1、R2、R3、R4、R5、R6、R7,前面有许多程序已经涉及工作寄存器。这8个工作寄存器可以用来装载1个字节长度的数据,在程序中可视为
此文档下载收益归作者所有