单片机原理与应用以及C51编程技术——硬件体系结构梳理

news/2024/5/3 2:09:01/文章来源:https://blog.csdn.net/m0_52592798/article/details/127065695

文章目录

  • 一、单片机的结构原理
    • 1.1 主要性能和特点
    • 1.2 内部框图
    • 1.3 CPU
      • 1.3.1 运算器
      • 1.3.2 控制器
    • 1.4 几个主要的特殊功能寄存器SFR说明
      • 1.4.1 程序指针PC
      • 1.4.2 累加器A
      • 1.4.3 寄存器B
      • 1.4.4 数据指针DPTR
      • 1.4.5 程序状态字PSW
        • 介绍
        • 例子
      • 1.4.6 堆栈指针SP
        • 堆栈的介绍
        • 堆栈的作用
        • 堆栈操作的两种方式
  • 二、单片机的存储器结构
    • 2.1 程序存储器ROM(片内、片外)
      • 2.1.1 程序存储器六个特殊的单元
      • 2.1.2 外部程序存储器
    • 2.2 数据存储器RAM
      • 2.2.1 AT89 片内、片外数据存储器示意图
      • 2.2.2 片内RAM低128B 字节功能分配图
        • 工作寄存区区结构图(0区)
        • 片内RAM中具有双重功能的存储结构图
        • RAM的20H~2FH的存储特点(位寻址区)
      • 2.2.3 特殊功能寄存器SFR
    • 2.3 外部数据存储器
    • 2.4 小结
  • 三、单片机的引脚功能
    • 3.1 51单片机的外形和逻辑符号
    • 3.2 51单片机的引脚定义
      • 3.2.1 主电源引脚
      • 3.2.2 外接晶体引脚
      • 3.2.3 控制与电源复用引脚
        • RST / V pd(9脚)
        • ALE/PROG(30脚)
        • /PSEN(29脚)
        • /EA / Vdd (31脚)
  • 四、单片机的I/O口
    • 4.1 P0
    • 4.2 P1
    • 4.3 P2
    • 4.4 P3
      • 4.4.1 小结
    • 4.5 片外总线结构
      • 4.5.1 地址总线(AB)
      • 4.5.2 数据总线(DB)
      • 4.5.3 控制总线(CB)
    • 4.6 小结
  • 五、单片机内部看门狗定时器
    • 看门狗定时器(WDT)简介
  • 六、单片机复位工作方式
    • 6.1 介绍
    • 6.2 两种上电复位电路
      • 6.2.1 上电复位电路
      • 6.2.2 上电复位及按钮复位
    • 6.3 复位的初始状态
  • 七、单片机低功耗方式
    • 7.1 介绍
    • 7.2 空闲工作方式
    • 7.3 掉电工作方式
  • 八、单片机的时序
    • 8.1 介绍
    • 8.2 基本时序
      • 8.2.1 时钟周期
      • 8.2.2 状态周期
      • 8.2.3 机器周期
      • 8.2.4 指令周期

一、单片机的结构原理

1.1 主要性能和特点

  1. 内部程序存储器ROM :4K的flash程序存储器;
  2. 寄存器区:4个寄存器区,每个区有R0-R7八个工作寄存器;
  3. 8位并行输入输出端口:P0、P1、P2和P3;
  4. 定时/计数器:2个16位的定时/计数器 T0、T1;
  5. 串型口:全双工串行端口(RXD:接收端、TXD发送端);
  6. 中断系统:设有5个中断源(T0、T1、Int0、Int1、ES);
  7. 系统扩展能力:可外接64K的 ROM 和64K的 RAM;
  8. 堆栈:设在RAM单元、位置可以浮动(通过指针SP来确定堆栈在RAM中的位置)系统复位时SP=07H;
  9. 布尔处理机:配合布尔运算的指令进行各种逻辑运算;
  10. 指令系统:111条指令。按功能可分为数据传送、算术运算、逻辑运算、控制转移和布尔操作5大类。

1.2 内部框图

在这里插入图片描述

1.3 CPU

CPU由运算器和控制器两部分组成,主要完成取指令、指令译玛、发出各种操作所需的控制信号,使单片机各个部分协调工作。

1.3.1 运算器

运算器是以算术逻辑单元ALU为核心,加上累加器A、寄存器B、程序状态字PSW及专门用于位操作的布尔处理机等组成的,它可以实现数据的算术运算、逻辑运算、位变量处理和数据传送等操作。

1.3.2 控制器

控制器是单片机的控制中心,它包括定时和控制电路、指令寄存器、指令译码器、程序计数器PC、堆栈指针SP、数据指针DPTR以及信息传送控制部件等。

