单片机复习

单片机复习

一、 单片机相关基本概念

1、单片机概念

书本:将微处理器、存储器和输入输出接口电路集成在一块集成电路芯片上,构成具有一定功能的计算机系统,因此称为单片机微型计算机,简称单片机。

PPT:一片半导体硅片集成:CPU、存储器、并行I/O、串行I/O、定时器/计数器、中断系统、系统时钟电路及系统总线的微型计算机。 具有微型计算机的属性,因而被称为单片微型计算机,简称单片机。

意义:单片机是计算机技术发展史上的一个重要里程碑,标志着计算机正式形成了通用计算机系统嵌入式计算机系统两大分支。单片机是集成电路技术与微型计算机技术高速发展的产物。体积小、价格低、应用方便、稳定可靠,因此,给工业自动化等领域带来了一场重大革命和技术进步。

2、单片机别称

单片机使用时,通常是处于测控系统的核心地位并嵌入其中,所以国际上通常把单片机称为嵌入式控制器,或微控制器。我国习惯于使用“单片机”这一名称。

3、相关概念

(1)微型计算机
在通用计算机中,计算机的硬件系统都是由中央处理器CPU(运算器和控制器)、存储器输入设备输出设备等单元组成,这些单元被分成若干块独立的芯片,通过电路连接而构成一台完整的计算机。微型计算机可以分为两大分支:一类是个人计算机,另一类是嵌入式微处理器

(2)单板机

书本:单板机是将微处理器芯片、存储器芯片和输入输出接口芯片安装在同一块印刷电路板上,构成具有一定功能的计算机系统,因此称为单板微型计算机,简称单板机。

PPT:如果将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)。

(3)单片机

书本:单片机是将微处理器、存储器和输入输出接口电路集成在一块集成电路芯片上,构成具有一定功能的计算机系统,因此称为单片微型计算机,简称单片机。

PPT:如果在一片集成电路芯片上集成中央处理器、存储器、I/O接口电路,即一块芯片就构成了一个完整的计算机系统,称为单片微型计算机,因此就简称为单片机。

4、单片机分类

按照其用途可分为通用型专用型两大类。
(1)通用型单片机:其内部可开发的资源(如存储器、I/O等各种外围功能部件等)可全部提供给用户
(2)专用型单片机:专门针对某些产品的特定用途而制作的单片机。但基本结构和工作原理都是以通用单片机为基础

5、型号说明

AT89Cxxxx xxxx

其中,AT是前缀,表示该器件是ATMEL公司的产品。

89C××××是型号,8表示单片,9表示内部含有Flash存储器,C表示CMOS产品,LV表示低电压产品,S表示含有串行下载的Flash存储器。后4位的“××××”表示器件的型号,如51、52、2051、8052

后缀的四个参数:第1个“×”表示速度;第2个“×”表示封装(P为DIP,D为陶瓷);第3个“×”表示芯片的温度范围(C、I、A、M);第4个“×”用于说明产品的工艺。

补充:FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。FLASH 只能一大片一大片的擦,而EEPROM 可以按“位”擦写

