单片机内部结构解析:揭秘核心构造,入门必备知识
注意:本文章所使用的单片机型号为STC89C52RC
一,8051系列的经典结构:
P0口与P2口各有八位数据总线,二者合起来构成十六位地址,则二的十六次方(65536)也就是64k,则51系列单片机访问的存储器为64k,P0口和P2口构成十六位地址总线,其中P2口为地址总线的高八位,P0口为地址总线的低八位。需要注意的是,当前一般不将P2口作为地址总线高八位来进行使用,而是作为普通I/O(与外设通信)来访问不同的地址。
注释:
其他功能口:
注意:ALE,EA非,PSEN在当下的较为先进的单片机中已经变成I/O口来使用,在有些单片机中有内置的复位,因此有些单片机的RST复位引脚也作为I/O口来使用
内部:
二,8051内部CPU的结构图:
三.单片机的最小系统:
(1).电源:
由于电源部分的电流是跳变的,会产生噪声,所以在电源电路当中一般要加入滤波电路滤除高频(小电容),低频噪声(大电容)
(2).晶振电路;
晶振周期:晶振的震荡频率:如12Mhz的晶振,的震荡一次用时1/12us;
机器周期:12个晶振周期构成一个机器周期;对于12MHz的晶振来说,机器周期为1us
指令周期:执行一条指令所需要的机器周期数,包括单周期,双周期,四周期;
(3).复位电路(RST):
高电平信号持续至少两个机器周期才能复位(对于12MHz,就是2us);
(4)EA非:
通常在不使用外部存储器的情况下EA非要接入5v高电平来关闭使用;
四.C51:
C51是在c语言的基础上,根据8051系列单片机的特点,拓展了c语言的数据类型定义,变量的存储定义和操作符的引用,增加了中断函数声明,用于开发51系列单片机的应用系统的程序语言;
注释:
一,直接寻址和间接寻址:
直接寻址:直接在指令当中给出操作数的存储单元地址,比如直接指定要访问的存储单元0想0;
适用范围:用于访问单片机的片内存储器的低128字节和特殊功能寄存器;
间接寻址:不在指令当中直接给出操作数的地址,而是把操作数的地址存于某个寄存器当中,通过访问寄存器,间接访问操作数;
适用范围:片内全部256字节,还能访问片外存储器;
二,分页访问:
分页访问把内存或者存储设备划分成大小固定的块,这些块被称作 “页”。每一页都有唯一的编号,也就是页号。系统在访问内存时,以页为单位进行操作,而不是按单个字节或者字来访问。
分页:操作系统把进程的地址空间划分成多个逻辑页,同时把物理内存划分成相同大小的物理页框。逻辑页和物理页框的大小通常是一样的,常见的页大小有 4KB、8KB 等。
页表:为了实现逻辑页到物理页框的映射,操作系统会维护一个页表。页表记录了每个逻辑页对应的物理页框的地址。当进程访问某个逻辑地址时,系统会先把这个逻辑地址拆分成页号和页内偏移量两部分。
地址转换:通过页号在页表中查找对应的物理页框号,然后将物理页框号和页内偏移量组合起来,得到最终的物理地址,进而访问物理内存。
示例说明:
假设页大小为 4KB(即 212 字节),逻辑地址为 0x1234。
页号计算:因为页大小为 4KB,所以页内偏移量占 12 位,页号占剩余的高位。将逻辑地址 0x1234 转换为二进制为 0001 0010 0011 0100
,低 12 位 0010 0011 0100
是页内偏移量,高 4 位 0001
是页号。
地址转换:通过页号在页表中查找对应的物理页框号,假设查找到的物理页框号为 0x2,将物理页框号和页内偏移量组合起来,得到物理地址为 0010 0010 0011 0100
,即 0x2234;
(对于指令的使用,我们以后在介绍)
五,存储类型及操作符
(本人为单片机初学者,如有错误欢迎指正)
作者:释怀齐恒