产品选型

单片机的高位 详解单片机中的串行口

小编 2024-10-08 产品选型 23 0

详解单片机中的串行口

(此处已添加圈子卡片,请到今日头条客户端查看)

单片机内部有一个功能强大的全双工串行口,该串行口有四种工作方式,以供不同场合使用。波特率可由软件设置,由片内的定时器/计数器产生。串行口接收、发送均可工作在查询方式或中断方式,使用十分灵活。

单片机的串行口除了用于数据通信之外,还可以用来驱动单片机应用系统中的键盘和显示器,这是其他微机系统所不能比拟的。

串行口的结构与控制

为了进行串行数据通信,单片机同样也需要相应的串行接口电路。不过这个接口电路不是单独的芯片,而是集成在单片机芯片的内部,成为单片机芯片的一个组成部分。

80C51单片机内部的串行口,由发送缓冲寄存器 SBUF、接收缓冲寄存器 SBUF、发送控制寄存器、接收控制寄存器、输入移位寄存器和输出控制门组成。控制单片机串行口的控制寄存器共有两个:特殊功能寄存器 SCON 和 PCON,可以用软件改变两者的内容来控制串行口的工作方式和波特率。

缓冲寄存器SBUF

80C51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器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。

(此处已添加圈子卡片,请到今日头条客户端查看)

基于STC89C52的智能全自动洗衣机控制系统设计

张哲,李智,管四海

(西安电子科技大学 机电工程学院,陕西 西安 710071)

:为了降低全自动洗衣机的运行功耗、提高运行的稳定性、降低制造成本以及更方便的操作,设计了一种基于STC89C52单片机的全自动洗衣机控制系统。该控制系统由蓝牙部分、红外热释部分、LCD1602液晶部分和直流电机等组成。其中,采用蓝牙无线通信技术以实现在长距离移动终端上控制洗衣机运行的参数;通过红外热释电传感器控制,以便于取衣操作。最后,给出了该控制系统的硬件结构和软件流程,且通过Proteus仿真测试验证了该控制系统是简便有效的。

: STC89C52;蓝牙无线通讯;红外热释电;智能家居

:TP13文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.07.030

引用格式 :张哲,李智,管四海.基于STC89C52的智能全自动洗衣机控制系统设计[J].微型机与应用,2017,36(7):102-105.

0引言

*基金项目:国家自然科学基金(61673310)由于全自动洗衣机具有对洗涤物品的破坏性弱、一次可洗涤大量衣物、节省劳动力等优点,使它受到广泛的使用并走进了千家万户[1]。但随着智能家居概念的提出、传播和在生活中的初步使用,使得人们对全自动洗衣机在价格低廉的基础上又提出了性能可靠、洗衣功耗低、操作简单、工作效率高以及便于维修等要求。然而目前的全自动洗衣机仅具有洗涤、甩干和暂停等几大简单洗涤功能,不足以满足人们对于智能化控制的需求。此外,传统洗衣机的运行状态显示常采用数码管,这就导致运行状态不清晰,错误代码不明确,缺乏人性化,进而对洗衣机的操作和维护带来极大的不便。

为了有效解决以上问题,本文利用HC05蓝牙模块、矩阵式键盘、LCD1602液晶显示屏和红外热释电传感器,基于STC89C52设计了一种智能控制系统。其中,利用HC-05蓝牙模块以及矩阵式键盘分别实现无线移动终端控制洗衣操作以及近距离人机操作;利用LCD1602液晶显示屏以清晰的英文标识显示当前的工作状态并配有高亮度的背光,结合红外热释传感器为洗衣机的操作提供极大的便利。

1控制系统的总体设计

此控制系统由STC89C52、蓝牙串口电路、电机驱动电路、矩阵键盘电路、LCD1602液晶显示模块、红外热释电模块和报警电路组成,系统框图如图1。