8、硬件结构

  • CPU:包括运算器和控制器

    • 运算器:对操作数进行算数、逻辑和位操作计算。主要包括:

      1. 算数逻辑运算单元ALU:进行逻辑运算和算数运算

      2. 累加器A:使用最频繁,是数据的中转站

      3. 程序状态寄存器PSW:Program Status Word包含了程序运行状态的信息。

        • Cy:进位标志位Cy=1进位,否则Cy=0,不进位

        • Ac:辅助进位标志位,当D3位向D4位产生进位或借位时,Ac=1;否则,Ac=0。

        • F0:由用户使用的一个状态标志位

        • RS1、RS0:4组工作寄存器选择

          每区有8个寄存器,R0—R7,寄存器名字相同,但是,当前工作的寄存器区只能打开一个。

        • 0V:溢出标志位。如果结果产生溢出,OV=1;否则,OV=0。

        • PSW:保留位
          决定R0-R7打开哪一个寄存器

        • P:奇偶校验位:P=1,表示A中“1”的个数为奇数。P=0,表示A中“1”的个数为偶数。

    • 控制器:控制指令的读入、译码和执行。主要包括:

      1. 程序计数器PC:CPU读指令时,PC的内容作为所取指令的地址,程序存储器按此地址输出指令字节,同时PC自动加1。顺序执行程序时自动加1;执行转移程序或子程序、中断子程序调用时,自动将其内容更改成所要转移的目的地址。
      2. 指令寄存器
      3. 指令译码器
      4. 定时及控制逻辑电路
  • 片内振荡器和时钟电路

  • 存储器:特点之一是将程序存储器和数据存储器分开,属于哈佛结构

    • ROM(程序存储器)💛用于存放程序、表格和常数

      1. 片内:为4KB的flash存储器
      2. 片外:最多可拓展64kb程序存储器
      3. 用MOVC指令实现只读功能操作,用PSEN信号选通读外ROM
      4. 读外ROM:P0的低八位地址信号和P2输出的高八位地址信号同时加到外ROM16位地址输入端,当PESN信号有效时,外ROM将相应的数据送至数据总线P0。
    • RAM(数据存储器)💛存放程序运行数据和结果

      1. 片内:128B(52子系列为256B)

      2. 片外:可拓展64KB

      3. 外RAM用MOVX实现读写功能操作,用RD信号选通读外RAM,用WD信号选通写外RAM;内RAM用MOV指令实现读写

      4. 读外RAM:P0的低八位地址信号和P2输出的高八位地址信号同时加到外RAM16位地址输入端,当RD信号有效是,允许读。外RAM将相应的数据送至数据总线P0。

      5. 写外RAM:P0的低八位地址信号和P2输出的高八位地址信号同时加到外RAM16位地址输入端,当WD信号有效时,允许写。外RAM将相应的数据送至数据总线P0。

        读写过程相同,只是控制信号不同。

        只有在内RAM不能满足应用要求时,才外接。

  • 中断

  • 定时器/计数器

  • 看门狗:当CPU由于干扰使程序陷入死循环或跑飞时,WDT可使程序恢复正常运行。

  • 串行口

  • IO口:P1、P2、P3、P4

  • 特殊功能寄存器:分为控制寄存器和状态寄存器,映射在片内

9、时钟和时序

统一指挥

内部时钟:输入端为芯片引脚XTAL1,输出端为引脚XTAL2

外部时钟:直接接到XTAL1端,XTAL2端悬空

关于时序的基本概念和名称(1机周=6状态周期=12时钟周期)

  1. 时钟周期:最基本的最小的定时信号。

  2. 状态周期:状态周期是时钟周期两倍

  3. 机器周期:基本定时单位,简称机周。一个机周含6个状态周期。机周是时钟周期的12倍。当时钟周期为12Mhz时,机周为1us。当时钟周期为6Mhz时,机周为2us。

  4. 指令周期:一条指令占用的时间

    • 从指令执行时间看:

      单字节和双字节指令一般为单机器周期和双机器周期;

      三字节指令都是双机器周期;

      乘、除指令占用4个机器周期。

10、复位和低功耗工作方式

1、复位

复位条件:复位脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平。

复位方式:上电复位;按键手动复位

  • 复位期间,不会有任何取指操作
  • 复位后程序从0000H开始运行
  • 复位后,已使P0-P3每一端线为1,为输入做好了准备
  • 复位后寄存器均为0
2、低功耗工作
待机休闲方式:CPU不进行读写操作、但中断功能继续存在
掉电保护方式:片内振荡器停振,仅保存片内RAM和SFR数据信息,但不会真正掉电

PCON寄存器来设定低功耗工作:

SMOD - - - GF1 GF0 PD IDL
  • SMOD:波特率倍增位
  • GF1、GF0:通用标志位
  • PD:(Power down)掉电方式控制位,PD=1,进入掉电工作方式;硬件复位可退出掉电保护状态。
  • IDL:待机休闲方式控制位,IDL=1,进入待机休闲工作方式。任意中断响应可使IDL清零,从而退出待机休闲状态。或者硬件复位

