当前位置: 首页 > news >正文

做毕业设计免费网站wordpress logo 尺寸

做毕业设计免费网站,wordpress logo 尺寸,wordpress添加首页,门户网站注意事项目录 串口内部结构 串口相关寄存器 串口控制寄存器SCON SM0和SM1 SM2 REN TB8和RB8 TI和RI 电源控制寄存器PCON SMOD 串口工作方式 方式0 方式0输出#xff1a; 方式0输入 方式1 方式1输出。 方式1输入 方式2和方式3 方式2和方式3输出#xff1a; 方式2和…目录 串口内部结构 串口相关寄存器 串口控制寄存器SCON SM0和SM1 SM2 REN TB8和RB8 TI和RI 电源控制寄存器PCON SMOD 串口工作方式 方式0 方式0输出 方式0输入 方式1 方式1输出。 方式1输入 方式2和方式3 方式2和方式3输出 方式2和方式3输入 波特率的计算 串口配置步骤 1.确定T1的工作方式 2.确定串口的工作方式 3.计算我们T1的初值设定波特率 4.启动T1TCON中的TR1位 5.如果使用中断需要开启串口中断控制位 续上一篇 单片机学习笔记---串口通信1-CSDN博客 串口内部结构 这张图是我们51单片机的串口内部的结构图。 右边的两个脚TXD对应到单片机的P3.1的附加功能然后RXD对应到单片机的P3.0引脚的附加功能。 同样对这个P3.1和P3.0相应的寄存器配置就可以使用串口的功能了。 左边这一块全是单片机内部的结构。 最重要的一块是在SBUF数据缓存期也就是特殊功能均器的数据缓存期。 SBUF串口数据缓存寄存器物理上是两个独立的寄存器但占用相同的地址。写操作时写入的是发送寄存器读操作时读出的是接收寄存器 我们要进行发送数据和接收数据的话它的数据是存放在SBUF这个缓存区当中的。 如果我们要读取串口的接收数据的话我们是读取这个SBUF。 然后要发送的话也是先把数据存到SBUF这个寄存器当中然后由我们对应的寄存器控制它发送出去。 串口通信是异步的串行通信它有波特率那这个波特率是如何产生的 波特率依靠的就是TH1和TL1的计算波特率计算后续我们还会介绍到。TH1和TL1是定时器1的功能在使用串口通信的时候也必须要配置TH1和TL1的工作方式通常在这里TH1和TL1是工作在方式2自动重载的模式 。 这里有一个SMOD这是通过对应的寄存器来控制倍频。 如果不倍频的话那就是相当于这个开关打到上面这一块 如果是倍频的话就要将对应的值除以2再传输到我们对应的接收和发送控制器。 接收和发送控制器根据对应的SBUF里面的传输数据控制这个控制门和移位寄存器。 如果是接收的话把对应的RXD的数据接收到SBUF里面然后SBUF接收完成之后控制寄存器会将对应的RI置1也就是接收中断。之后就会发送串口中断的请求向CPU发送中断请求执行中断。 也就是说当RI或者TI哪一个为1的话它就会发送串口中断的请求。 如果是发送我们会通过SBUF把这个数据传输到控制门由发送控制器控制它发送控制器也会控制中断然后通过TXD引脚发送出去。要准备发送时会通过TI控制置1然后发送中断请求将我们的SBUF数据发送出去。 串口相关寄存器 我们的芯片手册上有一张比较全的串行口相关寄存器但是我们主要介绍其中几种重要的寄存器。 串口控制寄存器SCON PS控制寄存器在工作流程图中的这一个位置 SM0和SM1 SCON也有8位SM0和SM1是用来确定串口通信的工作方式同样它也有四种方式。方式0方式1方式2和方式3通过SM0和SM1的不同四种组合。 我们常用的通信使用的工作方式是方式110位异步收发器8位数据波特率是可变的其中两位是指起始位和停止位。 SM2 SM2 是用来多机通信的控制位。 使用串口通信时它可以支持多机通信什么意思 比如主设备的串行口TXD和RXD可以连接多个串口设备。比如说设备1设备2这是主设备它可以通过SM2这个位来进行控制。 使用了多机通信的话这个SM2工作方式主要处于方式2和方式3这两种方式。 当SM21的时候可以利用收到的RB8这个位来控制是否激活RIRI就是接收中断。 如果RB80的时候表示不激活RI收到信息就丢弃。 如果当RB81的时候收到的信息就会进入到SBUF缓存器当中来并激活RI从而接收数据。 比如如果使用了两个设备通信的话设备1配置的 RB8是为1的设备2接收到RB8是0。等于1的话就可以读取SBUF里面的数据等于0的话就不读取。那就代表主机发送的数据是在设备1而不是在设备2。如果设备2配置的是RB81那它的数据同样也会到达设备2上面来。要忽略它的数据就使RB8接收的数据为0。 当这个SM20的时候不论RB8等于0还是等于1均可以使用收到的数据进入到SBUF。这样的话我们在使用串口方式1也就是不进行多机通信的时候我们可以将SM2等于设置为0。 刚刚说过如果设置为1的话我们就工作在多机通信的这种方式那这样串口通信方式可以设置为方式2和方式3因为我们这个时候要用到了RB8所以数据位是9位。根据我们发送过来的数据来判断这个RB8是1还是0从而实现是否激活这个RI。 当然在串口通信过程当中实现多机通信也可以不使用这种方式也可以使用软件层面来实现多机通信。 REN REN是允许接收位。 REN由软件置1置1就是启动串行口接收数据如果这个软件设置为0也就是REN设置为0的时候就禁止接收。当然我们在串口通信的时候肯定是需要发送和接收的所以这位是设置为1的也就是允许接收。    TB8和RB8 TB8和RB8是工作在方式2和方式3的时候可以用软件来规定作用用作数据的机校机偶校验位或者是在多机通信过程当中用作地址帧和数据帧的标志位。 。 在方式0和方式1的时候TB8和RB8是没有用到的所以我们在串口通信的时候这两个基本上不用管。 TI和RI TI是发送中断标志位。 在方式0的时候当串行发送第8位数据结束的时候或者是在其它方式串行发送停止位的时候开始的时候内部硬件就会使这个TI置1它就会向CPU发送中断请求在中断服务程序当中必须用软件来清零来取消中断申请等待下一次的中断。 RI是接收中断标志位。 在方式0的时候当串行接收到第8位数据结束的时候或者在其它方式串行接收停止位的中间时由内部的硬件置1然后发送向CPU发送中断申请。也必须在中断服务程序当中用软件将清零清零的话就取消中断申请等待下一次的中断申请。 小总结所以我们在使用这个计算器SCON的时候主要是配置SM0和SM1来选择串口通信的工作方式通常我们选择为方式1所以将SM0配置为SM1配置为1。 然后SM2通常设置为0因为没有使用多机通信或者是没有使用9位数据所以设置为0 。 REN我们通常在串行通信的时候我们也要接收数据所以要允许设置为1。 TB8和RB8我们没用到我们默认就为0。 TI和RI是硬件自动完成。当进入中断的时候才需要我们软件手动清零。 电源控制寄存器PCON 电源控制寄存器同样也有8位但是它只使用到了最高位也是第7位。 后面的7位都没有用到。 这个寄存器的功能主要是用来对这个波特率的倍频的选择。 也就是在工作流程图的这个位置 SMOD SMOD0的时候那它是不进行倍频的。 如果是等于1的时候这个开关是打到上面进行倍频。 在串口方式1方式2方式3的时候波特率与这个SMOD的倍频值有关。 当SMOD1的时候波特率提高了一倍。 复位的时候SMOD是等于0也就打到下面来。 所以在串口通信当中我们使用工作方式1的时候可以对这个SMOD的值进行配置如果要倍频那就设置为1如果不倍频那就是设置为0。 串口工作方式 我们知道通过SCON可以控制串口通信的四种工作方式方式0方式1方式2方式3。要使用哪一种方式就通过SM0和SM1这两个值来确定。 方式0 方式0串行口是同步移位寄存器的输入输出方式。 主要用于扩展并行输出输入和输出口。数据是由RXD也就是P3.0这个引脚进行输入和输出的。同步移位脉冲是由TXD也就是P3.1引脚进行输出。发送和接收均为8位数据。低位在前高位在后。波特率固定是fosc除以12。 Fosc就是外部的晶振的频率比如我们使用12兆那就除以12就是1兆就是对应方式0。 我们来看一下方式0和输出和输入格式 方式0输出 写入数据到SBUF到里面然后它的数据发送和接收都是依靠RXD引脚来进行传输的所以按照先从低位再到高位的规则按照这个脉冲进行传输从D0到D78位数据传输完成。传输完成之后TI置1也就是中断标志位置1。 如果我们开启了中断它会进入到中断中断进入之后我们要清除这个中断TI。 方式0输入 方式0输入的话输入数据也是依靠RXD引脚来进行接收的所以当我们接收允许的时候REN1作为接收允许并且在TXD一位脉冲的情况下数据就会一位一位的进行接收。接收同样是从低到高进行接收接收完成之后RI置1然后发送中断请求接收完成之后在中断服务函数里面我们手动给它清零等待下一次的接收。 这是方式0它的输出和输入的情况。 方式1 工作方式1是10位的异步通信口TXD是发送引脚RXD是接收引脚。 传送一帧数据的格式是这样格式 检验位用于数据验证奇偶校验/无检验 停止位用于数据帧间隔 其中第一位是起始位紧接着是8位的数据位最后是停止位一帧下来就是10位。 方式1输出。 把数据写入到SBUF这个缓存器里面后由于方式1是异步的通信由TH1产生波特率在这个波特率的情况下我们就来发送数据。然后首先是发送低电平的起始位然后紧接着发送8位的数据按照从低位到高位的进行发送发送完了之后还有高低平的停止位。同样发送完成之后TI也会由硬件置1代表中断。发送中断的完成然后向CPU提出中断的请求。进入中断服务函数的时候我们可以手动将TI清零等待下一次的中断。 方式1输入 数据是通过RXD来进行接收的同样它是在波段率的脉冲采样的时序上面进行接收然后首先它接收低电平的起始位然后以此类推8位的数据位从D0到D8低位到高位最后是高低平的停止位。然后接收完了之后它会有高电平RI表明接收完成中断然后开启的中断后它会进入中断服务程序我们要手动对它进行清零。 这个位采样脉冲就是波特率波特率的值是通过TH1和TL1的值来进行设置的后续我们会介绍波特率的计算工具学习如何来计算它的波特率。 对于方式1我们要对数据进行接收的话我们还要注意要将这个REN这个中断接收使能位设置为1接收器就会选择波特率的16倍的采样。 16倍的采样是怎么来的根据我们前面的结构图可以看得到 这是根据生成的波特率之后这里是除以16也就是16分频的采样 那它就会根据这个采样时序在RXD引角检测电平检测到了RXD引角输入电平发生负跳变的时候就说明起始位是有效也就是来了下降沿的时候就有接收的这个起始位是有效的并将其移入到输入移位寄存器当中开始接收一帧信息一帧信息其他的位就是我们8位的数据 检验位用于数据验证奇偶校验/无检验 停止位用于数据帧间隔 接收了这些数据之后数据都是从这个输入移位寄存器右边进行输入的。 移位寄存器输入的话起始位移到这个输入移位寄存器的最左边控制电路进行最后一次移位。当这个RI等于0的时候并且SM20的时候将接收到的9位数据的前8位不要起始位装入到SBUF当中这个过程是单片机内部串口进行自动完成的而不需要我们对这个接收的数据进行去掉最高位去掉最低位这样子的操作这个是由串口的内部结构自动去完成。然后我们只要读取SBUF里面的数据就可以读取到实际发送的数据了。 当接收完这个8位数据之后紧接着是停止位停止位是进入到RB8并由硬件自动完成设置RI为1也就是向中断发出请求。 如果串口的工作使用的是9位的话它第8位数据还会继续接收。方式1是8位数据的所以后面我们再来介绍9位的数据的情况。 方式2和方式3 方式2和方式3工作的时候是处于11位数据的异步通信。  TXD是发送引脚RXD是接收引脚和方式1不同的是它是11位的也就是它有9位数据那我们来看一下它一帧数据的格式它一帧是11位起始位、9位数据、停止位总共加起来11位。 其中起始位和停止位和方式1是类似的不同的区别就是数据位它是9位增加了一个位即RB8或TB8。 方式2和方式3输出 发送开始的时候起始位为0输出到这个TXD引脚然后输出移位寄存器的输出位从D0到TXD引脚然后每一个移位脉冲都使输出移位寄存器的各个位右移一位。并由TXD引脚输出也就是说从低位开始移位一直到高位。 第一次移位的时候停止位移入到输出移位寄存器的第9位上。以后每移位一次左边都移入0。当停止位移至输出位的时候左边其余就全部为0。检测电路检测到这一条件的时候它就会使控制电路进行最后一次移位并将TI设置为1向CPU发出中断请求这个是由硬件自动完成的。    方式2和方式3输入 输入跟输出的过程是类似的。 它由RXD引脚来接收这个数据同样它是根据位采样脉冲的情况来一位一位的接收。首先是接收下降沿认为接收开始。然后以此类推接收对应的数据。因为方式2和方式3处于11位数据如果将SM2设置为0并且RI0的时候接收的数据会装入到接收缓存器SBUF当中和RB8里面。SBUF接收8个位D0到D7RB8是保存最后第9位数据。 接收完成之后RI会置1向CPU发出中断请求。如果条件不满足则数据丢弃。 数据不满足是指我们前面配置SCON这个特殊寄存器的时候如果使用了SM2等于0并且RI等于1的时候它是直接将数据接收到SBUF里面。如果RB80的时候它是忽略这个数据的 并且不会置位RI1继续搜索RXD引脚的负跳变也就是起始信号重复执行。 在串口通信当中我们使用的主要是方式1一帧数据是10位。对于方式0、方式2和方式3我们很少使用。 波特率的计算 接下来我们来介绍非常重要的知识点就是串口的波特率的计算。 下面我们给出了这四种工作方式的波特率的计算公式。 方式0它的波特率是固定的 方式2它的波特率也是固定的方式1和方式3的波特率是可以更改的。 注意 SMOD是方 T1是定时器的8位重载的模式。 Fosc是外部晶振的时钟频率机器周期等于12乘以频率的导数1/12震荡周期即是12倍的震荡周期也就是1微秒。 T1溢出率方式2是8位的重载模式那最大值就是256到达了256它就会溢出所以用256减掉初值就是实际的计数值然后再将其倒数乘以机器周期1微秒。  我们也可以不用这么复杂的计算我们可以使用小工具来完成这个波利的换算。 默认打开这个软件都会直接定位到这个方式2。这个方式2是指定时器的方式不是串口通信的工作方式。 串口通信的工作方式我们使用的是方式1从这个小工具上面也可以看到方式1和方式3它的波动率才能更改的。我们使用的是方式1。 我们开发板的晶振频率是12兆在串口通信当中我们一般都要使用11.0592兆晶振。 波特率一般使用9600就可以了SMOD是用来倍频的如果将这个SMOD设置为1的话。是不是就是9600*2不是哈波动率依然是9600只不过使用了SMOD1之后等一下计算的TH1的初值会进行变化就相当于加倍了。 假设一开始使用不倍频 点确定是0%误差比较精确。 然后使用倍频看一下现在变成了FAH初值改变了。 为什么要使用11.0592兆的晶振因为它的误差是零的假设现在改成12兆点一下确定看到误差就有了6.98%的误差这个误差是比较大的在串口通信过程当中有可能会出现数据的错误或者是乱码之类的这个乱码的产生就是因为通信它有误差。 所以我们在串口通信我们强烈建议使用11.0592兆的晶振误差是为零的。 串口配置步骤 下面我们来看继续看一下串口的初始化步骤。 如图中罗列的顺序 这个顺序的话可以不用按照这个顺序严格一步一步的来次序可以任意。 我们首先按照这个顺序来讲解。 1.确定T1的工作方式 这个工作方式的确定是通过TMOD这个寄存器来进行设置这个在定时器的章节当中我们也给大家讲解了如果你不了解的话可以回过头看一下我们定时器那一节。我们在使用串口通信的时候我们是要使用定时器1并且工作方式是2也就是8位的自动重装载的模式。 2.确定串口的工作方式 有很多初学者把定时器的工作方式和串口的工作方式很容易混淆所以在这一块一定要理解好。 定时器的工作方式是用来确定波特率的产生我们根据串口内部结构图可以知道它只能通过TH1或者TL1也就是定时器1产生。所以TMOD肯定是要配置定时器1的。 串口的工作方式有四种通过SM0和SM1这两位来设置串口通讯方式通常是使用方式1。 确定了工作方式并且通过SCON可以使能允许接收位SMOD允许接收位通过这个REN来进行设置。 3.计算我们T1的初值设定波特率 通过TH1和TL1这两个8位的寄存器的TL1进行计数计数溢出之后由TH1自动装载到TL1当中。所以我们要将计算的初值传入到TH1和TL1当中。 比如我们刚才使用的波特利的计算工具 就算出来的初值等于0XFA。 那这个初值如何放入TH1和TL1当中直接就是TH10XFATL10XFA。因为它是8位自动重装载通过TL1进行开始计数然后是重装载这个值它要溢出之后自动装到这里TL1中所以我们TH1和TL1都要装载这个值这就是波特率的初值的设置。    4.启动T1TCON中的TR1位 5.如果使用中断需要开启串口中断控制位 IE寄存器中ES位设置为1开启并且要开启总中断EA。 通过这么几步那就可以使用串口中断了。 那我们来看一下串口初始化的配置的实际代码。 这是我们自己定义的函数没有返回值入口参数是u8类型。 这个入口参数是用来设置波特率方便我们在调用这个函数的时候可以传入对应的波特率的值这个波特率的值自然就是传到TH1和TL1当中的。 TOMD是用来设置定时器1的工作方式。它要工作在方式2所以通过或运算不干扰到其他的位。TOMD0010 0000 SCON用来设置串口通信的工作方式那要工作方式1并且开启了接收允许接收为REN那就是0X50。 SCON0101 0000 然后PCON是对波特率的加倍设置。因为SMOD是PCON的最高位所以PCON1000 0000这个1就对应到了SOMD。 然后TH1和TL1是用来设置波特率的重装载值通过函数的入口参数传递进来。 然后ES是开启串口的中断。 EA是总中断。 定时器需要开启所以要打开TR11 以上就是串口的初始化。 如果你使用中断要更改的就是TH1和TL1的初值波特率这个值可以通过前面介绍的这个波动率的自动计算工具更改这个值可以改变波动率。 波特率是不是可以说任意的大小 我们来演示一下假设波特率现在设置为15200我们看一下能不能到达。 点击确定您所输入的晶振频率不能使用这个波特率所以说不是说你想使用多大的波特率都可以的。 我们设置的11.0592兆这个晶振它所配置的波动率的大小应该最大就是38400而且它的误差很大基本上这个波特率不能用。19200还是可以用的。 所以你要使用哪个波特率可以根据你的实际的要求来使用我们使用的是9600就可以了。 以上就是串口初始化的步骤。 下一节开始代码演示。
http://www.dnsts.com.cn/news/264591.html