图1系统框图在图1中,STC89C52作为微控制器,用于实现控制算法;蓝牙传输模块用于实现无线远距离设定洗衣机的洗衣模式、洗衣时间等;LCD1602用于显示当前工作状态(比如洗涤、脱水和洗涤模式)以及工作时间;由于STC89C52驱动能力有限,只能输出10 mA左右的电流,所以利用电机驱动电路为电机进行电流放大从而驱动电机运行;红外热释模块主要驱动照明设备为工作人员在黑暗条件下操作洗衣机提供方便;报警电路主要用于电机损坏和意外断电等突发情况以及洗涤结束后的提醒。

2主要硬件设计

2.1STC89C52单片机系统

STC89C52系统主要由微控制器(MCU)、时钟电路和复位电路组成。STC89C52完全兼容8051单片机的特点,其主要参数为:时钟频率最高可达80 MHz;内置有5个中断源,分为两个优先级,每个中断源的优先级是可以编程的,4个8位输入/输出口(P0,P1,P2,P3);有一个全双工的串行口,其有4种工作方式,可通过设置SMOD寄存器进行配置;有3个16位的定时器/计数器[2]。由于STC89C52单片机除P0口外内部均嵌有上拉电阻,因此对于P0口在其外部必须接上拉电阻以保证电平的可靠性。其次,其复位电路采用上电给电容充电进而自动复位的方式。此外其串口(P3.1, P3.2)连接蓝牙模块的串口(TXD, RXD),P2口接洗衣机的功能键盘,P0口作为液晶的数据总线,P1.7口作为其报警电路的蜂鸣器控制端。

2.2蓝牙串口电路

蓝牙通信的原理类似于单片机和计算机之间的串口通信,二者之间的通信需要借助串口,其通信示意图如图2[3]。

图2中GND表示单片机和HC-05系统的参考地,TXD是串行发送引脚,RXD是串行接收引脚。HC05和单片机之间通信,为保证电源基准相同,故将单片机的GND与HC-05的GND连接起来。其次为构建通信通道,将单片机的接收引脚与HC05的发送引脚连接起来,作为单片机的接收通道;将图2蓝牙接线示意图单片机的发送引脚和HC-05的接收引脚连接起来,作为单片机的发送通道。HC05蓝牙串口电路原理图如图3。

2.3红外热释模块

红外热释传感器的原理[4]是通过其内部传感器感知人体发射的红外光谱从而产生高电平信号,当人离开传感器的感应区则自动关闭高电平,输出低电平。此外,红外热释传感器微功耗,静态电流只有65 mA。其VCC接电源正极,GND接电源负极,OUT1接1 kΩ的限流电阻后接LED小灯。

2.4电机驱动电路

STC89C52输出的高电压为5 V,低电压为0 V,电流为10~20 mA。然而直流电机的启动电流为200~400 mA,不足以驱动电机运行,故选取L298电机驱动模块以放大电流。直流电机PWM控制系统的主要功能包括:通过控制两个输入引脚的电平信号控制直流电机的正转、反转和急停,且可通过调整电压大小调整电机的转速,能方便地实现电机的智能控制[5],其控制功能见表1。

L298中的 ENA、ENB为使能端口,ENA用来控制左边的电机,ENB用来控制右边的电机;IN1、IN2、IN3、IN4为控制引脚,用来设置三极管的开关状态。通过H桥来控制电机的运行,当使能端为高电平时控制有效;使能端为低电平时,输入端对电机的控制失效[6]。输入端的一个引脚接PWM信号,另一个输入端接低电平时电机正转;当该引脚输入低电平另一个引脚输入PWM信号时,电机朝另一个方向运行。当两个输入端的电平信号相同时, 电机快速停止。引脚以及功能如表2所示。

3软件设计

3.1软件整体结构设计

系统程序分为主程序、定时器中断程序、延时程序、LCD1602液晶显示程序和电机驱动程序等几部分。定时中断0用来控制洗衣进程的时间和电机正反转,通过外部中断0进行相应功能的倒计时,在此期间,如果停止键按下,则终止进程,返回初始界面。延时程序用于LCD1602液晶显示屏的写操作的等待。电机驱动程序用来控制相应控制引脚的高低电平。控制系统流程图如图4。

