基于Proteus的单片机应用技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 单片机结构

1.2.1 单片机的基本结构

单片机的基本结构如图1.1所示。

图1.1 单片机的基本结构框图

下面介绍各组成部分的功能。

1.中央处理器

CPU又称微处理器,是单片机的核心部件,由运算器和控制器组成,它决定了单片机的主要功能特性,在单片机中承担运算和控制作用。

2.存储器

存储器用来存放程序和中断结果,单片机的存储器在物理上分片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器4个空间;在逻辑结构上分成片内外统一编址的程序存储器、片内数据存储器及片外数据存储器,如图1.2所示。

图1.2 单片机存储器结构

(1)程序存储器

程序存储器用来存放操作程序,共64KB空间,片内和片外统一编址。当EA=1时,先访问片内程序存储器,再访问片外存储器;当EA=0时,只访问片外程序存储器。系统复位时PC=0000H。值得注意的是,程序存储器从0003H~0030H共40个单元专供中断服务使用。

(2)数据存储器

数据存储器用来存放中间运算结果。数据存储器由片内和片外两个独立的存储空间组成,如图1.3所示。片内又分成高、低两个128字节,其中高128字节离散分布了具有特别功能的寄存器。

图1.3 单片机数据存储器

(3)特殊功能寄存器

① 累加器Acc:Acc是一个具有特殊用途的8位寄存器,它既可作为通用的寄存器使用,也可作为累加器使用。作为累加器使用时用A表示,作为寄存器使用时用Acc表示。

② 程序状态字(PSW):PSW是一个可位寻址的8位寄存器,如图1.4所示,用来存放当前指令执行后的状态。单片机有许多指令的执行会影响PSW的位状态。

③ 寄存器B:寄存器B是一个8位的通用寄存器,主要用于乘/除法。乘法运算时,B是乘数,乘法操作后,积的高8位存于B中;除法运算时,B是除数,除法操作后,余数存于B中。

图1.4 状态寄存器

④ 数据指针DPTR:数据指针是一个16位地址寄存器,由高位字节DPH和低位字节DPL组成,这两个字节也可单独使用。使用DPTR可以访问64KB外部数据存储器的任一单元。

⑤ 定时器控制寄存器TCON:定时器控制寄存器TCON用来启动定时/计数和设置外部中断触发方式,如图1.5所示。定时控制寄存器可位寻址。

图1.5 定时器控制寄存器

TR0,TR1:启停定时/计数器。当TRx=1时,启动定时/计数;当TRx=0时,停止定时/计数。

TF0,TF1:定时/计数器中断标志。当TFx=1时,表示定时/计数溢出,可用查询或中断来处理。

IE0,IE1:外中断标志。当IEx=1时,表示外部有中断发生(与ITx配合使用);当IEx=0时,表示外部无中断请求。

⑥ 方式控制寄存器TMOD:方式控制寄存器TMOD是专门用来设置定时/计数器的工作方式的SFR寄存器,如图1.6所示,CPU只能通过字节传送类指令来设置TMOD中各位的状态。

当GATE=0时,定时/计数器由定时控制寄存器中的TR0(或TR1)启动。当GATE=1时,定时/计数器由外部中断请求信号(或)与TRx共同启动。

当C/=0时,定时/计数器工作在定时工作方式;当C/=1时,定时/计数器工作在计数方式。

M1M0=00时,定时/计数器工作在方式0;M1M0=01时,定时/计数器工作在方式1;

图1.6 方式控制寄存器

M1M0=10时,定时/计数器工作在方式2;M1M0=11时,定时/计数器工作在方式3。

⑦ 堆栈指针(SP):堆栈指针是专门用来指示堆栈的起始位置的8位寄存器,系统复位时堆栈指针初始化地址为07H,用户开辟堆栈时必须指明SP的初始值(栈底)。堆栈的存储区域一般设置在RAM的30H~7FH之间。进栈用PUSHdirect指令,出栈用POPdirect指令。