它先以振荡信号为基准产生CPU的时序,从ROM中取出指令到指令寄存器,然后在指令译码器中对指令进行译码,产生指令执行所需的各种控制信号,送到单片机内部的各功能部件,指挥各功能部件产生相应的操作,完成指令对应的功能。

1.4 几个主要的特殊功能寄存器SFR说明

1.4.1 程序指针PC

  1. 为CPU指明将要执行的指令地址,(存放下一条指令的地址)。长度为16位,所以寻址范围为0-65535(64K)。
  2. 单片机在复位时PC=0000H,这就意味着一旦将单片机复位,CPU就从ROM的0000H单元执行程序。
  3. 在物理上是独立于SFR。

1.4.2 累加器A

最常用的寄存器。所有的算术运算指令所要使用的寄存器且运算结果都存放在A中。

1.4.3 寄存器B

乘、除法指令专用的寄存器,当然也可作为一般的工作寄存器使用。

1.4.4 数据指针DPTR

  1. 由两个8位寄存器构成。高八位寄存器DPH和低八位寄存器DPL构成16位的寄存器DPTR。
  2. DPTR主要用来存放外部数据存储器RAM的地址,作为CPU访问外部RAM的数据指针
  3. CPU的查表指令使用DPTR提供ROM中表格的首地址;
  4. 在MCS-51单片机中,CPU访问外部RAM中的数据或ROM中的表格、常数必须借助DPTR做指针来实现数据的读取访问。

1.4.5 程序状态字PSW

在这里插入图片描述
8位寄存器,表征程序执行的状态信息。

介绍

  1. CY(PSW.7)进位标志:
    在加减法运算中,累加器A的最高位D7有进位,则CY=1,否则CY=0。同理,在减法运算中,如果A7有借位,则CY=1.因此CY往往作为无符号数运算是否有溢出的标志。
  2. AC(PSW.6)辅助进位位:
    用来判断加减法运算时,低四位是否向高四位进位或借位(既A3的进位或借位)。往往用来处理压缩的BCD码的运算处理。
  3. F0(PSW.5) 用户标志位:
    完全由用户来定义和使用。
  4. RS1,RS0工作寄存器区选择位:
    补充:寄存器区:4个寄存器区,每个区有R0-R7八个工作寄存器;
    确定工作寄存器R0-R7在4个区中的位置(单片机在复位后RS1、RS0=00 — 选择0区)。可以通过修改RS1,RS0的值来改变工作寄存器区的选择。
  5. OV(PSW.2)溢出标志位
    判断有符号数运算时是否有溢出。
    OV的结果可以用一个算法来表示: OV=CP异或CS
    其中:CP为A7的进位,CS为A6的进位OV=1表明有溢出。
    百度解释:溢出标志位:对于单字节的有符号数,若用最高位(b7)表示正、负号,则只有7位有效数位(b6~b0),能表示-128~+127之间的数。运算结果超出了这个数值范围,就会发生溢出,此时OV=1,否则OV=0。
  6. P(PSW.0)奇偶标志位:
    用来标志累加器A中运算后“1”的个数。
    当P=1时,表明A中1的个数为奇数个,反之为偶数个。

例子

在这里插入图片描述

1.4.6 堆栈指针SP

SP 堆栈指针:8位寄存器,用来指示堆栈的位置,可由软件修改。

堆栈的介绍

堆栈是一种按“先进后出”规律操作的存储结构。不同类型的处理器其堆栈的设计各不相同:

SP寄存器作为堆栈指针。这种结构的特点是充分的利用RAM的空间,使堆栈的空间得以扩大。但它也有一种“致命”的弱点:数据很容易与堆栈发生冲突,特别是初学编程者。
为了避免上述问题的出现,编程者往往在程序的开始加上一条指令: MOV SP,60H 试分析为什么?

百度解释:
单片机复位后SP的值一般要用一条指令赋值为60H,这只是个别人写程序的爱好与习惯罢了,没有任何规定必须是赋值60H,更没有任何原因必须选60H。
就单片机复位后,SP=07H,不用重新赋值也是可以的,否则,为什么当初设计者会这么设计呢。由于51单片机的堆栈是向上增长的,所以,为了避免堆栈区与用户数据区互相影响,才将SP设置在60H以后,比较合理的是赋值为6FH,这样堆栈区可用70H~7FH,预留有16个单元足够,也不浪费。

堆栈的作用

①保护程序的断点地址(既返回地址);
②保护数据(也称保护现场)。

堆栈操作的两种方式