3.2蓝牙串口程序

在UART通信过程中,采用LSB方式即先发送数据的低位再发送数据的高位,再使TXD为低电平并持续一段时间,直到将8位二进制数字全部发送完毕,与此同时对TI和RI置1。其次,为了手机(上位机)与洗衣机能够正常通信必须设置两者为相同的波特率,因此就需要使用单片机的定时器1,利用公式:波图5蓝牙串口流程图

特率=(2SMOD/32)×(T1的溢出率)[2],设置本系统波特率为9 600 b/s;在使用串口时,当接收到或者发送完数据后,会对标志位进行置1,但是串口中断不会像定时器中断自动地对标志位进行清0,需要软件对标志位进行清0。蓝牙串口接收数据的具体流程如图5所示。

3.3矩阵键盘子程序

矩阵键盘由16个按键组成,由于单片机的引脚有限,故将其设置成4行4列,进行行扫描或列扫描以减少对 IO口的使用。此外,为避免按键按下时出现抖动,因此需要去抖处理。按键扫描如图6所示,按键去抖流程图如图7所示。

3.4LCD1602液晶显示

LCD1602液晶[5]内部带有80 B的显示RAM,用来发送数据,它的结构如图8。

第一行地址是0X00~0X27,第二行是0X40~0X67H,其中第一行0X00H~0X0F是与液晶上第一行16个字符显示位置相对应的,第二行0X40H~0X4F是与第二行16个字符显示位置相对应的。而每行多出来的一部分是为了显示移动字幕[7]。

基本操作时序:

读状态:

输入:RS=L,R/W=H,E=H;

输出:D0~D7 状态字;

读数据:

输入:RS=H,R/W=H,E=H;

输出:无;

写指令:

输入:RS=L,R/W=L,E=H,D0~D7=指令码;

输出:D0~D7数据;

写数据:

输入:RS=H,R/W=L,E=H,D0~D7=数据;

输出:无。

操作1602液晶显示的流程如下:

(1)通过RS信号确定是向LCD写数据还是写命令;

(2)读写模式设置(R/W)为写模式,即将R/W设置为低电平;

(3)将数据或者命令送达数据总线上;

(4)给使能信号端EN一个高电平信号,将数据送入LCD的RAM,完成写操作。

4实验结果与分析

为了进一步验证本文设计的控制系统简便有效,利用Keil编写程序并进行Proteus仿真,仿真结果显示洗衣机运行正常、液晶显示信息正确。根据原理图以及仿真图制作硬件模拟实物,通过Ecilpse编写蓝牙串口Android版软件,在非开阔的环境下对不同距离的通信情况进行测试,通过手机蓝牙串口软件控制全自动洗衣机的运行,观察能够操作洗衣机的极限距离。

调试结果表明,HC-05蓝牙模块的有效通信距离为0~25 m,在此范围内手机与洗衣机通信正常。实验结果如表3所示。该系统能够实现远距离控制洗衣机的运行状态,功耗低,控制时间准确,操作简便,人性化,全自动洗衣机工作状态清晰可见,适合不同年龄层次的用户使用。Proteus仿真结果如图9所示。图9进水模式Proteus仿真结果在Proteus仿真中通过设置串口或者矩阵式键盘来设置洗衣机的工作参数,相比传统洗衣机的独立式按键更加简便、快捷,只需要针对所需要设置的功能设置按键即可。

图9是全自动洗衣机进水状态下的仿真结果。对应的LED显示当前正在进行的状态, 通过带有背光的LCD液晶显示屏显示工作状态以及剩余时间,相比传统的数码管显示更加准确清晰。通过仿真可看出电机的转动状况。红外热释在黑暗的条件下感知到人经过时就会点亮以辅助人的取衣操作。通过Proteus软件仿真以及实际的硬件测试验证得出,本控制系统相比传统全自动洗衣机控制系统,不仅能实现远程控制运行、人体感应取衣操作、操作简单快捷、更加人性化、智能化,而且使用STC89C52作为控制芯片大大降低了运行功耗和加工成本。另外,经过硬件测试,在电机异常的状态下洗衣机能够发出相应的警报并且将存在的问题通过LCD液晶显示出来,极大地降低了维护的难度。