⑧ 中断控制寄存器IE:中断允许寄存器是一个SFR,地址为A8H,可以位寻址。通过向IE写入中断控制字,实现CPU对中断的开放和屏蔽,如图1.7所示。

图1.7 中断控制寄存器

⑨ 中断优先级控制寄存器IP:中断优先级控制寄存器用来设置中断的级别,单片机中断系统有高级和低级两种,当IP的对应中断位为1时为高级中断,当IP的对应中断位为0时为低级中断。

PX0:外部中断0中断优先级控制位。

PT0:定时/计数器T0中断优先级控制位。

PX1:外部中断1中断优先级控制位。

PT1:定时/计数器T1中断优先级控制位。

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

⑩ 串行控制寄存器SCON:SCON是一个可位寻址的专用寄存器,地址为98H,用于串行数据通信的控制,位功能如下:

SM0,SM1:串行口工作方式选择位,工作方式的选择如表1.5所示。

表1.5 串行口工作方式

SM2:多机通信控制位。在方式2或方式3下,如果SM2=1,当RB8=1时(RB8为收到的第9位数据),接收数据送SBUF,并产生中断请求(RI=1),否则丢失8位数据。在方式2或方式3下,如果SM2=0,无论RB8=0或1,接收数据装入SBUF,并产生中断(RI=1)。在方式1下,如果SM2=1,则只有接收到有效的停止位时,才激活RI;如果SM2=0,接收一帧数据,停止位进入RB8,数据进入SBUF,才激活RI。在方式0下,SM2只能为0。

REN:允许接收位,由软件置位或清0。REN=1,允许接收;REN=0,禁止接收。

TB8:发送数据位。在方式2或方式3下,将要发送的第9位数据放在TB8中。可根据需要由软件置位或复位。在多机通信中,TB8=0表示主机发送的是数据,TB8=1表示主机发送的是地址。

RB8:接收数据位。方式0不使用这位。在方式1下,如果SM2=0,RB8的内容是接收到的停止位。在方式2或方式3下,存放接收到的第9位数据。

TI:发送中断标志位。在方式0下,发送完第8位数据时,TI=1;在其他方式下,开始发送停止位时,TI=1。在任何工作方式下,TI必须由软件清0。

RI:接收中断标志位。在方式0下,接收完第8位数据时,RI=1;在其他方式下,接收到停止位时,RI=1。在任何工作方式下,RI也必须由软件清0。

3.I/O端口

单片机的I/O端口是连接单片机内外的纽带和桥梁,51系列的单片机有P0,P1,P2,P3共4个端口,每个端口有8位,其结构如图1.8所示。

图1.8 单片机I/O端口基本结构

①P0端口

P0端口是一个8位漏极开路的双向I/O端口,当控制信号为低电平时,作为通用的I/O端口使用,当控制信号为高电平时,作为数据/地址总线。值得注意的是,由于P0口作为通用I/O口使用时,漏极处于开路状态,所以需接5~10kΩ的上拉电阻。

②P1端口

P1端口只能作为通用的I/O端口使用。

③P2端口

P2端口既可作为通用的I/O端口使用,也可作地址总线使用。P2端口作地址总线使用时,与P0口一起构成16位地址信号。值得注意的是,当P2口作地址总线使用时,就不能作通用的I/O端口使用。

④P3端口

P3端口除了作通用的I/O端口使用外,还具有第二功能,如表1.6所示。P3端口的第二功能是通过设置相应的寄存器实现的。

表1.6 P3端口的第二功能表

⑤ 端口负载能力

P0端口可带动8个LSTTL负载,P1~P3端口输出可带动4个LSTTL。P0~P3均为双向I/O端口,作输入时,先置“1”。单片机的端口负载能力是动态的,如AT89C2051单片机,共有15个输入/输出端口,端口的负载能力为80mA。从使用经验来看,单个端口输入/输出控制在5mA以下是比较安全的,并且尽量采用灌电流、端口输入以低电平有效的电路结构。通用I/O端口读/写控制:

⑥ 总线端口读/写控制

具有总线结构的单片机应用系统如图1.9所示。

读外部单元:MOVX A,@DPTR

写外部单元:MOVX @DPTR,A

图1.9 总线结构的单片机应用系统框架

1.2.2 单片机的功能单元

1.单片机定时/计数器

(1)定时/计数器结构

定时/计数器是单片机的重要功能部件,51单片机内带有两个16位定时/计数器(T0和T1),它们既可作定时器用,也可作计数器用。在检测、控制及智能仪器等应用中,常用定时器作实时时钟来实现定时检测和定时控制,计数器用于外部脉冲计数。图1.10是定时/计数器内部结构。

图1.10 定时/计数器T0、T1的结构

TMOD:方式控制寄存器,用于设置定时/计数器的工作方式。

TCON:定时器控制寄存器,用于启动定时/计数器。

(2)定时/计数器工作原理

单片机内部定时/计数器的工作原理可用图1.11来说明。当C/=0时,为定时器功能,此时,C与A相连(计数脉冲为机器周期);当C/=1时,为计数功能,此时,C与B相连(计数脉冲从P3.4或P3.5口输入)。Tx、GATE、TRx、共同决定计数器的开关,单片机的计数器是一个16位的加计数器,每来一个脉冲,计数器的值加1,当加到FFFFH时,TFx置1,如果开放中断,则向CPU申请中断。

图1.11 定时/计数器内部结构

(3)定时/计数器工作方式

定时/计数器有4种工作方式,由特殊功能寄存器TMOD中的M1、M0位决定,如表1.7所示。

表1.7 定时/计数器工作方式

(4)定时/计数器初始化

定时/计数器设置由工作方式控制寄存器(TMOD)、定时控制寄存器(TCON)及中断允许寄存器(IE)共同完成。定时/计数器初始化应完成的过程是:

① 依据题目要求确定TMOD的值;

② 给TH1、TL1或TH0、TL0赋初值;

③ 根据题目要求确定是否开放中断;

④ 启动定时/计数器。

2.单片机中断系统

(1)单片机中断

程序在运行过程中,由于某种原因,CPU暂停当前的处理转去执行紧急事件,待紧急事件执行完毕后再转回执行原程序,这就是单片机中断。引起中断的原因叫中断源,中断之后执行的处理称为中断服务,对应的处理程序称为中断服务程序,原程序称为主程序。单片机中断功能的实现是通过设置IE、TCON、SCON、IP等特殊寄存器完成的。

(2)单片机中断系统结构

单片机具有6源5向量,中断系统结构如图1.12所示。

图1.12 单片机中断系统结构

、T0、T1、TI、RI为中断源,TCON、IE、IP是与中断相关的特殊功能寄存器。

(3)单片机中断控制

中断设置:单片机的中断设置由TCON、SCON、IE、IP4个特殊功能寄存器确定。若开启外部中断0,采用脉冲触发方式的中断设置为:

            SETB  IT0
            MOV  IE,#81H

中断处理过程:单片机在每一指令的S5P2期间,CPU采样各中断源,并设置相应的中断标志位。CPU在下一个周期的S6状态期间按优先级顺序查询各中断标志,若查询到某个中断标志为1,将在下一个机器周期的S1状态期间按优先级响应中断。中断处理过程分成3个阶段,即中断响应、中断处理和中断返回。

中断入口地址:单片机响应中断后,将按表1.8规定的地址转入相应的中断入口,因此在系统初始化时要明确相应入口应完成的工作。

表1.8 AT89C51单片机中断入口地址

(4)中断系统扩展