①断点地址的保护是靠执行子程序调用指令或发生中断调用时,由硬件自动实现断点地址的进栈保护;在子程序或中断服务程序返回时有RET或RETI指令实现恢复断点;
②而对于其它需要保护的数据都要由专用的指令PUSH或POP来实现进栈保护或恢复。

二、单片机的存储器结构

  1. 程序存储器ROM要掌握的要点是:6个特定的入口单元
  2. 数据存储器RAM要掌握的要点是:内部结构(包括寄存器区、堆栈区、位寻址区和特殊功能寄存器SFR区)。
    ① 内部集成了4K的程序存储器ROM
    ② 内部具有256B的数据存储器RAM
    ③ 可以外接64K的程序存储器ROM和数据存储器RAM。

从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、RAM。
从逻辑上讲(既编程的角度),51单片机的存储系统实际上分为三个存储空间。
1. 片内数据存储器RAM;
2. 片外数据存储器RAM;
3. 片内或外的程序存储器ROM(由EA电平决定)。
结构图:
在这里插入图片描述

2.1 程序存储器ROM(片内、片外)

  1. 程序存储器ROM用于存放程序、常数或表格。

  2. 在51单片机中,由引脚 /EA 上的电平选择内、外ROM;
    EA=1时,CPU执行片内的4KROM中的程序;
    EA=0时,CPU选择片外ROM中的程序。

  3. 无论是使用片内还是使用片外ROM,程序的起始地址都是从ROM的0000H单元开始。

  4. 尽管系统可以同时具备片内ROM和外部ROM,但是在一般正常使用情况下,通过/EA的设定来选择其一(或者使用内部ROM,或者使用外部ROM)。

  5. 如果EA=1(执行片内程序存储器中程序时):
    如果程序计数器的指针PC值超过0FFFH(4K)时,单片机就要自动的转向片外的ROM存储器且从1000H单元开始执行程序(无法使用片外ROM的低4K空间)。
    在这里插入图片描述
    在这里插入图片描述

2.1.1 程序存储器六个特殊的单元

0000H单元:复位时程序计数器PC所指向的单元,因此用来 存放程序中的第一条指令;
0003H单元:外部中断/INT0的矢量入口地址;
000BH单元:定时器T0溢出中断的矢量入口地址;
0013H单元:外部中断/INT1的矢量入口地址;
001BH单元:定时器T1的溢出中断矢量入口地址;
0023H单元:串行口接收、传送的中断矢量入口地址。
矢量入口单元:在编写中断程序时,写入对应的“跳板指令”。
在这里插入图片描述

因为在复位时,程序指针PC指向0000H

2.1.2 外部程序存储器

当单片机使用外ROM存储器时(扩展系统),必须设定/EA=0,此时单片机的端口功能就要发生相应的改变:
① P0、P2作为外部ROM的地址和数据总线;
② 使用引脚/psen信号来选通外部ROM的数据三态输出。
在这里插入图片描述

2.2 数据存储器RAM

无论在物理上还是逻辑上,系统中RAM 都可分为两个独立空间:内部和外部RAM。由不同的指令来访问。

  1. 访问内部数据存储单元时,使用 MOV 指令;
  2. 访问外部数据存储器时,使用 MOVX 指令。

内部RAM从功能上将256B空间分为二个不同的块:

  1. 低128B的RAM块;
  2. 高128B的SFR(Special Function Register )块。

在低128B的RAM存储单元中又可划分为:

  1. 工作寄存器区;
  2. 位寻址区;
  3. 通用存储数据的“便签区”。

高128B的专用寄存器区SFR中仅仅使用了21寄存器(51系列),其它107个单元不能使用。

2.2.1 AT89 片内、片外数据存储器示意图

在这里插入图片描述

2.2.2 片内RAM低128B 字节功能分配图

在这里插入图片描述

工作寄存区区结构图(0区)

在这里插入图片描述

片内RAM中具有双重功能的存储结构图

在这里插入图片描述

RAM的20H~2FH的存储特点(位寻址区)

  1. 20H~2FH本身是字节地址,因此这些单元可以按照常规存储16个字节的数据。如:

    MOV 20H,A ;将累加器A中的数据送RAM的 20H单元(字节传送操作)

  2. 将20H~2FH中的16*8既128个bit分别定义其位地址00H~7FH(如图),这样CPU可以按位来访问这些bit:

    MOV 20H,C ;将Cy中的布尔变量送20H位地 址中(位传送)

2.2.3 特殊功能寄存器SFR