二、26个特殊功能寄存器用处(书本 和 PPT不一样)

特殊功能寄存器:Special Flag Register(SFR)

凡是可位寻址的SFR,字节地址末位只能是0H或8H(能被8整除),可位寻址的特殊寄存器每一位都有位地址,有的还有位定义。有的特殊寄存器有位定义,没有位地址,也不可位寻址操作。不可位寻址位操作的特殊功能寄存器只有字节地址,无位地址。

  1. 累加器ACC

    • 最常用的寄存器
    • 取操作数、存放运算结果、进行乘除法指令
  2. 寄存器B

    • 乘除法指令
    • 普通寄存器
  3. 程序状态字寄存器PSW

    • Cy:进位标志位Cy=1进位,否则Cy=0,不进位

    • Ac:辅助进位标志位,当D3位向D4位产生进位或借位时,Ac=1;否则,Ac=0。

    • F0:由用户使用的一个状态标志位

    • RS1、RS0:4组工作寄存器选择

      每区有8个寄存器,R0—R7,寄存器名字相同,但是,当前工作的寄存器区只能打开一个。

    • 0V:溢出标志位。如果结果产生溢出,OV=1;否则,OV=0。

    • PSW:保留位
      决定R0-R7打开哪一个寄存器

    • P:奇偶校验位:P=1,表示A中“1”的个数为奇数。P=0,表示A中“1”的个数为偶数。

  4. 数据指针DPTR

    • 由两个8位寄存器DPH、DPL组成,既可合并作为一个16寄存器,又可以分开单独操作。
    • 主要用于存放一个16位地址,作为访问外部存储器(外RAM、外ROM)的地址指针。
  5. 堆栈指针SP

    • 堆栈主要是为子程序调用和中断操作而设。保护断点和现场
      • (1)保护断点:无论是子程序调用操作还是中断服务子程序调用,最终都要返回主程序。应预先把主程序的断点在堆栈中保护起来,为程序正确返回做准备。(自动)
      • (2)现场保护:执行子程序或中断服务子程序时,要用到一些寄存器单元,会破坏原有内容。要把有关寄存器单元的内容保存起来,送入堆栈,这就是所谓的“现场保护”。(自动)
      • 存取按照先进后出的原则,分自动方式和指令方式
      • 数据压入(PUSH)堆栈,SP自动加1;数据弹出(POP)堆栈,SP自动减1。
  6. 中断优先级控制寄存器IP

  7. I/O端口3 P3

  8. 中断允许控制寄存器IE

  9. I/O端口2 P2

  10. 串行数据缓冲器SBUF

  11. 串行控制寄存器SCON

  12. I/O端口1 P1

  13. 定时/计数器1(高字节)TH1

  14. 定时/计数器0(高字节)TH0

  15. 定时/计数器1(低字节)TL1

  16. 定时/计数器0(低字节)TL0

  17. 定时/计数器方式选择TMOD

  18. 定时/计数器控制寄存器TCON

  19. 电源控制几波特率选择PCON

  20. I/O端口0 P0

三、40个引脚的名字和作用

双列直插DIP封装,共40个引脚。

书本上的80C51:P15-P17引脚没有复用。将40个引脚可分为四类:电源、时钟、控制和IO引脚。

1、电源

  • VCC:+5V
  • Vss:接地

2、时钟

  • XTAL1:片内振荡器反相放大器和时钟发生器电路输入端。用片内振荡器时,该脚接外部石英晶体和微调电容。外接时钟源时,该脚接外部时钟振荡器的信号。
  • XTAL2:片内振荡器反相放大器的输出端。当使用片内振荡器,该脚连接外部石英晶体和微调电容。当使用外部时钟源时,本脚悬空。

