(三)MCS-51单片机的结构

1. MCS-51 系列单片机的结构原理


1> 运行部件

以算术逻辑运算单元 ALU 为核心,包含累加器 ACC ,B 寄存器,暂存器,标志寄存器 PSW 等许多部件,能够实现算术运算,逻辑运算,位运算,数据传输等处理


2> 算术逻辑运算单元 ALU

可对一位二进制数据进行置位,清零,求反,测试,转移及位逻辑“与”“或”等处理


3> 累加器 ACC ( 简称 A )


4> 标志寄存器 PSW

8 位寄存器,用于保存指令执行结果的状态,以供程序查询判别


5> 进位标志位 C ( PSW .7 )

执行算术运算和逻辑运算指令时,用于记录最高位的进位或错位


6> 辅助进位标志位 AC ( PSW .6 )

用于记录在进行加法和减法运算时,低 4 位向高 4 位是否有进位或错位


7> OV ( PSW .2 )溢出标志位

进行加减法运算,结果超出 8 位二进制范围, OV 置 1 ,标志溢出


8> P ( PSW .0 )奇偶标志位

A 中 1 的个数为奇数,置位


*****************************************************************************************


1.压缩 BCD 码 = 8421 码


2.分析以下指令执行后,累加器 A ,标志位 C ,AC ,OV ,P 的值


MOV A , # 67 67 H = 01100111 B

ADD A , # 58 58 H = 01011000 B


相加得:

10111111 B --> OBF H


最高位没有发生进位, C = 0

低四位没有向前进位, AC = 0

OV = 1,因为范围是( -128 ~ 127 ) 发生溢出

P = 1,因为 1 的个数为奇数


*****************************************************************************************


2. MCS-51 单片机的存储器结构


分为 程序存储器 ROM 和 数据存储器 RAM


1> 程序存储器

用于存放单片机工作的程序,单片机工作时先由用户编制好程序和表格常数,把它存放到程序存储器中,然后在控制器的控制下,依次从程序存储器中取出指令送到 CPU 执行,实现功能。为此,设计了一个专用寄存器 -- 程序计数器 PC ,用以存放要执行的指令的地址( 16 位,64kb )


2> 数据存储器

用于存放取出程序执行时所需的数据


1> 片内数据存储器

工作寄存器组区,位寻址区,一般 RAM 区和特殊功能寄存区,堆栈区


*****************************************************************************************


● 重点


1.怎么区分程序存储器片内片外


根据引脚 EA(非)电平的高低来决定,接低电平时,则从片外程序存储器取指,接高电平,则从片内取指


2.区分 64 kb 的程序存储器和 64 kb 片外数据存储器


① 根据信号区分

片外数据存储器 RD(非) WR(非)

程序存储器 PSEN


② 根据指令区分

片外数据存储器 MOVX

程序存储器 MOVC


3.区分片内数据存储器和片外数据存储器低 256 地址空间重叠


根据指令的不同

片内数据存储器 MOV

片外数据存储器 MOVX


*****************************************************************************************


3. MCS-51 系列单片机外部引脚及片外总线


1> 输入输出引脚


① P0 口( 39 - 32 引脚 )

唯一能够外接电阻, P0 口分时复用为低 8 位地址总线和双向数据总线


② P1 口( 1 - 8 引脚 )

可作为准双向 I/O 接口使用


③ P2 口( 21 - 28 引脚 )

高 8 位地址总线


④ P3 口( 10 - 17 引脚 )

准双向 I/O 接口使用,每一位还具有独立的第二功能


2> 复位方式


MCS-51 单片机有一个复位引脚 RST ,高电平有效,当外部电路使得 RST 端出现 2 个机器周期( 24 个时钟周期 )以上的高电平,系统内部复位


3> 程序执行方式


程序复位后, PC 指针总指向 0000 H,所以程序总是从 0000 H 开始执行


4> 中断


MCS-51 单片机的中断系统规定,从中断服务程序中返回之后,至少要再执行一条指令,才能重新进入中断


5> 机器周期


包含 S1,S2,・・・S6 六个状态,每个状态有 P1,P2 两拍,每一个拍称为一个时钟周期


① 一个机器周期包含 12 个时钟周期

② 振荡周期:晶振平率 fosc 的倒数 == 时钟周期

③ 1 个机器周期:12 个震荡周期

④ 1 个指令周期:1,2,4 个机器周期

⑤ ALE 的频率:1/6 的时钟周期

= 2 * 机器周期


机器周期 = 12 * 时钟周期( 振荡周期 )













你可能感兴趣的:(二进制,程序,寄存器,加减法)