单片机:寄存器,I/O口,位寻址,复位信号

AT89S52寄存器

分为工作寄存器特殊功能寄存器系统寄存器

作用:暂存数据、配合累加器A进行数据运算及存放结果。

注:任意时刻只能使用一组寄存器

单片机的并行端口及复位

了解并行I/O口端口内部结构

4个I/O口介绍

  • AT89S52有4组I/O口(P0,P1,P2,P3),每组包括8根并行线

  • P0:8位开漏双向I/O口,使用片外部存储器,可作为低8位地址与数据复用总线,能驱动8个TTL(TTL:Time To Live的缩写,生存时间值,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量)

  • P1:8位准双向I/O口,能驱动4个TTL

  • P2:8位准双向I/O,使用片外存储器时,可作为高8位地址与数据复用总线,能驱动4个TTL

  • P3:8位准双向I/O口,能驱动4个TTL

并行I/O口特点

  1. 这四个均是8位并行I/O口
  2. 每个端口都是8位准双向口,共占32根引脚
  3. 每条I/O线都能独立地用作输入或输出
  4. 每个端口都包括一个锁存器(即特殊功能寄存器SFR P0-P3),一个输出驱动器输入缓存器作输出时数据可以锁存,作输入时数据可以缓冲

P0口

  • P0口某位的结构由一个输出锁存器、两个三态输入锁存器和输出驱动电路及控制电路组成。

  • 当(控制端)C=0(即输入低电平)时,开关MUX(自动转向开关)接D锁存器,P0口为通用I/O口(就是一般的输入输出口

  • 当C=1时(即输入高电平),开关拨向反相器3的输出端,P0口分时作为地址/数据总线使用。

  • 1和2是输入缓冲器,1是读锁存器,2是读引脚,同时还包含了P0口的输出驱动电路和控制电路。

  • 4是与门

P0口作通用I/O口时

  • P0口作通用I/O口时,C=0分两种情况,做输入口和输出口

    • 做输入口

      • 自动转向开关接D锁存器的Q非端,在此时读引脚时,需要事先将输出锁存器写入1,(场效应管)T1和T2均截止,引脚处于悬浮状态,可作高阻抗输入,否则有可能被拉低,读入错误信息。

        • T2为截止原因:MUX接D锁存器,导通,T2端是低电平,从而T2截止。
        • T1为截止原因:P0引脚做通用I/O口,控制信号端和地址数据的复用端口,而此时控制端是0,4是与门,根据与门特性,有一端输入为0则与门输出为0,即T1为0,截止
        • T1、T2均截止时,P0端处于悬浮状态,则外部数据从2读取数据送到内部CPU
        • 开始时内部总线写入1原因:若刚开始接入0,即D=0,那么根据D锁存器原理可得到Q非是1,根据先前分析,T2会导通,T2导通那么外部数据从这里进来,输出会全为低电平,因为T2端接地,得到数据会不准确,所以提前将输出锁存器写入1,才能保证T1,T2都是低电平,输出有效数据。

        作输入口提前写入1,两边都截止,读入信息

    • 做输出口

      • 当P0口做输出口时,因输出级处于开漏状态,必须外接上拉电阻,当“写锁存器”信号加在锁存器的时钟端CLK上,此时D触发器将“内部总线”上的信号反相后输出到Q非端,若D端信号为0,Q非为1,v2导通,P0,x引脚输出“0”;若D端信号为1,Q非为0,v2截止,虽然v1截止,因P0,x引脚已外接上拉电阻,P0,x引脚输出“1”

        • 刚开始写入1,则V1V2均为0,此时又因为接了电源VCC,通过外接上拉电阻,把引脚处拉成了高电平输出,故P0口仍然有高电平输出
        • 刚开始写入0,V2导通,数据进入被接地拉为低电平,即有低电平输出。

        做输入口,刚开始写1输出1,写0输出0

  • 读引脚和读锁存器的区别

    • 读引脚:即T1T2均截止,输入数据从输入缓冲器2读进内部CPU,读的是引脚带的信息
    • 读锁存器:读的是D锁存器输出的状态,读的是Q,如上图,Q非是0那么Q为1,此时输入缓冲器中就会输入进1,即读入。

P0口作为地址/数据复用口

当P0口作为地址/数据复用口时,控制端为1

  • 输出地址/数据=0时

    此时开关MUX接反相器3,因为输出地址数据为0,经过反相器所以下面是1,即V2导通,而4与门的两个端口一个为0一个为1,根据与门性质输出为0即V1截止。两个场效应管下方导通上方截止,下方导通接地,那么输出为0

  • 输出地址/数据=1时

    同理,此时V2截止,V1导通,V1导通接高电平VCC,引脚输出被拉为高电平即输出为1

输出地址/数据信号与引脚信号一起变,均同

  • 作数据输入:与P0用作通用I/O口时输入情况相同,也要先写入1,此时控制端信号C=0,V1V2均截止,从引脚上输入的外部数据经缓冲器U2进入内部数据总线。

  • CPU自动将0ffH写入锁存器

P1口

  • P1口仅有一个场效应管
  • P1口一般只作为通用I/O口,不会作为地址/数据分时复用口。作为通用I/O时与P0口C=0作用时完全一样的。

P2口

  • P2口同样可作地址数据的复用端口,与P0类似,但不同的是P0输出低8位地址,P2口输出高8位地址

P3口

CPU的时序及单片机的工作过程

时钟电路与时序

  • 单片机的时序就是指CPU在执行指令时各个控制信号间的时间顺序关系
  1. CPU通过地址总线发出地址信号到程序存储器
  2. CPU通过控制总线发出正确的地址锁存控制信号
  3. CPU通过控制总线发出正确的读控制信号
  4. CPU通过数据总线读取数据
  5. 在CPU内部控制信号作用下完成程序执行。

不允许调换上述顺序,任何一个信号的时间顺序出错,都可能导致程序运行出错。

单片机内部的电路需在唯一的时钟信号控制下严格按照时序工作

  • 计算机的工作原理就是在时钟节拍的作用下,将预先编好的程序一步一步的执行下去,其中时钟信号就来源于晶体振荡器(简称晶振)

晶体振荡器

  • 材料:石英晶体(理由:石英晶体具有压电效应,石英晶体的选频特性非常好,它有一个极其稳定的串联谐振频率fs,只有频率为fs的信号最容易通过,而其他频率的信号均会被晶体衰减。石英晶体的谐振频率fs与晶片的切割方式,几何形状,尺寸等有关,因此可以制成各种频率的石英晶体谐振器。)

单片机的引脚(晶振端)

  • 接18(XTAL1)、19脚(XTAL2),分别为晶体振荡电路反向输入端和输出端。接法:
  • 两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。
  • 电容器C1和C2通常取30pF左右,可稳定频率并对振荡频率有微调作用
  • 振荡脉冲频率范围为fosc=0~24MHz。

单片机的时钟周期

为便于分析指令的执行,定义了一些能度量各种时序信号出现时的尺度,分别为时钟周期、机器周期、指令周期

  • 时钟周期:即振荡周期,大小为1/(11.0592Hz)=90.4ns,一个时钟周期定义为一个节拍,2个节拍定义为1个状态周期。
  • 机器周期=12个时钟周期,对于11.0592MHz晶振,机器周期=12×90.4ns=1.085us
  • 指令周期:执行一条指令所需的时间,单字节执行指令时间短一些(单周期),双字节执行指令时间长一些(双机器周期),三字节执行指令时间也会长一些(双机器周期),若是乘除、转移之类的指令需要多个机器周期(四机器周期)
  • 4个时序单位从小到大依次是节拍,状态周期,机器周期和指令周期

AT89S52的复位电路及复位功能

复位操作的主要功能

  • 使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。
  • 把PC初始化为000H,使单片机从000H单元开始执行程序。

下面使各特殊功能寄存器的复位值

PC:程序指针

ACC:累加器

PCW:程序状态器

SP:堆栈指针

DPTR:数据指针

P0-P3:I/O口,必须是FFH才是复位因为作为通用I/O口,必须提前写入一个1才能保证输入数据准确,而8位1就是11111111转化为16进制就是FFH。

复位信号

RST引脚是复位信号输入端,当RST引脚为高电平,且有效时间持续24个振荡周期(两个机器周期)以上,才能复位。

复位电路

  • 上电自动复位:通过外部复位电路的电容充电实现。

首先VCC给电容充电,电容充电的同时给RST一个高电平信号,这样持续两个机器周期以上就可以复位了。

  • 按键手动复位

当RESET按键按下,即R1R2路导通,VCC分压,给RST一个高电平信号即可以复位了。

单片机低功耗的工作方式

两种节电工作方式:空闲(待机)方式掉电(停机)方式,如图为空闲和掉电方式控制电路。

  • 空闲方式和掉电方式是通过对SFR中的PCON(地址87H)相应位置1而启动的。下图即为电源控制寄存器(PCON)的各位分布情况。HMOS期间的PCON只包括一个SMOD位(最高位),其他四位是CHMOS器件独有的,三个保留位用户不得使用。
  • PCON内部结构

    • SMOD:波特率倍频位,若此位为1,则串行口方式1,方式2和方式3的波特率加倍。
    • GF1和GF0:通用标志位
    • PD:掉电方式位,此位写1则启用掉电方式
    • IDL:空闲方式位,此位写1则启用空闲方式,这是CPU因无时钟控制而停止运作。如果同时向PD和IDL两位写1,则PD优先
  • 空闲(等待、待机)工作方式

    • CPU执行完置IDL=1(PCON.1)的指令后,系统进入空闲工作方式。
    • 有两种退出空闲方式的方法:
      • 任何的中断请求被响应都可以由硬件将PCON.0(IDL)清0而终止空闲工作方式
      • 硬件复位
  • 掉电(停机)工作方式

    • 当CPU执行一条置PCON.1位(PD)=1的指令后,系统进入掉电工作方式。
    • 推出掉电方式的唯一方法就是硬件复位,复位后将所有特殊功能寄存器的内容初始化,但不改变片内RAM区的数据
    • 在掉电工作方式下,VCC可以降到2V,但在进入掉电方式之前,VCC不能降低,而在准备退出掉电方式之前,VCC必须恢复正常的工作电压值,并维持一段时间(约10ms),使振荡器重新启动并稳定后方可退出掉电方式。

    RAM位寻址区位地址表

    高于7F的就是字节寻址,比如位地址是88H,那么他的字节地址也是88H,位地址是28H,则他的字节地址就是25H。

    片内字节地址为2AH,那么对应最低位位地址就是50H,而片内字节地址为A8H,那么对应最低位的位地址还是A8H,变为字节寻址。超出7F.