3、控制

  • EA/Vpp:内外ROM选择/片内EPROM编程资源

    EA=1时:先访问内ROM(4KB),计数值超过4KB时访问外ROM。

    EA=0时:只访问外ROM,80c31无内ROM,所以EA必须接地

    Vpp:对片内Flash编程,接编程电压。

  • ALE/PROG:地址锁存允许/片内EPROM

    ALE:P0口用于分时传送低八位地址和数据信号。当ALE信号有效时,P0口传送的是低8位地址信号;ALE无效时,传送的是数据信号。

    PROG:片内有EPROM的芯片,在编程期间,在该引脚输入编程脉冲。

  • PSEN:外ROM选通信号

    80c51读外ROM时,每个机器周期内PSEN有两次有效信号。PSEN可作为外ROM芯片输出允许OE的选通信号。在读内ROM或外RAM时,PSEN无效。读外ROM:P0的低八位地址信号和P2输出的高八位地址信号同时加到外ROM16位地址输入端,当PESN信号有效时,外ROM将相应的数据送至数据总线P0。

  • RST/Vpd:复位/备用电源。

    RAT:正常情况时:RST为复位信号输入端,在引脚上加上持续时间大于2个机器周期高电平,可使单片机复位。正常情况下,RST电平应<=0.5V;

    Vpd:在Vcc掉电情况下,该引脚可接备用电源。

4、I/O口

在第四部分具体介绍。

四、IO口的使用

  • P0:通用IO口;地址/数据总线
    1. 通用IO口:输入、输出、读-修改-写
    2. 地址/数据总线:输出地址数据、输入数据
    3. 在并行拓展外存储器时,P0只能用作地址/数据总线
  • P1:提供用户使用
    • 只用作通用IO口
  • P2:通用IO口;高8位地址信号
  • P3:有第二功能
    • P3.0:RXD:串行数据输入口
    • P3.1:TXD:串行数据输出口
    • P3.2:INT0:外部中断0输入
    • P3.3:INT1:外部中断1输入
    • P3.4:T0:定时器0外部计数输入
    • P3.5:T1:定时器1外部计数输入
    • P3.6:WR:外部数据存储器写选通输出
    • P3.7:RD:外部数据存储器读选通输出

总结:P0-P3都能用作IO口。用作输入时,均需写入1;用作输出时,P0口应外接上拉电阻。在并行扩展外存储器或IO口情况下,PO口用于低8位地址总线和数据总下,P2口用于高八位地址总线,P3口常用于第二功能。

用户能使用的只有P1口和未用作第二功能的P3口。

五、数码管

1、基本概念

数码管显示器有共阳极和共阴极两种:

共阴极LED数码管的发光二极管的阴极连接在一起,通常此公共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。

共阳极数码管的发光二极管的阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应段被显示。


LED数码管共计8段。因此提供给LED数码管的段码(或字型码)正好是一个字节。在使用中,习惯上是以“a”段对应段码字节的最低位。共阴字码段和共阳字码段互为反码。

2、静态显示

静态显示指无论多少位LED数码管,都同时处于显示状态。

静态显示无闪烁,亮度较高,软件控制比较容易。

3、动态显示

动态显示就是通过段码线向显示器(所有的)输出所要显示字符的段码。每一时刻,只有一位位选线有效,其他各位都无效。逐位地每隔一定时间轮流点亮各位显示器(扫描方式),由于LED数码管的余辉和人眼的“视觉暂留”

发光二极管从导通到发光有一定的延时,如果导通时间太短,发光太弱,人眼无法看清;时间太长,要受限于临界闪烁频率,而且此时间越长,占用单片机时间也越多。
另外,显示位数增多,也将占用单片机大量时间,因此动态显示的实质是以牺牲单片机时间来换取I/O端口减少。

与静态显示比,动态显示优点节省I/O口,显示器越多,优势越明显。
缺点显示亮度不如静态显示的高,要调整好“扫描”速率,如果“扫描”速率较低,会出现闪烁现象。

六、按键

1、按键的识别

键的闭合与否,反映在行线输出电压上就是呈现高电平或低电平,通过对行线电平的高低状态的检测,便可确认按键是否按下以及是否释放。

2、消抖

去抖动的方法有两种,一种是用软件延时来消除按键抖动,基本思想是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平。

另一种去除按键抖动的方法是采用专用的键盘/显示器接口芯片,这类芯片中都有自动去抖动的硬件电路。

3、独立按键