特殊功能寄存器 SFR (Special Function Register) 离散分布在256B字节中的高128B中。

  1. 设定单片机内部各模块的工作方式,存放相关模块的状态与标志。如定时器、串行口,并行端口和中断设置等。
  2. 尽管特殊功能寄存器与RAM在同一个单元中,但不能作为普通的RAM存储单元来使用。
  3. 在编程中根据需要,进行一些特定功能的设定,或者是从中查寻相关部件的状态时,才能对其进行读、写操作。如中断方式的设定、定时器工作模式的设定,查询串行口发送或接收是否结束等等。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    具有位地址和位名称的SFR才可以位寻址。
    位地址有以下4种表示形式:
  • 直接使用位地址表示
    例如:0D7H —— PSW最高位的位地址
  • 使用位名称表示、
    例如:CY —— PSW最高位的位名称
  • 使用SFR字节地址.位形式表示
    例如:0D7H.7 —— PSW字节地址.最高位
  • 使用SFR名称. 位形式表示
    例如:PSW.7 —— PSW名称.最高位

位寻址:20H-2FH和能被8整除的SFR

2.3 外部数据存储器

当单片机需要外加RAM存储器时(扩展系统),必须使用专用的MOVX指令,此时单片机的端口功能就要发生相应的改变:
① P0、P2作为外部RAM的地址和数据总线;
② 使用MOVX指令进行读写操作。
③ MOVX指令在执行时,会自动地产生/RD或/WR信号对 外部RAM实现控制。

指令通过P0、P2输出DPTR中的16位地址信号。这里使用了16位的寄存器DPTR,其寻址范围为64KB。
此时: P0口做低8位地址总线和数据的“复用”总线;
P2口做高8位地址总线。

2.4 小结

MCS-51单片机的存储器的配置
片内4K的程序存储器ROM;
片内256B的数据存储器RAM;
片外可以扩展64K的ROM和RAM.

  1. 程序存储器
    当引脚EA=1时, CPU从片内ROM的0000H单元运行程序;
    若引脚EA=0时, CPU从片外ROM的0000H单元运行程序。
    当引脚EA=1,且PC值大于0FFFH时, CPU会自动从内部ROM转到片外ROM的1000H单元运行程序。

    无论是片内还是片外, ROM有六个单元是有特定意义的:

    1. 0000H单元:上电,复位后的启动地址;
    2. 0003H单元:外部中断INT0的入口地址;
    3. 000BH单元:定时器T0的中断入口地址;
    4. 0013H单元:外部中断INT1的入口地址;
    5. 001BH单元:定时器T1的中断入口地址;
    6. 0023H单元:串行口中断的入口地址。
  2. 内部数据存储器RAM
    低128B: 1,工作寄存器区;2,位寻址区;3,便笺区;
    高128B: 做特殊功能寄存器SFR用。
    注意:

    1. SFR不同于一般的数据RAM,它不是用于存储数据,而是用来控制和 表征单片机内部几个逻辑部件的特征,状态等重要信息。
    2. 在使用RAM时,要注意字节地址和位地址的概念.
    3. 访问内部RAM的指令为 MOV 指令。
  3. 外部数据存储器

    1. 在硬件具备的条件下,MCS-51单片机可以使用64KB的外部数据存储器.如果要访问外部数据存储器RAM时,只能使用间址的寻址方式.
    2. 间址寄存器有R0,R1或DPTR.前者寻址范围为256KB(00H-FFH);后者为64KB(0000H-FFFFH).使用的指令是 MOVX。

三、单片机的引脚功能

3.1 51单片机的外形和逻辑符号

在这里插入图片描述

3.2 51单片机的引脚定义

3.2.1 主电源引脚

主电源引脚:Vcc(+5V— 40脚)和 Vss (GND 20脚);
在这里插入图片描述

3.2.2 外接晶体引脚

外接晶体引脚:XTAL1(19脚)、XTAL2(18脚)
两脚之间接入一个晶体震荡器,单片机就以此晶体的频率开始工作(其频率范围为:0~24MHz)。
频率越高,单片机的工作速度就越快,但单片机的功耗就要增加,其产生的高次谐波也会对系统内部的模拟电路(如ADC)产生严重的干扰。
在这里插入图片描述

3.2.3 控制与电源复用引脚

RST / V pd(9脚)

RST / V pd(9脚):复位信号输入,高电平有效。

  • 复位操作可以确保CPU从程序的开始端运行程序;
  • 微处理器在“上电”时必须对其施行“复位”操作,以避免电源从0V至5V时电源的过度性造成系统“混乱”。而MCS-51单片机不具备“上电复位”功能。因此,必须通过外部对此引脚施加一个(大于两个时钟周期的)高电平使单片机复位。
    在这里插入图片描述
    在这里插入图片描述
    在复位状态下:
  1. 程序指针PC=0000H;
  2. 堆栈指针SP=07H;
  3. SFR的内容全变为“0”;
  4. P0~P3四个端口输出“全1”(FFH);
  5. RAM内容不变。

