详解单片机中的串行口
(此处已添加圈子卡片,请到今日头条客户端查看)单片机内部有一个功能强大的全双工串行口,该串行口有四种工作方式,以供不同场合使用。波特率可由软件设置,由片内的定时器/计数器产生。串行口接收、发送均可工作在查询方式或中断方式,使用十分灵活。
单片机的串行口除了用于数据通信之外,还可以用来驱动单片机应用系统中的键盘和显示器,这是其他微机系统所不能比拟的。
串行口的结构与控制
为了进行串行数据通信,单片机同样也需要相应的串行接口电路。不过这个接口电路不是单独的芯片,而是集成在单片机芯片的内部,成为单片机芯片的一个组成部分。
80C51单片机内部的串行口,由发送缓冲寄存器 SBUF、接收缓冲寄存器 SBUF、发送控制寄存器、接收控制寄存器、输入移位寄存器和输出控制门组成。控制单片机串行口的控制寄存器共有两个:特殊功能寄存器 SCON 和 PCON,可以用软件改变两者的内容来控制串行口的工作方式和波特率。
缓冲寄存器SBUF80C51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器SBUF,这两个在物理上是独立的接收发送器,既可以接收数据,也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,两个缓冲器共用同一个地址(99H)。
这个通信口既可用于网络通信,也可实现串行异步通信,还可以当成同步移位寄存器使用。如果在通信口的输入输出引脚上加上电平转换器,还可方便地构成标准的RS-232和RS-485接口。
在逻辑上,SBUF只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个地址(99H)。在物理上,SBUF有两个,一个是发送寄存器,另一个是接收寄存器。
串行口控制寄存器SCON
该寄存器的字节地址为98H,有位寻址功能。
SCON格式如下:
SM0(SCON.7)、SM1(SCON.6):控制串行口的工作方式。
SM2(SCON.5):允许方式2和方式3进行多机通信控制位。在方式2或方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不激活RI。在方式1时,如SM2=1,则只有收到有效停止位时才会激活RI。若没有接收到有效停止位,则RI清0。在方式0中,SM2必须置为0。
REN(SCON.4):允许串行接收控制位。REN=1允许串行接收,REN=0则禁止串行接收。该标志由软件来置1或清0。
TB8(SCON.3):是工作在方式2和方式3时,该位是要发送的第9位数据。在一些通信协议中该第9位用于奇偶校验(补奇或补偶);而在MCS-51多处理机通信中,这一位是区别地址帧还是数据帧的标志,需要时由软件置位或复位。
RB8(SCON.2):是工作在方式2和方式3时,该位是已接收到的第9位数据,它是奇偶校验位。在MCS-51多处理机通信中是区别地址帧/数据帧的标志。在模式1中,若SM2=0,RB8存放的是已接收数据的停止位。在模式0中,RB8未用,需要时由软件来置1或清0。
TI(SCON.1):发送中断标志位。在模式0中,发送完第8位数据时由硬件置位;在其他模式中发送停止位开始时刻由硬件置位。置位时TI=1,申请中断,CPU响应中断后,由软件来清除TI再发送下一帧数据。
RI(SCON.0):接收中断标志位。在模式0中,接收完第8位数据时由硬件自动置位;在模式 1 中,SM2=1,只有接收到有效的停止位,才能对 RI 置位。在其他模式中,在接收停止位的半中间由硬件对RI置位。置位时申请中断,CPU响应中断后取走数据,清除RI标志,必须由软件清零。
SCON的所有位复位时被清零。
特殊功能寄存器PCON
其字节地址为87H,没有位寻址功能。PCON的格式如下:
其中与串行接口有关的只有D7位。
SMOD:波特率选择位。
串行口的工作方式
串行口有四种工作方式,它们是由串行口控制寄存器 SCON 的 SM0、SM1的状态来定义的,编码及功能如表2-3所示。在这四种工作方式中,串行通信只使用方式1、2、3。方式0主要用于扩展并行输入/输出口。
表2-3 串行口工作方式
表中:fosc为晶振频率,UART为通用异步接收和发生器。
方式0
在方式 0 状态下,串行口为同步移位寄存器输入/输出方式,其波特率是固定不变的,数据由RxD(P3.0)端输入,同步移位脉冲由TxD(P3.1)端输出。方式0主要用于扩展并行输入输出口(如串行LED数码管显示系统等)。
(1)方式0发送
当一个数据写入串行口发送缓冲器SBUF时,串行口即将8位数据以fosc/12的波特率从RxD引脚输出(从低位到高位),发送完8位数据时,将发送中断标志TI置1。TxD引脚输出同步脉冲,波形如图2-22所示。
(2)方式0接收
在满足REN=1和RI=0的条件下,就会启动一次接收过程,此时RxD为串行输入端,TxD为同步脉冲输出端。串行接收的波特率为fosc/12,其时序如图2-23所示。当接收完一帧数据(8位)后,控制信号复位,中断标志 RI 被置 1,呈中断申请状态。当再次接收时,必须通过软件将RI清零。
▲图2-22 串行口“方式0”发送时序
▲图2-23 串行口“方式0”接收时序
在方式0中,SCON中的TB8、RB8位没用,多机通信控制位SM2位必须为0。在方式0下发送或接收完8位数据时,由硬件置1并发送中断标志TI或RI,向CPU申请中断,CPU响应TI或RI中断后,标志TI或RI必须由用户程序清0。
方式1
串行口以方式1工作时,SCON中的SM0、SM1两位分别为0、1,则串行口被控制为波特率可变的8位异步通信接口。发送的每帧信息为10位:1位起始位,8位数据位(先低位后高位)和1位停止位。
(1)方式1发送
串行口以方式1发送时,数据由TxD端输出,CPU执行一条数据写入发送数据缓冲器SBUF的指令,数据字节写入SBUF后,就启动串行口发送器发送。发送完一帧信息的数据位后,发送中断标志置1,其时序如图2-24所示。
▲图2-24 串行口“方式1”发送时序
(2)方式1接收
当REN=1时,允许接收器接收,数据从RxD端输入。接收器以所选波特率的16倍速率采样RxD端的电平,当检测到RxD端从1到0的跳变时,启动接收器接收,并复位内部的16分频计数器,以便实现同步。
在起始位,如果接收到的值不为0,则起始位无效,复位接收电路,当再次接收到一个由1到0的跳变时,重新启动接收器。如果接收值为0,则起始位有效,接收器开始接收本帧的其余信息(一帧信息为10位)。在方式1接收中,若同时满足以下两个条件:RI=0、SM2=0和接收到的停止位=1时,则接收数据有效,实现装载SBUF、停止位进入PB8、接收中断标志RI置1。接收控制器再次采样RxD的负跳变,以便接收下一帧数据。
若这两个条件不能同时满足,信息将丢失。中断标志RI必须由用户的软件清零,通常情况下,串行口以方式1工作时,SM2置为0。方式1的接收时序如图2-25所示。
▲图2-25 串行口“方式1”接收时序
方式2
当SM0、SMl两位分别为1、0时,串行口工作在方式2,此时串行口被定义为9位异步通信接口。发送时可编程位(TB8)根据需要设置为0或1,接收时,可编程位被送入SCON中的RB8。
(1)方式2发送
在方式2发送时,数据由TxD端输出,发送一帧信息由11位组成:1位起始位、8位数据位(低位在先、高位在后)、1位可编程位(第9位数据位)和1位停止位,附加的第9位数据为 SCON中的 TB8。TB8由软件置 1 或清 0,可作为多机通信中的数据标志位,也可作为数据的奇偶校验位。
CPU在执行一条写SBUF的指令后,便立即启动发送器发送,送完一帧信息后,TI被置1,其时序如图2-26所示。在发送下一帧信息之前,TI必须由中断服务程序(或查询程序)清0。
▲图2-26 串行口“方式2”发送时序
(2)方式2接收
当 SM0、SMl两位分别为1、0,且 REN=1 时,允许串行口以方式 2 接收数据。数据由 RxD端输入,接收11位信息:1位起始位、8位数据位、1位可编程位(第9位数据)和1位停止位。当接收器采样到RxD端从1到0的跳变,并判断起始位有效后,便开始接收一帧信息。当接收器接收到第9位数据后,如果RI=0且SM2=0或接收到的第9位数据为1时,接收到的数据送入SBUF,第9位数据送入RB8,并置RI=1,其时序如图2-27所示。若不能同时满足这两个条件,接收的信息将丢失。
▲图2-27 串行口“方式2”接收时序
方式3
当SM0、SM1两位为11时,串行口工作在方式3,方式3为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2的发送时序和接收时序相同。
波特率的计算与串行口初始化
波特率的计算
在串行通信中,收发双方的波特率必须保持一致。通过软件可设定串行口的4种工作方式,并确定每种方式的波特率。
(1)方式0的波特率是固定的,为单片机晶振频率fosc的1/12,即BR=fosc/12。
如fosc=6MHz,则波特率500kbit/s;如fosc=12MHz,则波特率为1Mbit/s。
(2)方式 2 的波特率也是固定的,且有两种。一种是晶振频率的 1/32,另一种是晶振频率的1/64,即fosc/32和fosc/64。如用公式表示为:
式中,SMOD为特殊功能寄存器PCON串行口波特率系数的控制位,SMOD=1表示波特率加倍。注意,PCON不能使用位寻址,只能对其进行字节操作。
如12M晶振系统中,若SMOD=0,则波特率=187.5kbit/s;SMOD=1,则波特率375kbit/s。
(3)方式1和方式3的波特率是可变的,其波特率由定时器1的计数溢出(对80C52来说,也可使用定时器2的计数溢出)决定,公式为:
式中定时器1溢出率计算公式为:
各种方式波特率的计算如表2-4所示。
表2-4 波特率的计算公式
表中,若SMOD=0,则K=1;若SMOD=1,则K=2。
通常使用单片机的串行口时,选用的晶振频率 fosc比较固定(一般为 6MHz , 12MHz 或11.0592MHz)。单片机和微机通信时,选用的波特率也相对固定。
实际使用中,经常根据已知波特率和时钟频率来计算定时器T1的初值。为方便使用,将常用的波特率和初值X间的关系列成表2-5。
表2-5 常用通信方式及其波特率
其中有以下三点需要注意。
(1)表2-5中仅为一些特定系统串口通信时的典型数据,对于其他一些未列出的波特率,应通过前述公式进行计算获取。并可进行相关参数调整,以获得需求的波特率。
(2)在使用的时钟振荡频率为12MHz或6MHz时,表中初值X和相应的波特率之间有一定误差。例如,FDH的对应的理论值是10416波特(时钟振荡频率为6MHz时),与9600波特相差816波特,消除误差可以通过调整时钟振荡频率 fosc来实现。例如,如果采用的时钟振荡频率为11.0592MHz,在要求串行通信的系统中,为保证串行通信准确,一般使用11.0592Hz的晶振。
(3)如果串行通信选用很低的波特率,可将定时器T1设置为方式1定时。但T1溢出时,需要在中断服务程序中重新装入初值。中断响应时间和执行指令时间也会使波特率产生一定的误差,可用改变初值的方法进行适当调整。
串行通信的校验
异步通信时可能会出现帧格式错、超时错等传输错误。在具有串行口的单片机的开发中,应考虑在通信过程中对数据差错进行校验,因为差错校验是保证准确无误通信的关键。常用差错校验方法有奇偶校验(80C51系列单片机编程采用此法)、和校验及循环冗余码校验等。
(1)奇偶校验
在发送数据时,数据位尾随的一位数据为奇偶校验位(1或0)。当设置为奇校验时,数据中1的个数与校验位1的个数之和应为奇数;当设置为偶校验时,数据中1的个数与校验位中1的个数之和应为偶数。接收时,接收方应具有与发送方一致的差错检验设置,当接收一个字符时,对 1的个数进行校验,若二者不一致,则说明数据传送出现了差错。
奇偶校验是按字符校验,数据传输速度将受到影响。这种特点使得它一般只用于异步串行通信中。
(2)和校验
所谓和校验,是指发送方将所发送的数据块求和(字节数求和),并产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据时也是先对数据块求和,将所得结果与发送方的校验和进行比较,相符则无差错,否则即出现了差错。这种和校验的缺点是无法检验出字节位序的错误。
(3)循环冗余码校验
这种校验是对一个数据块校验一次。例如对磁盘信息的访问、ROM或RAM存储区的完整性等的检验。这种方法广泛应用于串行通信方式。
串行口初始化
在使用单片机串行口之前,应对其进行编程初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制,具体步骤如下。
(1)确定定时器l的工作方式——编程TMOD寄存器。
(2)计算定时器l的初值——装载THl、TLl。
(3)启动定时器1——编程TCON中的TRl位。
(4)确定串行口的控制——编程SCON。
(此处已添加圈子卡片,请到今日头条客户端查看)单片机常用名词解释与常用逻辑电路
MCS-51系列单片机
MCS-51系列单片机分为两大系列,即51子系列与52子系列。
51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951
52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952
这两大系列单片机的主要硬件特性如下表:
从上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。51系列的中断源为5个,52系列的中断源为6个。
8051与80C51的区别:
80C51单片机是在8051的基础上发展起来的,也就是说在单片机的发展过程中是先有8051,然后才有80C51的。
8051单片机与80C51单片机从外形看是完全一样的,其指令系统、引脚信号、总线等完全一致(完全兼容),也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用。这两种单片机是完全可移植的。
既然这两种单片机外形及内部结构都一样,那它们之间的主要差别在哪里呢?
8051与80C51单片机的主要差别就在于芯片的制造工艺上。80C51的制造工艺是在8051基础上进行了改进。
8051系列单片机采用的是HMOS工艺:高速度、高密度;
80C51系列单片机采用的是CHMOS工艺:高速度、高密度、低功耗;
也就是说80C51单片机是一种低功耗单片机。
单片机常用名词解释
总线: 指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。
地址总线(AB): 地址总线是单向的,用于传送地址信息。地址总线的宽度为16位,因此基外部存储器直接寻址64K,16位地址总线由P0口经地址锁存器提供低8位地址(A0~A7),P2口直接提供高8位地址(A8~A15)。
数据总线(DB): 一般为双向,用于CPU与存储器,CPU与外设、或外设与外设之间传送数据信息(包括实际意义的数据和指令码)。数据总线宽度为8位,由P0口提供。
控制总线(CB): 是计算机系统中所有控制信号的总称,在控制总线中传送的是控制信息。由P3口的第二功能状态和4根独立的控制总线,RESET、EA、ALE、PSEN组成。
存储器: 用来存放计算机中的所有信息:包括程序、原始数据、运算的中间结果及最终结果等。
只读存储器(ROM):只读存储器在使用时,只能读出而不能写入,断电后ROM中的信息不会丢失。因此一般用来存放一些固定程序,如监控程序、子程序、字库及数据表等。ROM按存储信息的方法又可分为以下几种:
1、掩膜ROM:
掩膜ROM也称固定ROM,它是由厂家编好程序写入ROM(称固化)供用户使用,用户不能更改内部程序,其特点是价格便宜。
2、可编程的只读存储器(PROM):
它的内容可由用户根据自已所编程序一次性写入,一旦写入,只能读出,而不能再进行更改,这类存储器现在也称为OTP(Only Time Programmable)。
3、可改写的只读存储器EPROM:
前两种ROM只能进行一次性写入,因而用户较少使用,目前较为流行的ROM芯片为EPROM。因为它的内容可以通过紫外线照射而彻底擦除,擦除后又可重新写入新的程序。
4、可电改写只读存储器(EEPROM):
EEPROM可用电的方法写入和清除其内容,其编程电压和清除电压均与微机CPU的5V工作电压相同,不需另加电压。它既有与RAM一样读写操作简便,又有数据不会因掉电而丢失的优点,因而使用极为方便。现在这种存储器的使用最为广泛。
5、随机存储器(RAM):
这种存储器又叫读写存储器。它不仅能读取存放在存储单元中的数据,还能随时写入新的数据,写入后原来的数据就丢失了。断电后RAM中的信息全部丢失。因些,RAM常用于存放经常要改变的程序或中间计算结果等信息。
RAM按照存储信息的方式,又可分为静态和动态两种。
①静态SRAM: 其特点是只要有电源加于存储器,数据就能长期保存。
②动态DRAM: 写入的信息只能保存若干ms时间,因此,每隔一定时间必须重新写入一次,以保持原来的信息不变。
6、可现场改写的非易失性存储器:
这种存储器的特点是:从原理上看,它们属于ROM型存储器,从功能上看,它们又可以随时改写信息,作用又相当于RAM。所以,ROM、RAM的定义和划分已逐渐的失去意义。
①快擦写存储器(FLASH)
这种存储器是在EPROM和EEPROM的制造基础上产生的一种非易失性存储器。其集成度高,制造成本低于DRAM,既具有SRAM读写的灵活性和较快的访问速度,又具有ROM在断电后可不丢失信息的特点,所以发展迅速。
②铁电存储器FRAM
它是利用铁电材料极化方向来存储数据的。它的特点是集成度高,读写速度快,成本低,读写周期短。
时钟周期:计算机在时钟信号的作用下,以节拍方式工作。因此必须有一个时钟发生电路,输入微处理器的时钟信号的周期称为时钟周期。
机器周期:机器完成一个动作所需的时间称为机器周期,一般由一个或一个以上的时钟周期组成。在我们讲述的MCS-51系列单片机中,一个机器周期由12个时钟周期组成。
指令周期:执行一条指令(如“MOV A,#34H”,该指令的含义是将立即数34H传送到微处理器内的累加器A中)所需时间称为指令周期,它由一个到数个机器周期组成。指令周期的长短取决于指令的类型,即指令将要进行的操作步聚及复杂程度。
汇编: 是能完成一定任务的机器指令的集合。
二进制数: 只有0和1两个数码,基数为二。
16进制数: 采用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等16个数码,其中A-F相应的十进数为10-15,基数是16。
指令: 是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。
字节:8位二进制数组成一个字节,在存储器中以字节为单位存储信息。
字:2个字节组成一个字。
双字:2个字组成一个双字。
补码:机器数可用不同的码制来表示,补码表示法是最常用的一种,正数采用符号-绝对值表示,即数的最高有效位为0,数的其余部分则表示数的绝对值;负数的表示要麻烦一些,先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位加1,就可以得到该负数的补码表示了。
段地址:8086CPU将1MB的存储器空间分成许多逻辑段,每个段最大限制为64KB,段地址就是逻辑段在主存中的起始位置。为了能用16位寄存器表示段地址,8086规定段地址必须是模16地址,即为xxxx0H形式,省略低4位0,段地址就可以用16位数据表示,它通常被保存在16位的段寄存器中。
偏移地址:存单元距离段起始位置的偏移量简称偏移地址,由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。
物理地址:在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址,把段地址左移4位再加上偏移地址就形成物理地址。
代码段:程序员在编制程序时要把存储器划分成段,代码段用来存放程序的指令序列,代码段的段地址存放在CS中,指令指针寄存器IP指示代码段中指令的偏移地址,处理器利用CS:IP取得下一条要执行的指令。
数据段:数据段存放当前运行程序所用的数据,数据段的段地址存放在DS中。
附加段:附加段是附加的数据段,也用于数据的保存,另外,串操作指令将附加段作为其目的操作数的存放区域。附加段的段地址存放在ES中。
堆栈段:堆栈段是堆栈所在的主存区域,堆栈段的段地址存放在SS中,堆栈指针寄存器SP指示堆栈栈顶的偏移地址,处理器利用SS:SP操作堆栈中的数据。
堆栈:堆栈是一个"后进先出"的主存区域,位于堆栈段中,使用SS段寄存器记录其段地址。它只有一个出入口,即当前栈顶,栈顶是地址较小的一端(低端),它用堆栈指针寄存器SP指定。堆栈有两种以字为单位的基本操作,对应两条基本指令:进栈指令PUSH和出栈指令POP。
伪指令:汇编语言程序的语句除指令外还包括伪指令和宏指令,伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,完成诸如数据定义、分配存储区、指示程序结束等功能。
宏指令:宏是源程序中一段有独立功能的程序代码,它只需要在源程序中定义一次,就可以多次调用,调用时只需要用一个宏指令语句就可以了。宏指令是用户自定义的指令,在编程时将多次使用的功能用一条宏指令来代替。
子程序:子程序又称为过程,它相当于高级语言中的过程和函数。在一个程序的不同部分,往往要用到类似的程序段,这些程序段的功能和结构形式都相同,只是某些变量的赋值不同,此时就可以把这些程序段写成子程序形式,以便需要时可以调用它;某些常用的特定功能的程序段也可编制成子程序的形式供用户使用。
中断:中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。
中断处理程序:当中断发生时,处理器中止当前正在运行的程序,而转到处理特殊事件的程序段中去执行,这种处理中断的子程序就是中断处理程序,又称为中断服务程序。中断处理程序的入口地址被安排在中断向量表中。
BIOS中断:在存储器系统中,从地址0FE000H开始的8K ROM中装有BIOS(Basic Input/Output System)例行程序。驻留在ROM中的基本输入输出程序BIOS提供了系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。BIOS中断给程序员编程带来很大方便,程序员不必了解硬件I/O接口的特性,可直接用指令设置参数,然后中断调用BIOS中的程序。
暂存器: 用来暂存由数据总线或通用寄存器送来的操作数,并把它作为另一个操作数。
中断: 中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。
掉电保护: 指在正常供电电源掉电时,迅速用备用直流电源供电,以保证在一段时间内信息不会丢失,当主电源恢复供电时,又自动切换为主电源供电。
寄存器寻址: 操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。
波特率: 即每秒钟传送二进制数的位数, 波特率越高,数据传输的速度越快。
D/A转换: 即将二进制数量转换成与其量值成正比的电流信号或电压信号。
A/D转换: 即将模拟量转换成相应的数字量,然而送计算机处理。
串行方式: 指数据的各位分时传送,只需一条数据线,外加一条公共信号地线和若干条控制信号线。
并行方式: 指数据的各位同时传送,每一条数据都需要一条传输线。
伪指令: 用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
SLEEP MODI 睡觉模式: 保证程序内部运行,但与外部的传输等动作已停止的一种运行模式。
linking 连接: 把编译后生成的 *.obj 文件与其它 *.obj文件合并成机器能识别的机器文件。
I2C:输入与输出共用一条传输线,而时钟由另一条线控制的一种串行传输方式。
SFR 特殊功能寄存器区: 8051 把 CPU 中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内的控制寄存器集中安排到一个区域,离散地分布在地址从 80H 到 FFH 范围内,这个区域称为特殊功能寄存器区 SFR。
常用逻辑电路
在逻辑电路中,输入和输出只有两种状态,即高电平和低电平。通常以逻辑“1”和“0”表示电平高低。
1、与门
是一个能够实现逻辑乘运算的、多端输入、单端输出的逻辑电路。
逻辑解释:
即如右边图所示,当开关A与B当中只有全部闭合(即为高电平1)时,才会有输出(即灯泡才会亮)所以在与门电路中,只有输入的全部条件为高电平“1”时输会有输出。
语言表达为:“有0出0,全1出1”
2、或门
是一个能够实现逻辑加运算的、多端输入、单端输出的逻辑电路。
逻辑解释:
即如右边图所示,当开关A与B当中只要有一个开关闭合(即为高电平1)时,就会有输出(即灯泡才会亮)所以在或门电路中,只要输入的为高电平“1”就会有输出。
语言表达为:“有1出1,全0出0”。
3、非门
是一个能够实现逻辑非运算的、单端输入、单端输出的逻辑电路。非就是反,就是否定,也就是输入与输出的状态总是相反。
逻辑解释:
如右边图所示,当开关K断开时灯亮,开关闭合时灯灭。如以开关断开为灯亮,开关接通为灭为结果,则开关K与灯泡的因果关系为非逻辑关系。
语言表达为:“有0出1,有1出0”。
复合逻辑门电路
1、与非门
将一个与门与一个非门联接起来就构成了一个与非门。
根据与门和非门的逻辑功能,可以列出与非门逻辑关系真值表。其逻辑功能的特点是:“当输入全为1,输出为0;只要输入有0,输出就为1”。
真值表如下:
2、或非门
将一个或门与一个非门联接起来就构成了一个或非门。
根据或门和非门的逻辑功能,可以列出与非门逻辑关系真值表。其逻辑功能的特点是:“当输入全为0,输出为1;只要输入有1,输出就为0”。
真值表如下:
3、异或门
异或门只有两个输入端和一个输出端。
其逻辑功能的特点是:“当两个输入端一个为0,另一个为1时,当两个输入端均为1或均为0时,输出为0”。
真值表如下:
异或门的作用是:把两路信号进行比较,判断是否相同。当两路输入信号不同,即一个为高电平,一个为低电平时,输出为高电平。反之当两个输出端信号相同时,即为高电平或低电平时,输出为低电平”。
触发器
触发器是计算机记忆装置的基本单元,它具有把以前的输入‘记忆’下来的功能,一个触发器能储存一位二进制代码。下面我们简单的来介绍计算机中常用的几中触发器。
1
R-S触发器
R-S触发器的逻辑符号如下图所示,它有两个输入端,两个输出端。其中,S为置位信号输入端,R为复位信号输入端;Q和Q非为输出端。规定Q为高、Q非为低时,该触发器为1状态;反之为0状态。其真值表如下。
2
D触发器
D触发器又称数据触发器,它的逻辑符号如下图所示,R、S分别为强制置0、置1端,触发器的状态是由时钟脉冲CLK上升沿到来时D端的状态决字。当D=1时,触发器为1状态;反之为0状态。其真值表如下
3
J-K触发器
J-K触发器的逻辑符号如下,R、S分别为强制置0、置1端。K为同步置0输入端,J为同步置1输入端。触发器的状态是由时钟脉冲CLK下降沿到来时J、K端的状态决定,其真值表如下
J-K触发器的逻辑功能比较全面,因此在各种寄存器、计算器、逻辑控制等方面应用最为广泛。但在某些情况,如二进制计数、移位、累加等,多用D触发器。由于D触发器线路简章,所以大量应用于移位寄存器等方面。
寄存器
寄存器是由触发器组成的,一个触发器是一个一位寄存器。多个触发器就可以组成一个多位的寄存器。由于寄存器在计算机中的作用不同,从而被命名不同,常用的有缓冲寄存器、移位寄存器、计数器等。下面我们就简单的来介绍下这些寄存器的电路结构及工作原理。
1
缓冲寄存器
它是用来暂存某个数据,以便在适当的时间节拍和给定的计算步骤将数据输入或输出到其它记忆单元中去,下图是一个并行输入、并行输出的4位缓冲器的电路原理图,它由4个D触发器组成。
启动时,先在清零端加清零脉冲,把各触发器置0,即Q端为0。然后,把数据加到触发器的D输入端,在CLK时钟信号作用下,输入端的信息就保存在各触发器中(D0~D3)。
2
移位寄存器
移位寄存器能将所储存的数据逐位向左或向右移动,以达到计算机运行过程中所需的功能,请看下图
启动时,先在清零端加清零脉冲,使触发器输出置0。然后,第一个数据D0加到触发器1的串行输入端,在第一个CLK脉冲的上升沿Q0=Q0,Q1=Q2。Q3=Q0。其后,第二个数据D1加到串行输入端,在第二个CLK脉冲到达时,Q0=Q1,Q1=Q0,Q2=Q3=0。以此类推,当第四个CLK来到之后,各输出端分别是Q0=Q3,Q1=Q2,Q2=Q1,Q3=Q0。输出数据可用串行的形式取出,也可用并行开式取出。
3
计数器
计数器也是由若干个触发器组成的寄存器,它的特点是能够把存款在其中的数据加1或减1。计数器的种类也很多,有行波计数器、同步计数器等,下面我们就以行波计数器向大家作个介绍。
下图就是一个由J-K触发器组成的行波计数器的工作原理图。这种计数器的特点是:第一个时钟脉冲促使其最低有效位加1,使其由0变1;第二个时钟脉冲促使最低有效位由1变0。同时推动第二位,使其由0变1;同理,第二位由1变0时又去推动第三位,使其由0变1,这样有如水波前进一样逐位进位下去。
上图中各位的J、K输入端都是悬浮的,这相当于J、K输入端都是置1的状态,即各位都处于准备翻转的状态。只要时钟脉冲边沿一到,最右边的触发器就会翻转,即Q由0转为1或由1转为0。
上图中的这个计数器是4位的,因此可以计0~15的数。如果要计更多的数,需要增加位数,如8位计数器可计0~255的数,16位则可计0~65535的数。
4
三态门(三态缓冲器)
为减少信息传输线的数目,大多数计算机中的信息传输线均采用总线形式,即凡要传输的同类信息都走同一组传输线,且信息是分时传送的。在计算机中一般有三组总线,即数据总线、地址总线和控制总线。为防止信息相互干扰,要求凡挂在总线上的寄存器或存储器等,它的传输端不仅能呈现0、1两个信息状态,而且还应能呈现第三种状态——高阻抗状态(又称高阻状态),即此时好像它们的输出被断开,对总线状态不起作用,此时总线可由其它器件占用。三态门即可实现上述的功能,它除具有输入输出端之外,还有一控制端,请看下图。
当控制端E=1时,输出=输入,此时总线由该器件驱动,总线上的数据由输入数据决定;
当控制端E=0时,输出端呈高阻抗状态,该器件对总线不起作用。当寄存器输出端接至三态门,再由三态门输出端与总线连接起来,就构成三态输出的级冲寄存器。如下图所示就是一个4位的三态输出缓冲寄存器。由于这里采用的是单向三态门,所以数据只能从寄存器输出到数据总线。如果要实现双向传送,则要用双向三态门。
相关问答
【 单片机中 的加法指令,进位和半进位问题.10001100+)10000101...[最佳回答]位3进位到位4了,同时AC=1位7进位,因为没有位8所以只有CY变成18位机,从右到左对应从位0到位7
$在 单片机 里是什么意思?$在单片机里是的意思就是表示本指令的地址。例如jmp$就是代表,不断跳回本指令。也就是一种预设的死循环。单片机是一种集成电路芯片。单片机又称单片微控制...
单片机中 r1,r2r3是什么寄存器就是在51芯片逻辑结构中对应那...[最佳回答]51单片机中r1,r2r3是寄存器组中的,共有四组寄存器组,每组都有r0,r1,r2,r3到r7,通过psw中的寄存器组选择字,来选用哪一组.51单片机中r1,r2r3是...
单片机 程序的“.c”和“.h”格式都有什么区别?.c文件是整个程序中的一个或几个函数组成,在别的.C文件里可以调用它,不只是在主函数中。这样做可以增强程序的模块化,提高程序的可读性。当编制好一个模块时你...
单片机 数字后面的H表示什么?H表示十六进制。1.在数电领域中,单片机常常使用十六进制来表示数值,H就是十六进制的标志。例如,数字0x10H表示十六进制的10,相当于十进制的16。2.十六进制...
单片机中 的电源地线都咋表示?单片机的主电源线用Ⅴcc或Ⅴdd,其中Vcc是通用标识,Vdd专指数字电路电源。如果单片机集成了ADC转换,则ADC模块电源用AVcc或AⅤdd表示。另外,ADC还有基准电源,...
单片机中 的dir是什么意思?在单片机中,dir通常是指方向寄存器(DirectionRegister)的缩写。方向寄存器用于控制特定引脚的输入输出方向。通过设置dir寄存器,可以将特定引脚配置为输入或...
单片机中 direct表示什么?直接寻址(directaddressing)直接寻址就是指令中直接给出了内存操作数的地址。指令中使用变量时,就是直接寻址在翻译成机器指令后,变量是用它的地址而不是...
单片机中 set什么意思?单片机中set是设置的意思。单片机(Microcontrollers)是一种集成电路芯片。它是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM...
51 单片机 汇编语言 中 的 $ 代表啥意思?代表当前的指令所在的地址举个例子来说,在0050H处定义了几个字节数据0050H:01H,02H,03H,04H那么下一条指令的地址应该为0054H,若下一条语句为COUNTEQU$-00...