一键一线,键相互独立,每个按键各接一条I/O口线,通过检测I/O输入线的电平状态,可很容易判断哪个按键被按下。

优点:电路简单,各条检测线独立,识别按键号的软件编写简单。独立式键盘适用于按键数目较少的场合。

4、矩阵式按键

矩阵式(也称行列式)键盘用于按键数目较多场合,由行线和列线组成,一组为行线,另一组为列线,按键位于行、列的交叉点上。

5、扫描方式

  1. 查询扫描

    查询方式(也称编程扫描方式)是利用单片机空闲时,调用键盘扫描子程序,反复扫描键盘,来响应键盘的输入请求。

  2. 定时扫描

    每隔一定的时间对键盘扫描一次。在这种方式中,通常利用单片机内的定时器产生的定时中断,进入中断子程序来对键盘进行扫描,在有键按下时识别出该键,并执行相应键的处理程序。由于每次按键的时间一般不会小于100ms,所以为不漏判有效按键,定时中断的周期一般应小于100ms。

  3. 中断扫描

    只有在按键按下时,才会向单片机的发出中断请求信号,单片机响应中断,执行键盘扫描程序中断服务子程序,识别出按下的按键,并跳向该按键的处理程序。如果无键按下,单片机将不理睬键盘。此方式优点是,只有按键按下时,才进行处理,所以其实时性强,工作效率高。

七、中断的使用和配置

中断定义:

CPU暂时中止正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序,叫做中断。

单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序,完成一个中断过程。

意义:

  • 提高CPU工作效率
  • 具有实时处理功能
  • 具有故障处理功能
  • 实现分时操作

中断系统结构:

中断源:

  1. INT0:外部中断0,中断请求信号由P3.2输入
  2. INT1:外部中断1,中断请求信号由P3.3输入
  3. T0:定时/计数器0溢出中断,对外部脉冲计数由P3.4输入
  4. T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5输入
  5. 串行中断(串行接收中断RI和串行发送中断TI)

寄存器:

1、中断请求控制器

INT0、INT1、T0、T1中断用TCON、串行中断用SCON

  1. TCON

    • TF1:定时器1溢出中断请求标志

      当启动T1计数后,定时器/计数器T1从初值开始加1计数,当最高位产生溢出时,由硬件自动使TF1置“1”,向CPU申请中断。CPU响应TF1中断时,TF1标志由硬件自动清“0”,TF1也可由软件清“0”。

    • TF0:定时器0溢出中断请求标志

    • IE1:外部中断请求1的中断请求标志位。

    • IT1::IT1=0,外部中断1为电平触发方式;

      ​ IT1=1,外部中断1为跳沿触发方式。硬件自动清零

    • IE0:外部中断请求0的中断请求标志位.

    • IT0:IT0=0,外部中断0为电平触发方式;

      ​ IT0=1,外部中断0为跳沿触发方式。硬件自动清零

  2. SCON

    • TI:串行口发送中断请求标志位。

    • RI:串行口接收中断请求标志位。

      TI、RI不能自动清零、必须由用户指令清零

2、中断允许寄存器IE

  • EA:中断总允许开关控制位

    EA=0,所有中断被屏蔽。
    EA=1,所有中断被开放。

  • ES:串行口中断允许位

    ES=0,禁止串行口中断。
    ES=1,允许串行口中断。

  • ET1:定时器/计数器T1的溢出中断允许位

    ET1=0,禁止T1溢出中断。
    ET1=1,允许T1溢出中断。

  • EX1:外部中断1中断允许位
    EX1=0,禁止外部中断1中断。
    EX1=1,允许外部中断1中断 。

  • ET0:定时器/计数器T0的溢出中断允许位

    ET0=0,禁止T0溢出中断。
    ET0=1,允许T0溢出中断。

  • EX0:外部中断0中断允许位

    EX0=0,禁止外部中断0中断。
    EX0=1,允许外部中断0中断。

3、中断优先级寄存器IP

中断请求源有两个中断优先级,高优先级和低优先级。相应位置1,定义为高优先级;相应位清零,定义为低优先级。