【思考题】PC=0000H 意味着什么?
意味着程序从头开始执行
Vpd 功能:当单片机掉电时,此引脚可以接入备用电源向单片机内部的RAM供电,防止RAM中的数据丢失。

ALE/PROG(30脚)

以系统时钟 fosc 的1/6的频率,周期性输出方波脉冲。

  1. 系统扩展时,作为外部存储器低八位地址的锁存信号;
  2. 可为系统提供一个频率为 fosc/6 的方波信号;
  3. EPROM型单片机编程时编程输入脉冲(第二功能)。
    在这里插入图片描述

/PSEN(29脚)

/PSEN(29脚):外部程序程序存储器的选通输出信号。

  • 当单片机使用外部程序存储器时,此脚在一个机器周期内产生两次负脉冲,作为外部程序存储器ROM的选通信号;
  • 访问外部数据存储器 RAM 时,此信号无效。
    在这里插入图片描述

/EA / Vdd (31脚)

/EA / Vdd (31脚):程序存储器的选择控制端
CPU 执行片内ROM还是外部ROM中的程序,由硬件设计者通过对EA引脚的设置来决定:
/EA=“1” 时:单片机使用内部的程序存储器ROM;
/EA=“0” 时:单片机使用外部的程序存储器ROM。
【注意】:如果EA=1既使用单片机内部的程序存储器时,如果程序计数器PC的值超过0FFFH时,单片机将自动转向外部程序存储器1000H开始的单元。
对于EPROM型的单片机,此脚还是用于写程序时,加入21伏的编程电压。
在这里插入图片描述

四、单片机的I/O口

4.1 P0

P0.0 - P0.7: P0端口线(39-32脚)
输出能力最强的端口,可带动8个TTL负载;

  • 具有两种工作方式:
    ①普通的I/O方式;
    ②系统扩展时的总线方式。
  • 当处于I/O方式时:端口内部输出电路呈“开路结构”,所以当驱动MOS负载时,应接一个10K左右的上拉电阻,否则无法输出高电平。
  • 当处于扩展方式时:P0口成为外部存储器提供低八位地址和数据的“复用总线” (此时不能作为通用的I/O端口)。
    在这里插入图片描述
    在这里插入图片描述

4.2 P1

P1.0 - P1.7: P1端口线(1 – 8脚):

  • 负载能力4个TTL负载。
  • MCS-51单片机中唯一“功能单一”的I/O端口。在系统设计中只能设计为“通用的I/O端口”;
    在这里插入图片描述

4.3 P2

P2.0 – P2.7: P2端口线(21 – 28脚):

  • 同P0端口类似:具有两种工作方式:
    ①普通的I/O方式;
    ②系统扩展时的总线方式(高八位地址总线)。
    在这里插入图片描述

4.4 P3

P3.0 – P3.7 P3端口线 (10 – 17脚):

  • P3口的引脚具有两种用途:
    ①做通用的I/O端口,负载能力为4个TTL ;
    ②引脚具有第二功能。
    在这里插入图片描述

4.4.1 小结

【注意】: 在系统设计中,P3端口原则上不作I/O端口,而是尽量保留其第二功能;

如:串行通信中所使用的发送TXD、接收RXD以及外部中断的两个输入信号INT0、INT1等。

   **这种方法利于系统设计中最大限度的调用MCS-51单片机的内部硬件资源,以简化外部电路的设计。**

4.5 片外总线结构

在这里插入图片描述

4.5.1 地址总线(AB)

地址总线的宽度是16位,因此可以寻址的范围是64 KB。采用分时复用技术,可以对外部64 KB的数据存储器或程序存储器直接寻址。它由P0口提供16位地址总线的低8位(A0~A7),由P2口提供地址总线的高8位(A8~A15)。

4.5.2 数据总线(DB)

数据总线的宽度是8位,它由P0口提供。

4.5.3 控制总线(CB)

控制总线由P3口的第二功能(RXD、TXD、INT0、INT1、T0、T1、RD、WR)和4根独立的控制线(RST、EA、ALE、PSEN)组成。

