注意:进行单片机电子系统设计时,时钟频率一般选用11.05926MHz时,可以获得标准的波特率,所以51单片机选用这个看起来很“怪”的晶振。因为方式0和2波特率是固定传输,方式1和3波特率是可变的,表3-15给出方式1和方式3常用波特率设置。表3-15 常用波特率设置表单片机的串行通信方法较为多样,传统的串行通信方式是通过单片机自带的串行口进行RS232方式的通信。......
2023-11-04
8051单片机全双工串行口具有4种工作方式,可通过软件编程选择。
(1)方式0为移位寄存器输入/输出方式。可外接移位寄存器扩展I/O口,也可以外接同步输入/输出设备。其数据传输波特率固定为fosc/12,8位串行数据由RXD(P3.0引脚)输入或输出,同步移位时钟由TXD(P3.1引脚)输出。
串行数据发送:CPU将数据写入发送寄存器时,立即启动发送,内部定时保证写入SBUF与激活发送之间有一个完整的机器周期,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。
串行数据接收:当REN=1且接收中断标志RI位清除时,启动接收过程。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。
(2)方式1为波特率可变的10位异步通信接口方式。其传输波特率由定时/计数器1的计数溢出率来决定,波特率=2SMOD×(定时器1溢出率)/32,发送或接收一帧信息为10位,包括1个起始位0,8个数据位和1个停止位1。
串行数据发送:当执行任何一条写SBUF的指令时,启动串行数据发送。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,在移位脉冲作用下串行数据从TXD引脚输出。发送完一帧数据后TXD一直维持在“1”状态下,由硬件置位TI通知CPU可以发送下一个字符。(www.chuimin.cn)
数据接收:当REN=1且RI位清除后,串行口采样RXD引脚,若在RXD引脚上监测到一个1~0的跳变,立即启动一次接收过程。只有当RI=0且停止位为1或者SM2=0时,停止位进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。
(3)方式2为固定波特率的11位UART方式。波特率由PCON中的选择位SMOD来决定,当SMOD=1时,传输波特率为fosc/32,当SMOD=0时,传输波特率为fosc/64。发送和接收的一帧信息为11位,即1个起始位,9个数据位和1个停止位。发送时可编程位TB8可赋值0或者1,接收时可编程位进入SCON中的RB8。
数据发送:发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。准备好第9个数据位之后,当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI,其过程与方式1相同。
数据接收:方式2的接收过程也与方式1基本相同,不同之处在于第9个数据位,串行口把收到的8位数据送入SBUF,把收到的第9位数据送入RB8。
(4)方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。
有关51单片机初级入门实战教程的文章
注意:进行单片机电子系统设计时,时钟频率一般选用11.05926MHz时,可以获得标准的波特率,所以51单片机选用这个看起来很“怪”的晶振。因为方式0和2波特率是固定传输,方式1和3波特率是可变的,表3-15给出方式1和方式3常用波特率设置。表3-15 常用波特率设置表单片机的串行通信方法较为多样,传统的串行通信方式是通过单片机自带的串行口进行RS232方式的通信。......
2023-11-04
图3-18 串行口结构图表3-12 SCON各位结构定义表3-13 SM0和SM1串行口工作方式选择位2)SM2:多机通信控制位。3)REN:允许串行接收位。......
2023-11-04
CPU对中断处理过程包括中断初始化、中断响应、保护现场、中断服务程序处理、中断撤销和中断返回。所以在进入中断服务子程序后,一般都要保护现场,再执行中断服务程序,返回主程序前再恢复现场,用户在编制中断处理程序时必须要考虑上述问题。......
2023-11-04
所谓的函数调用就是在一个函数体中引用另外一个已经定义的函数,前者为主调函数,后者为被调用函数。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值。因此在以后各主调函数中不用对ann和circle函数说明,可直接调用。......
2023-11-04
函数名由用户自定义,后面是空括号,代表没有函数参数,即代表无参函数,注意空括号不可以省略。函数被调用时,主调函数将通过实际参数,简称实参,传递实际的值给这些形参。3)函数定义时没有写明类型标识符,则默认为整型。......
2023-11-04
由于AT89S52单片机内部没有集成I2C总线模块,采用C语言编写I2C总线技术的通信协议,实现单片机与AT24C02存储器的密码读出与写入功能。图20-13 数据传送时序图I2C总线发送器送到SDA线上的每个字节必须为8位长,传送时高位在前,低位在后。图20-14 完整的数据传送过程2.AT24C02读写操作本系统设计中利用P1.2,P1.3作为SDA、SCL串行通信线,实现对AT24C02芯片内某一地址数据的读写操作。......
2023-11-04
③if-else-if形式:当有多个分支选择时,采用if-else-if语句,形式为if语句1;else if语句2;else if语句3;…使用switch语句时注意以下几点:①case后的各常量表达式的值是不一样的,否则会出现错误。②在case后,允许出现多条语句,可以不用{}括起来。③各case和default语句位置的先后顺序可以改变,而不会影响程序执行结果。......
2023-11-04
引脚12:脉冲信号输出端,对应5脚信号输入端。单片机控制电动机正、反转电路采用ULN2003芯片驱动步进电动机,驱动电流放大,其中单片机的P2.0~P2.3口与ULN2003相连,ULN2003输出引脚16、15、14、13连接到步进电动机端,驱动电动机转动。图15-4 电动机正、反转硬件电路原理图......
2023-11-04
相关推荐