关于各中断源的中断优先级关系,可归纳为下面两条基本规则:
(1)低优先级可被高优先级中断,高优先级不能低优先级中断。
(2)任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断源所中断。

  • PS:串行口中断优先级控制位

    PS=1,串行口中断为高优先级
    PS=0,串行口中断为低优先级

  • PT1:定时器T1中断优先级控制位

    PT1=1,定时器T1中断为高优先级
    PT1=0,定时器T1中断为低优先级

  • PX1:外部中断1中断优先级控制位
    PX1=1,外部中断1中断为高优先级
    PX1=0,外部中断1中断为低优先级

  • PT0:定时器T0中断优先级控制位
    PT0=1,定时器T0中断为高优先级
    PT0=0,定时器T0中断为低优先级

  • PX0:外部中断0中断优先级控制位
    PX0=1,外部中断0中断为高优先级
    PX0=0,外部中断0中断为低优先级

同一优先级,哪一个中断请求能优先得到响应,取决于内部的查询顺序。这相当于在同一个优先级内,还同时存在另一个辅助优先级结构

4、中断处理过程

中断请求->中断响应->中断服务->中断返回

  1. 中断请求

    发出中断请求信号,CPU将相应的中断请求标志置1(TCON),中断信号保持到CPU响应中断后才能取消。

  2. 中断响应

    条件:(1)EA=1

    ​ (2)该中断源对应的中断请求标志为“1”。(TCON/SCON)

    ​ (3)该中断源的中断允许位=1,即该中断被允许。(IE)

    ​ (4)无同级或更高级中断正在被服务。(IP)

    ​ (5)当前处于所执行指令的最后一个机器周期(因为是在最后一个机器周期去查询中断标志是否置位)

    ​ (6)正在执行的执行指令不是RETI或者访问IR\IP的指令

    过程:(1)保护断点地址:保存在堆栈中

    ​ (2)撤除该中断源的中断请求标志:有的中断请求标志(如串行口中断),必须由用户在软件程序中对改标志复位

    ​ (3)关闭同级中断

    ​ (4)使PCON清零,退出待机(休闲)状态

    ​ (5)将相应中断的入口地址送入PC

  3. 执行中断服务程序

    (1)保护现场

    (2)执行中断服务程序主体

    (3)恢复现场

  4. 中断返回

    (1)恢复断点地址

    (2)开放同级中断,以便允许同级中断源请求中断

  5. 中断响应等待时间

    一般情况是3个机器周期、最长是8个机器周期

  6. 中断请求的撤出

    定时器/计数器T0、T1:自动清除

    边沿触发的外中断INT0、INT1:自动清除

    电平触发的外中断INT0、INT1:片内硬件会自动清除相应中断请求,但相应引脚的低电平信号若继续保持下去,中断请求标志就无法清零。

    串行口中断要手动软件清零。

  7. 中断服务函数

    函数类型 函数名(形式参数表) interrupt n using n

    (1)中断函数没有返回值。
    (2)中断函数不能进行参数传递。
    (3)在任何情况下都不能直接调用中断函数,否则会产生编译错误。(中断函数的返回是由汇编语言指令RETI完成的)
    (4)如果在中断函数中再调用其他函数,则被调用的函数所使用的寄存器区必须与中断函数使用的寄存器区不同。

八、定时器原理和设置

T0由特殊功能寄存器TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成。

T0 和T1都具有定时器和计数器两种工作模式,4种工作方式(方式0~3)。属于增计数器。

TMOD用于选择T0、T1的工作模式和工作方式。特殊功能寄存器TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。

寄存器:

1、TMOD

高4位控制T1,低4位控制T0。

  • GATE—门控位

    GATE=0时,仅由运行控制位TRx(x = 0,1)来控制定时器运行。

    GATE=1时,用外中断引脚INT0(或INT1 )上的电平与运行控制位TRx共同控制定时器运行。

  • M1、M0—工作方式选择位。

    在4种工作方式中,方式0与方式1基本相同,只是计数器的计数位数不同。方式0为13位计数器,方式1为16位计数器。由于方式0是为兼容MCS-48而设,且其计数初值计算复杂,所以在实际应用中,一般不用方式0,而采用方式1。

    定时时间长,用方式1

    定时时间短,要自动恢复初值,选择方式2

    串行通信波特率:T1方式2

    方式2省去用户软件中重装初值的指令的执行时间,简化定时初值的计算方法,可相当精确地确定定时时间。但计数范围小。

  • C/T* —计数器模式和定时器模式选择位。

    C/T*=0,为定时器工作模式

    C/T*=1,为计数器工作模式