4.6 小结

  1. MCS-51单片机的四个端口其功能在芯片设计中各不相同,所以其内部结构和特点也不一样;
  2. P0~P3四个端口都可以作为普通的具有双向传输功能的I/O端口;
  3. 当系统硬件设计中如果采用外部存储器(ROM或RAM)扩展方式时,P0、P2端口变为系统总线。在此时P0、P2不能再做I/O端口。
  4. P3口在系统设计上,尽可能的保留其第二功能,以可充分利用单片机的内部系统资源。
  5. 对程序存储器ROM的使用选择取决于引脚EA的设定:EA=1使用片内4K的ROM;EA=0时使用外部ROM。
  6. 一个微处理器在上电时,必须进行“复位”操作,而MCS-51单片机不具备“上电复位”功能,所以必须外加一个上电复位电路,其复位时间大于2个机器周期即可;
  7. 单片机的工作频率 fosc 取决于外接晶体的振荡频率。如何选择晶体的振荡频率不单纯考虑系统的工作速度,还要考虑到系统的功耗、工作的稳定向和可靠性,而这些都与外接晶体的振荡频率有着直接的关系;

五、单片机内部看门狗定时器

看门狗定时器(WDT)简介

  WDT是为了解决CPU运行时可能进入混乱或死循环而设置的,AT89S51的WDT由一个14bit计数器和看门狗复位SFR(WDTRST)构成。**外部复位时,WDT默认为关闭状态,要打开WDT,用户必须顺序将01EH和0E1H写到WDTRST寄存器(SFR地址为0A6H)中。**当启动WDT后,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT。WDT溢出将使RST引脚输出**高电平的复位脉冲**,复位脉冲持续时间**98个时钟周期** 

六、单片机复位工作方式

6.1 介绍

复位:将单片机系统置成特定初始状态的操作,复位后程序从头(0000H单元)开始执行程序。
系统刚接通电源或重新启动时均进入复位状态。
当系统处于正常工作状态时,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以实现可靠复位,如图2-17所示,其中TCY为机器周期,等于12个时钟周期。各寄存器和程序计数器PC的状态见表2-11所示。
在这里插入图片描述

6.2 两种上电复位电路

6.2.1 上电复位电路

在这里插入图片描述
上电复位电路:当接通电源的瞬间,RST端与VCC同电位,随着电容上的电压逐渐上升,RST端的电压逐渐下降,于是在RST端便形成了一个正脉冲,只要该正脉冲的宽度持续两个机器周期的高电平,就可实现系统自动复位。

6.2.2 上电复位及按钮复位

在这里插入图片描述
上电复位和按钮复位:(也称为手动复位)的组合,当人工按下P按钮后就可实现系统复位。单片机复位后,各寄存器和程序计数器PC的状态见表2-11所示。

6.3 复位的初始状态

在这里插入图片描述

七、单片机低功耗方式

7.1 介绍

AT89系列单片机提供了两种省电工作方式:空闲方式和掉电方式。其目的是尽可能地降低系统的功耗。
在空闲工作方式中(IDL=1),振荡器继续工作,时钟脉冲输出到中断系统、串行口以及定时器模块,但却不提供给CPU。在掉电方式中(PD=1),振荡器停止工作。
两种工作方式都是由SFR中的电源控制寄存器PCON的控制位来定义的,PCON寄存器的控制格式如图2-19所示。
在这里插入图片描述
SMOD:串行口波特率倍率控制位。
GF0,GF1:通用标志位。
PD:掉电方式控制位。PD=1,进入掉电工作方式。
IDL:空闲方式控制位。IDL=1,进入空闲工作方式。
PCON寄存器的复位值为0XXX000,PCON.4~PCON.6为保留位,用户不要对它们进行写操作。

7.2 空闲工作方式

