51单片机串行通信程序的设计及调试
[09-14 01:26:53] 来源:http://www.88dzw.com 电子制作 阅读:8619次
文章摘要:我们假定单片机系统的晶振频率为6MHz,选择串行口的工作方式为方式1(8位UART,由定时器1作为波特率发生器),数据传输的波特率为600,此时我们得到定时器l应工作在方式2,TH1年HL1的初值均为1AH,参考程序为:UART初始化:MOV SCON,#50H;选择串行口的工作方式为方式1 MOV PCON,#0OH; 选择SMOD=0MOV TMOD,#20H;定时器1设置为方式2,软件启动 MOV TH1,#E6H;设置TH1-的初值为E6H MOV TL1,#E6H;设置TL1的初值为E6H CLR ET1;关闭定时器1中断,作为波特率发
51单片机串行通信程序的设计及调试,标签:电子小制作,http://www.88dzw.com 我们假定单片机系统的晶振频率为6MHz,选择串行口的工作方式为方式1(8位UART,由定时器1作为波特率发生器),数据传输的波特率为600,此时我们得到定时器l应工作在方式2,TH1年HL1的初值均为1AH,参考程序为:
UART初始化:MOV SCON,#50H;选择串行口的工作方式为方式1
MOV PCON,#0OH; 选择SMOD=0MOV
TMOD,#20H;定时器1设置为方式2,软件启动
MOV TH1,#E6H;设置TH1-的初值为E6H
MOV TL1,#E6H;设置TL1的初值为E6H
CLR ET1;关闭定时器1中断,作为波特率发生器用;
CLR ES;若采用查询方式通讯,需关闭串行口中断;
SET.B ES;若采用中断方式通讯,需打开串行口中断
SETB TR1;启动定时器1
由于51汇编集成开发环境可以识别中文,将标号用中文来表示,使程序的可读性更强。
4、查询方式下串行通信程序的设计
若采用查询方式进行串行通讯,在初始化程序中需关闭串行口中断。
(1)发送数据的程序设计
采用查询方式发送数据之前,必须查询标志位TI的状态,当TI=0时,表明串行口未准备好,不可以发送数据;当TI=1时,表明串行口已准备好,可以发送数据。在发送数据前,必须将TI复位。基本流程见图4。
下例程序是采用查询方式发送一个数据块的子程序,其入口条件是:待发送数据的起始地址在DPTR中,发送数据的字节数在R6R7中,数据采用偶校验。
发送入口:CLR C
发送:MOVX A,@DPTR;读取待发送的数据
MOV C,P
MOV.TB8,C;偶校验位传入 TB8SD2:
JBC TI,SD3;查询TI,等待串行口准备好
AJMP SD2
MOV SBUF,A;发送数据
SD3:CJNE R6,#0,修改发送指针
CJNE R7,#O,修改发送指针
RET;数据块发送完,退出发送子程序修改发送指针:
CLR CMOV A.R7SUBB A,#1
MOV R7.AMOV A,R6
SUBB A,#O
MOV R6,A
SD4:INC DPTR
AJMP 发送
(2)接收数据的程序设计
串行口在可靠接收一个字节的数据后,会自动将SCON中的RI置“1”,查询程序就是查询RI中的内容,在RI=1时,将接收到的数据(SBUF中的内容)保存到指定的地址。在接收一个数据块时,其数据块的字节数一般有两种方式确定,一种是事先约定好的固定字节数,另一种是在数据块的开始处用两个字节来指明字节数。
下例程序是采用查询方式接收一个数据块的子程序,其入口条件是接收数据存放的起始地址在DPTR中,接收数据的字节数事先约定好存放在R6R7中,数据采用偶校验。
- 上一篇:用无磁变压器制作去硫化充电器
《51单片机串行通信程序的设计及调试》相关文章
- › 51单片机教程
- › 用AT89C2051单片机制作八路定时自控电路
- › 51单片机串行通信程序的设计及调试
- › 用AT89C51单片机的LED汉字显示屏设计与制作
- › 基于AT89C2051单片机的电子温度计
- › MAX813L工作原理及其在51单片机系统抗干扰中的应用
- 在百度中搜索相关文章:51单片机串行通信程序的设计及调试
- 在谷歌中搜索相关文章:51单片机串行通信程序的设计及调试
- 在soso中搜索相关文章:51单片机串行通信程序的设计及调试
- 在搜狗中搜索相关文章:51单片机串行通信程序的设计及调试
编辑推荐
- · 自制教室照明节电控制器
- · 双色音乐彩灯的制作
- · 三相交流电机缺相保护器
- · 声光控节能灯的制作
- · 同线电话转呼及互通器电路
- · 超低频信号发生器的制作
- · 自制热转印电路板
- · 警笛发声生器电路
- · 一款节能电路
- · 利用太阳能充电的旅行充电器