2、TCON

  • (1)TF1、TF0—计数溢出标志位
    当计数器计数溢出时,该位置“1”。查询有效后,应使用软件及时将该位清“0”。进入中断服务程序后由硬件自动清“0”。

  • (2)TR1、TR0—计数运行控制位

    TR1位(或TR0位)=1,启动定时器工作的必要条件。
    TR1位(或TR0位)=0,停止定时器工作。

应用

  1. 计算定时/计数初值

    T = 2^N-(定时时间/机周时间)

    • 方式0:N=11
    • 方式1:N=16
    • 方式2、方式3:N=8
    • f=12MHz,1机周=1us
    • f=6MHz,1机周=2us

九、串口

1、分类

AT89S51的串行口为全双工的通用异步收发(Universal Asynchronous Receiver and Transmitter) 的串行口。

并行通信:是数据的各位同时发送或同时接收,速度快,但价格较贵不方便

串行通信:是数据的各位一次逐位发送或接收,传送速度慢,但是比较经济。

  • 异步通信:依靠起始位、停止位保持通信同步

    包含起始位、数据位、校验位、停止位(1+8+1+1)

  • 同步通信:依靠同步字符保持通信同步

    多字节数据之间不允许有间隙,收发双方严格同步,对硬件要求较高

2、波特率

定义:每秒传输数据的位数,1波特=1位/秒

波特率的倒数即为每位传输所需的时间。故互相通信的甲乙双方必须具有相同的波特率,否则无法成功完成串行数据通信。

方式0:fosc/12

方式1:

方式2:

方式3:

定时器T1产生的常用波特率:

3、串行通信的制式

(1)单工制式:只能单向传输数据

(2)半双工制式:既可发送,又可接收,但是不能同时发送和接收

(3)全双工制式:同时发送和接收数据

4、寄存器

  1. SBUF

    两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),可同时发送、接收数据。两个缓冲器共用一个特殊功能寄存器字节地址(99H)。

    1. SM0、SM1—串行口4种工作方式选择位

    2. SM2—多机通信控制位

      多机通信仅在方式2和方式3下进行。当串口以方式2或方式3接收时。方式1时,如果SM2 = 1,则只有收到有效的停止位时才会激活RI。方式0时,SM2必须为0。

      如果SM2 = 1:则只有当接收到的第9位数据(RB8)为“1”时,才使RI置“1”,产生中断请求,并将接收到的前8位数据送入SBUF。当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。

      如果SM2 = 0:则不论第9位数据是“1”还是“0”,都将前8位数据送入SBUF中,并使RI置“1”,产生中断请求。

    3. REN—允许串行接收位

      由软件置“1”或清“0”。
      REN=1,允许串行口接收数据。
      REN=0,禁止串行口接收数据。

    4. TB8—发送的第9位数据

      方式2和方式3,TB8是要发送的第9位数据,由软件置“1”或清“0”。

      双机串行通信时,一般作为奇偶校验位;

      在多机通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。

    5. RB8—接收的第9位数据

      在方式0,不使用RB8

      在方式1,如SM2 = 0,RB8是接收到的停止位。

      方式2和方式3,RB8存放接收到的第9位数据。

    6. TI—发送中断标志位

      方式0,串行发送的第8位数据结束时TI由硬件置“1”,在其他方式中,串行口发送停止位的开始时置TI 为“1”。

      TI =1,表示一帧数据发送结束。

      TI必须由软件清“0”。

    7. RI—接收中断标志位

      方式0时,接收完第8位数据时,RI由硬件置“1”。在其他工作方式中,串行接收到停止位时,该位置“1”。

      RI=1,表示一帧数据接收完毕。

      RI必须由软件清“0”。

  2. PCON

    PCON中,仅最高位SMOD与串口有关。其它各位的功能和低功耗工作有关。比如:

    • PD:(Power down)掉电方式控制位,PD=1,进入掉电工作方式;硬件复位可退出掉电保护状态。
    • IDL:待机休闲方式控制位,IDL=1,进入待机休闲工作方式。任意中断响应可使IDL清零,从而退出待机休闲状态。或者硬件复位

    SMOD:波特率选择位。或者 波特率倍增位

    SMOD=1时,串行口波特率加倍,系统复位时,SMOD=0.

    PCON寄存器不能进行位寻址,必须按字节整体读写。