当CPU执行完置IDL=1( ORL PCON,#01H,PCON.0=1)的指令后,系统进入了空闲工作方式。
这时,内部时钟不提供给CPU,而只供给中断、串行口、定时器部分。CPU的内部状态维持不变,即包括堆栈指针SP、程序计数器PC、程序状态字PSW、累加器ACC等其他所有的内容保持不变,端口状态也保持不变。ALE保持逻辑高电平。

有两种方法可以使系统退出空闲工作方式:
1、**任何的中断请求都可以由硬件将PCON.0(IDL)清0而中止空闲工作方式。**当执行完中断服务程序返回时,从置空闲工作方式指令的下一条指令开始继续执行程序。
2、**硬件复位。**RST端的复位信号直接将PCON.0(IDL)清0,从而退出空闲状态,CPU则从进入空闲方式的下一条指令开始重新执行程序。

7.3 掉电工作方式

当CPU执行一条置PCON.1位(PD)为1的指令后,系统进入掉电工作方式。
在这种工作方式下,内部振荡器停止工作。由于没有振荡时钟,因此所有的功能部件都停止工作,但内部RAM区和特殊功能寄存器的内容被保留,而端口的输出状态值都保存在对应的SFR中,ALE和都为低电平。
**退出掉电方式的惟一方法是硬件复位。**复位后将所有的特殊功能寄存器的内容初始化,但不改变内部RAM区的数据。
而在准备退出掉电方式之前,**Vcc必须恢复到正常的工作电压值,并维持一段时间(约10 ms),**使振荡器重新启动并稳定后,方可退出掉电方式。

八、单片机的时序

8.1 介绍

单片机取出指令后要对指令进行译码产生各种操作信号,所谓时序,就是指各种操作信号的时间序列,它表明了指令执行中各种信号之间的相互关系。为达到同步协调工作的目的,各操作信号在时间上有严格的先后次序,这些次序就是CPU的时序。
CPU执行指令的一系列动作都是在时序电路控制下一拍一拍进行的,为了便于对CPU时序进行分析,人们按指令的执行过程规定了几种周期,即时钟周期、状态周期、机器周期和指令周期,也称为时序定时单位。

8.2 基本时序

8.2.1 时钟周期

也称为振荡周期,定义为时钟脉冲频率(fosc)的倒数,是计算机中最基本的、最小的时间单位。
在一个时钟周期内,中央处理器CPU仅完成一个最基本的动作。一个振荡周期也称为一个节拍,用P表示,通常称为P节拍,如图2.20所示。
在这里插入图片描述

8.2.2 状态周期

时钟周期经2分频后成为内部的时钟信号,用作单片机内部各功能部件按序协调工作的控制信号,称为状态周期,用S表示。
**一个状态周期包含两个时钟周期,前半状态周期相应的时钟周期定义为P1,后半周期对应的时钟周期定义为P2。**一般情况下,CPU中的算术逻辑运算在P1有效期间完成,在P2有效期间进行内部寄存器间的信息传送。

8.2.3 机器周期

机器周期:完成一个基本操作所需要的时间称为机器周期。
51单片机有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1~S6,而一个状态包含两个时钟周期,那么一个机器周期就有12个时钟周期,可以表示为S1P1, S1P2, …, S6P1, S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频。

8.2.4 指令周期

指令周期:指CPU执行一条指令所需要的时间,一般由若干个机器周期组成,指令不同,所需要的机器周期数也不同。51系统中,一个指令周期通常含1~4个机器周期。大多数指令是单字节单周期指令,还有一些指令是单字节双周期指令和双字节双周期指令,而乘法指令MUL和除法指令DIV都是单字节四周期指令(参见附录B)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_15710.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Verilog学习笔记

sky视频笔记:数字逻辑回顾&Hello World_哔哩哔哩_bilibili 一、数电基础 1.组合逻辑 电路逻辑输出值只和当前的输入有关比如:AND/OR/XOR/NAND/NOR/MUX/Adder/Multiplier 2.时序逻辑 电路逻辑输出值跟当前的输入和电路的当前状态有关保存当前状态的…

用Python生成Hilbert矩阵

代码放在了最后,前面是解题思路 目录 1.什么是Hilbert矩阵矩阵: 2.找规律 1.第一种思路:先从值出发(找规律) 2.第二种思路:先从下标索引出发(找规律) 三、代码展示 四、输出展…

WPF 界面打不开提示 System.ArithmeticException Overflow or underflow in the arithmetic operation 异常

本文告诉大家如何解决界面打不开,抛出 System.ArithmeticException: Overflow or underflow in the arithmetic operation 异常的修复方法本文告诉大家如何解决界面打不开,抛出 System.ArithmeticException: Overflow or underflow in the arithmetic operation 异常的修复方…

某IOT设备漏洞分析

申明:本文章所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本文及作者无关,请谨记守法. 设备名称: DLINK DIR-818l 固件包: d-link DIR818L_FW105b01 A1 环…

Rust学习笔记:简单练习

最近一个月比较闲,忙碌大半年终于有自己短暂的休息时间。如果不写大的程序,偶尔写写一些小东西,其实用起来也很自在,前提是如果没有太多生活压力。看电视变成奢侈的事情。有时候,我会羡慕老外享受福利待遇非常好&#…

javaweb|JSTL的下载、配置与原理,解决uri导入时报错的问题

今天在配置jstl时,发现在引入uri时出现了问题,地址直接报红。在尝试了几种方法后,最后成功解决了。 JSTL一、下载1、https://tomcat.apache.org/2、找到taglib标准库3、下载前2个jar包二、配置1、放入web-inf的lib文件夹里2、将Jar包放入tomc…

windows下 解决PHP-CGI 进程崩溃502

PHP是世界上最好的语言,但需要PHP解析器;Apachephp,需要通过mod_php.so和php相连;nginxphp 需要转发给 cgi程序 关于FastCGI: 全称 FastCGI Process Manager,是一种进程管理器,管理 cgi,市面上…

1474_AURIX TC275 WDT的运行模式

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 1. 前面的内容中其实已经看到了,这个看门狗的时钟其实是固定的,SPB的时钟。这样,后面了解时钟树的时候需要注意一下。其实,在功能安全的失效…

ES6--》一文搞懂JS中的Promise

目录 Promise Promise使用 Promise封装Ajax请求 Promise封装读取文件 Promise.prototype.then 方法 Promise多文件读取 Promise.prototype.catch() Promise.prototype.finally() Promise.all() Promise.race() Promise.allSettled() Pomise.any() Promise.resolve…

微信小程序开发入门与实战(Behaviors使用)

作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f4…

【原创】基于JavaWeb的社区疫情防控管理系统(疫情防控管理系统毕业设计)

项目介绍:后端采用JspServlet。前端使用的是Bootstrap的一个网站模板。开发一个在线的社区疫情防控管理系统。从角色的划分,包括用户、社管员、管理员。功能模块上包括了社区公告发布、高风险地区记录、地区感染信息管理、社区出入登记管理、行程信息管理…

关于maven生命周期的理解

晚上有点无聊,看到了一些东西引发了自己的思路,就想将maven的一些东西总结总结,有从网上抄的,也有自己的思路。 一、生命周期是指什么(lifecycle) Maven的生命周期就是对所有的构建过程进行抽象和统一。包…

Posix与System V IPC

Posix与System V IPC一、Posix IPC1.概述2.IPC名字3.px_ipc_name函数3.创建与打开IPC通道4.IPC权限二、System V IPC1.概述2.key_t键和ftok函数3.ipc_perm结构4.创建与打开IPC通道5.IPC权限6.标识符重用7.ipcs和ipcrm程序8.内核限制一、Posix IPC 1.概述 三种类型的IPC合称为…

Redux的基本使用过程详解

文章目录Redux的使用过程Redux测试项目的搭建Redux的基本使用步骤Redux目录的结构划分React的三大原则Redux的使用过程 Redux测试项目的搭建 1.创建一个新的项目文件夹:learn-redux # 执行初始化操作 npm init -y或yarn init -y # 安装redux:npm install redux --save或yarn …

自定义View 布局过程(Layout)

目录一、作用二、layout过程详解2.1单一View的layout过程具体使用具体流程源码分析总结2.2ViewGroup的layout过程具体使用具体流程源码分析总结三、细节问题:getWidth() ( getHeight())与 getMeasuredWidth() (getMeasuredHeight(…

Java高级——编译JDK

编译JDKJDK是什么?编译环境搭建JDK下载编译参数编译在IDE中调试源码JDK是什么? Java Development Kit,用于执行和开发java程序 编译环境搭建 本文采用Ubantu 18.04 执行以下命令安装依赖 apt-get install build-essential apt-get instal…

Transformer

参考 https://www.ylkz.life/deeplearning/p12158901/ https://zhuanlan.zhihu.com/p/396221959 模型结构 Input Embedding 将文本中词汇的数字表示转变为向量表示, 希望得到其在高维空间中的特征表示向量。 # 导入必备的工具包 import torch import torch.nn as nn import …

Qt5开发从入门到精通——第九篇一节( Qt5 文件及磁盘处理—— 读写文本文件)

CSDN话题挑战赛第2期 参赛话题:学习笔记 欢迎小伙伴的点评✨✨,相互学习c/c应用开发。🍳🍳🍳 博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精…

esp32-C3 CAN接口使用

esp32-C3 CAN接口使用功能概述CAN协议关注点接收过滤器单过滤器模式双过滤器模式关键函数说明配置和安装驱动获取TWAI状态信息发送/接收消息使用示例CAN控制器自回环测试CAN收发带过滤测试功能概述 ESP32-C3具有1个CAN控制器支持以下特性: 兼容ISO 11898-1协议(CA…

伟大的micropython smartconfig 配网它来了!!!

我这其实只是实验和搬运,还是感谢伟大的walkline群主,他弄好的,我只是负责搬运发布给新手看。 之前一大堆人问我配网的事儿,输入下wifi名称密码这么麻烦吗,好吧,有求必应,之前的配网是通过ap模式…