相关文章:

  • 网站流量分析方法自己做企业网站详细流程免费
  • 网站备案 新增接入苏州百度关键词优化
  • 网站建设与策划搜索引擎营销的五大特点
  • 网站的现状网站建设项目延期验收申请
  • 自己做的网站添加域名建设娱乐网站的要求
  • 网站seo服务网站建设开发实训的目的
  • 开厂做哪个网站比较好银州手机网站建设
  • 贵阳商城网站建设微信视频号怎么推广引流
  • 印度做爰免费网站视频西安建站费用
  • 网站设计开发维护wordpress需要备案吗
  • 网站建设佰首选金手指二七南通海洲建设集团网站
  • 牡丹江3d网站开发1688关键词排名查询工具
  • 郑州高端定制网站wordpress 站群会员
  • 无锡制作网站公司简介西安百度推广外包公司
  • 域名制作网站吗wordpress过滤器
  • 自己可以做网站服务器搜狗搜索网
  • 中国住房和城乡建设网站网站维护成本
  • 好玩的页游重庆关键词优化软件
  • 西安网站策划网站后台使用
  • 青州做网站的公司wordpress主题模版在那个文件夹
  • 甘肃两学一做网站网站做的自适应体验差
  • 做网站被骗百度注册入口
  • 枣庄市住房和建设局网站php网站中水印怎么做
  • 网站开发与运维收费明细网站制作电话多少钱
  • 做网站宣传上海企业营销策划
  • 四川住房和城乡建设厅网站三类人员wordpress怎么设置主页
  • 一件代发48个货源网站电子商务网站开发价格
  • 河南第二建设集团有限公司网站北京公司注册地址多少钱
  • 苏州网站搭建公司设计之家图片
  • 怎么做钓鱼网站盗取qq免费网站建站