5、串行口的4种工作方式

4种工作方式由SCON中SM0、SM1位定义:

  1. 方式0:

    1. 8位数据为一帧,无起始位和停止位,先发送或接收最低位。波特率为fosc/12。

      由P3的第二功能进行输入和输出

      • P3.0:RXD:串行数据输入口
      • P3.1:TXD:串行数据输出口

      工作原理:

      • 输出:当执行一条将数据写入发送缓冲器SBUF指令时,产生一个正脉冲,串行口开始把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据,中断标志位TI置“1”。
      • 输入:方式0接收,REN为允许接收控制位,REN=0,禁止接收;REN = 1,允许接收。
        当向SCON寄存器写入控制字(设置为方式0,并使REN位置“1”,同时RI = 0)时,产生一个正脉冲,串行口开始接收数据。
        引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器以fosc/12的固定波特率采样RXD引脚的数据信息,当接收完8位数据时,中断标志RI置“1”,表示一帧数据接收完毕,可进行下一帧数据的接收。
  2. 方式1:

    1. 方式1为双机串行通信方式

    一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。

    • 输出:

      方式1的数据发送是由一条写串行数据缓冲寄存器SBUF指令开始的。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下,由TXD端串行输出。一个字符帧发送完后,使TXD输出线维持在1状态下,并将串行控制寄存器SCON中的TI置1,表示一帧数据发送完毕。

    • 输入:

      接收数据时,SCON中的REN位应处于允许接收状(REN=1)。在此前提下,串行口采样 RXD 端,当采样到从1向0的跳变状态时,就认定为已接收到起始位。随后在移位脉冲的控制下,把接收到的数据位移入接收寄存器中。直到停止位到来之后把停止位送入RB8中,并置位中断标志位RI,表示可以从SBUF取走接收到的一个字符。

  3. 方式2

      1. 方式2和方式3,9位异步通信接口。每帧数据为11位,1位起始位0,8位数据位(先低位),1位可程控为1或0的第9位数据和1位停止位。

        • 输出:

          发送前,先根据协议由软件设置TB8(如奇偶校验位或多机通信的地址/数据标志位),然后将要发送的数据写入SBUF,即启动发送。TB8自动装入第9位数据位,逐一发送。发送完毕,使TI位置“1”。

        • 输入:

          SM0、SM1=10,且REN=1时,方式2接收。
          数据由RXD端输入。当位检测逻辑采样到RXD的负跳变(起始位),便开始接收一帧信息。在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF(接收缓冲器)。
          (1)RI=0,意味着接收缓冲器为空。
          (2)SM2=0或接收到的第9位数据位RB8=1。
          当满足上述两个条件时,收到的数据送SBUF(接收缓冲器),第9位数据送入RB8,且RI置“1”。
          若不满足这两个条件,接收的信息将被丢弃。

  4. 方式3

    1. 同方式2
  5. 四种工作方式比较:

    工作方式 帧格式 波特率
    方式0 8位数据位 fosc/12
    方式1 1位起始位+8位数据位+1位停止位 (2^SMOD*T1溢出率)/32
    方式2 1位起始位+9位数据位+1位停止位 (2^SMOD*fosc)/64
    方式3 1位起始位+9位数据位+1位停止位 (2^SMOD*T1溢出率)/32
posted @ 2024-01-23 13:04  Flying3080  Views(83)  Comments(0Edit  收藏  举报