利用定时器扩展外部中断:定时/计数器作计数器用,工作在方式2,计数器初值为#0FFH。这样,当外部来一个脉冲时,计数器产生溢出,用计数器的溢出信号作为中断请求标志。例如,将定时器T1作为外部中断源的程序如下:

        MOV   TMOD,#60H
        MOV   TL1,#0FFH
        MOV   TH1,#0FFH
        SETB  TR1
        SETB  EA
        SETB  ET1
        ……

利用中断和查询相结合扩展外部中断:如图1.13所示,外部有多个中断信号,只用一个外部中断源,采用中断和查询相结合的方法解决外部多中断请求的问题。

图1.13 单片机中断系统结构

3.单片机串行接口

(1)串行口结构

51单片机内部有一个功能很强大的全双工串行口,可同时接收和发送数据。串行口由发送/接收缓冲器、发送控制器、接收控制器、输出控制门、输入移位寄存器等组成。串行口的结构与工作方式有关,图1.14为方式0的串行口结构,图1.15为方式1、2、3的串行口结构。

单片机发送数据时,由累加器A将数据送入发送缓冲寄存器SBUF,每发送完一帧数据,TI置1。单片机接收数据时,每接收完一帧数据,RI置1。值得注意的是,TI和RI只能用软件复位。接收、发送数据均可工作在查询方式或中断方式。

(2)串行口工作方式

串行口有4种工作方式,如表1.5所示。方式0以固定的波特率通过外接移位寄存器(如74HC164、74HC165等)实现I/O口的扩展。方式1、方式2、方式3均为异步通信,方式1用于双机通信,方式2、方式3主要用于多机通信,也可用于双机通信。

图1.14 串行口方式0结构示意图

图1.15 串行口方式1、2、3结构示意图

(3)串行口波特率设置

波特率反映串行口通信速度的快慢,单片机工作在不同的工作方式,其波特率的设置如下。

① 工作在方式0的波特率:是固定的,为fosc/12。

② 工作在方式2的波特率:波特率=(2SMOD*fosc)/64(其中SMOD为PCON.7)。

③ 工作在方式1和方式3的波特率:设置定时器T1工作在方式2,定时器T1的初值决定串行口的波特率,即

例如,单片机工作在串行方式1,串口波特率为2400bps的设置:

            MOV  SCOM,#40H  ;设置串行口工作在方式 1
            MOV  TMOD,#20H  ;设置T1作定时器工作在方式 2
            MOV  TH1,#0F4H  ;波特率为 2400bps的定时器初值
            MOV  TL1,#0F4H
            SETB  TR1      ;启动定时器

(4)双机通信

在硬件上,只要将两块单片机的串行口交叉相连,地线连在一起,即可实现双机通信。在程序设计上,单片机工作在方式1(或方式2、3),设置相同波特率,并处于允许接收状态。例如,工作在方式1,以1200bps实现双机通信的初始化程序:

            MOV  SCON,#30H   ;串行口工作在方式 1,允许接收
            MOV  TMOD,#20    ;设置T1定时工作在方式 2
            MOV  TH1,#0E8H   ;波特率为 1200bps的定时器初值
            MOV  TL1,#0E8H
            SETB  TR1       ;启动定时器

(5)多机通信

单片机在方式2或方式3下可实现多机通信。图1.16所示是广泛应用的主从式多机通信结构图。主机可以跟任一台从机通信,从机只能同主机通信。

图1.16 主从式多机通信结构

在主从式多机系统中,①先对串行口进行如下设置:主、从机的SM2=1,串行口工作在方式2(或方式3),主、从机的波特率相同,主机的TB8=1,所有从机的REN=1。②主机发出一帧(其中包括8位需要与之通信的从机地址,第9位为1(TB8=1))地址信息。③所有从机接收到信息后,与本机地址相比较,相同地址的从机,使SM2=0,以便接收主机发来的数据;对地址不相符合的从机,仍保持SM2=1的状态。④主机向从机发送数据时,TB8=0,此时只有SM2=0的从机才能接收。