参考文献

[1] 刘晓彤. 基于Proteus的全自动洗衣机控制系统设计[J]. 微计算机信息, 2012: 28(9):146-148.

[2] 温宗周. 孟建华. 单片机原理与接口技术[M].北京:中国电力出版社, 2009.

[3] 赵勇. 嵌入式系统蓝牙模块设计[D]. 北京:北京交通大学,2007.

[4] 徐青山, 李正云. 红外热释电人体感应饮水机智能控制开关:中国,CN201830232[P].2010-10-29.

[5] 刘树中, 孙书膺, 王春平.单片机和液晶显示驱动器串行接口的实现[J]. 微计算机信息, 2007,23(2):49-53.

[6] 彭鸿才.电机原理及拖动[M]. 北京:机械工业出版社, 2007.

[7] NXP. NXP Semiconductors “TJA10 42 Rev. 7-8”[S]. 2012.

相关问答

【51 单片机 写入累加寄存器ACC的数据由低到 高位 排列是ACC0-AC...

[最佳回答]1,是的2,假定ACC高到低为10011010,且CY=0,那么执行ACC=ACC>>1后ACC变为01001101,也就是右移1位,高位补0,这个式子经常用来做除2运算.3,右移后,...

请各位高手讲解一下 单片机 中ADC模块中的数据左对齐和右对齐是啥意思?把大概的工作原理讲下啦.谢谢啦?

一般高于八位的ADC才会出现这种情况比如说AD转换后数字量保存在ADCH,ADCL两个寄存器中左对齐就是AD值的最高位就是ADCH的最高位了,ADCL的低位就会有的用不到...

单片机 SFR主要作用是什么?占用了什么空间?

SFR是特殊功能寄存器,比如51单片机的P0、P1、P2、P3、SBUF、TMOD、SCON、TH0等等,占用80H~FFH地址空间,与单片机的内部RAM高位地址相同但物理地址是不同的。S...

...别功能寄存器会存在于 高位 128B呢?初学 单片机 很疑惑,-ZOL问答

关于51单片机内存问题,一直是个疑惑大家的问题,因为51单片机是个很另类的单片机。下面我给楼主讲解一下:51单片机之所以另类,是因为,他寻址内存的空间,不是靠...

51 单片机的 串行口有哪几种工作方式?

51单片机串口有四种工作方式:1、方式0串行接口的工作方式0为移位寄存器I/O方式。在串行口外接移位寄存器以扩展I/O接口,也可以外接串行同步I/O的设备2、方...

请问选择哪几位 高位 地址做片选译码,怎么选的?

书上答案是错的,应该是A15,A14,A13,这三个高位地址线。因为存储器就有13位地址,要用A12~A0。现在这种单片机教材烂得很,错误太多,写完书又不校对。所以,...书...

单片机 传感器的工作原理?

DS18B20是使用一根数据线进行通信,首先你要先向它发送一系列脉冲信号。一般我们用的步骤大致为:初始化--跳过ROM操作--启动温度转换--(延时)--初始化--跳过RO...

单片机 片内ram20h单元的最低地址为何值

21个SFRACC累加器B用于辅助累加器做某些运算的寄存器PSW程序状态字其中最高位是进/借位标志C;PSW.6是辅助进位标志AC,用于标识加减运算中低...

单片机 当中的程序状态字PSW,是做什么的?能给具体的说说吗?谢...

在单片机的运行过程中,这些寄存器被用来保存操作结果和控制流程。其中,工作寄存器用来保存中间结果和变量;标志位用来指示当前操作的执行情况;堆栈指针则用于管...

八位机和三十二位 单片机 有什么区别

[回答]你就可以到指令表中找到每一条指令所对应的机器码,然后你只要在机器码后面加上操作数即可,比如,把一个30H单元送入A累加器;...共是十六位,占用两个...

猜你喜欢