8051单片机教程第二十二课:串行口应用编程实例

发布者:yunhui最新更新时间:2021-01-19 来源: eefocus关键字:单片机  串行口  应用编程 手机看文章 扫描二维码
随时随地手机看文章

1.串口方式0应用编程8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就可以扩展一个并行口。

例:用8051串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,可以靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通讯之前,都要先对控制寄存器SCON进行初始化。在方式0中将,将00H送SCON就可以了。


ORG2000H


START:MOVSCON,#00H;置串行口工作方式0


MOVA,#80H;最高位灯先亮


CLRP1.0;关闭并行输出(避象传输过程中,各LED的"暗红"现象)


OUT0:MOVSBUF,A;开始串行输出


OUT1:JNBTI,OUT1;输出完否


CLRTI;完了,清TI标志,以备下次发送


SETBP1.0;打开并行口输出


ACALLDELAY;延时一段时间


RRA;循环右移


CLRP1.0;关闭并行输出


JMPOUT0;循环


说明:DELAY延时子程序可以用前面我们讲P1口流水灯时用的延时子程序,这里就不给出了。


二、异步通讯


org0000H


AJMPSTART


ORG30H


START:


movSP,#5fh;


movTMOD,#20h;T1:工作模式2


movPCON,#80h;SMOD=1


movTH1,#0FDH;初始化波特率(参见表)


movSCON,#50h;StandardUARTsettings


MOVR0,#0AAH;准备送出的数


SETBREN;允许接收


SETBTR1;T1开始工作


WAIT:


MOVA,R0


CPLA


MOVR0,A


MOVSBUF,A


LCALLDELAY


JBCTI,WAIT1;如果TI等于1,则清TI并转WAIT1


AJMPWAIT


WAIT1:JBCRI,READ;如果RI等于1,则清RI并转READ


AJMPWAIT1


READ:


MOVA,SBUF;将取得的数送P1口


MOVP1,A


LJMPWAIT


DELAY:;延时子程序


MOVR7,#0ffH


DJNZR7,$


RET


END


将程序编译通过,写入芯片,插入实验板,用通读电缆将实验板与主机的串口相连就可以实验了。上面的程序功能很简单,就是每隔一段时间向主机轮流送数55H和AAH,并把主机送去的数送到P1口。可以在PC端用串口精灵来做实验。串口精灵在我主页上有下载。运行串口精灵后,按主界面上的“设置参数”按钮进入“设置参数”对话框,按下面的参数进行设置。注意,我的机器上用的是串口2,如果你不是串口2,请自行更改串口的设置。

设置完后,按确定返回主界面,注意右边有一个下拉列表,应当选中“按16进制”。然后按“开始发送”、“开始接收”就可以了。按此设置,实验板上应当有两只灯亮,6只灯灭。大家可以自行更改设置参数中的发送字符如55,00,FF等等,观察灯的亮灭,并分析原因,也可以在主界面上更改下拉列表中的“按16进制”为“按10进制”或“按ASCII字符”来观察现象,并仔细分析。这对于大家理解16进制、10进制、ASCII字符也是很有好处的。程序本身很简单,又有注释,这里就不详加说明了。


三、上述程序的中断版本


org0000H


AJMPSTART


org0023h


AJMPSERIAL;


ORG30H


START:


movSP,#5fh;


movTMOD,#20h;T1:工作模式2


movPCON,#80h;SMOD=1


movTH1,#0FDH;初始化波特率(参见表)


movSCON,#50h;StandardUARTsettings


MOVR0,#0AAH;准备送出的数


SETBREN;允许接收


SETBTR1;T1开始工作


SETBEA;开总中断


SETBES;开串口中断


SJMP$


SERIAL:


MOVA,SBUF


MOVP1,A


CLRRI


RETI


END


本程序没有写入发送程序,大家可以自行添加。


关键字:单片机  串行口  应用编程 引用地址:8051单片机教程第二十二课:串行口应用编程实例

上一篇:51单片机定时器/计数器的结构以及原理介绍
下一篇:基于AT89C51单片机的便携式数字血压计的设计

推荐阅读最新更新时间:2024-10-31 15:44

AT89S51单片机报警器的设计
1.实验任务 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。 2.电路原理图 图4.6.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2).在“音频放大模块”区域中的SPK OUT端口上接上一个8欧的或者是16欧的喇叭; (3).把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开关”区域中的K1端口上; 4.程序设计内容 (1).信号产生的方法 500
[单片机]
AT89S51<font color='red'>单片机</font>报警器的设计
51 单片机串口的扩充方法
基本的 51 单片机有四个并行口,其中还包含了一个串行口。 当接口不够用的时候,大家就会想到,使用什么外接芯片来扩充。 但是,各种教材、参考书、网络文章,介绍扩充并行口的花样不少,扩充串行口的方法,几乎无人问津。 偶尔见到一个,也是使用 8250、8251 等“巨型”芯片来扩充的。 使用这些芯片,就要占用单片机很多的更为紧缺的并行口,基本上就是得不偿失。更别说还要设置复杂的控制字了。 做而论道使用简单的三态门,即可为单片机扩充串行口,仅仅占用单片机的一、二个引脚作为控制引线而已。 这个方法,在以前的各种书籍、杂志、网文中,都没有见到过,可以说是做而论道的独创。 呵呵,小小的自豪一下,请不要拍砖。 实际上
[单片机]
51 <font color='red'>单片机</font>串口的扩充方法
盛群推出32-bit通用型Flash微控制器HT32F125x系列
    为了因应市場上微處理器从8-bit与16-bit架构逐渐转移至32-bit的普遍趋势,盛群半导体推出了以ARM® Cortex™-M3为核心的第一款32-bit微控制器HT32系列产品。全新的32-bit通用型Flash 微控制器HT32F125x系列,最高运行速度可达72MHz (90 DMIPS),操作电压为2.7V~3.6V单一电源,并符合-40℃~85℃工业溫度范围,搭配盛群ISP (In-System Programming)及IAP (In-Application Programming)技术方案,可轻易升级韧体,提高生产效能与产品弹性。 HT32F125x系列的Flash容量为8K~32K Bytes,S
[工业控制]
基于DSP+MCU的列车滚动轴承故障诊断系统设计与应用
  滚动轴承是列车转动机件的支撑,也是铁路车辆上最容易危及行车安全的易损件。由于工作面接触应力的长期反复作用,极易引起轴承疲劳、裂纹、压痕等故障,导致轴承断裂,造成重大事故。轴承工作状态是否正常,对于列车的安全有着重大的影响。因此,开展列车滚动轴承故障诊断的研究对避免重大事故、促进经济发展具有相当大的意义。   1 系统总体设计   1.1 硬件系统   振动控制系统是一个典型的实时信号处理系统,需要对较复杂的信号进行处理。考虑到单片机的控制功能强,其总线位数少,运行速度相对较慢;而DSP(Digital Signal Processor)的运算能力强,总线宽度宽,控制功能相对较弱。为了提高系统的信号处理速度,便于对系统的
[单片机]
基于DSP+<font color='red'>MCU</font>的列车滚动轴承故障诊断系统设计与<font color='red'>应用</font>
基于AVR微控制器的电力机车智能辅保系统的实现
    摘要: 给出了以AVR微控制器为核心的电力机车智能辅保系统的设计方案,并介绍了系统硬件及软件的具体实现方法。     关键词: 智能辅保系统 AVR微控制器 硬件 软件 电气机车辅助系统中有劈相机、空气压缩机、通风机及制动风机等各种类型的电机。运行中为了防止出现短路、过流等异常情况而烧毁电机,通常配置辅助保护系统,起到及时监测电机故障并加以处理的作用。目前电力机车上安装的辅保系统都是模拟电路装置,系统硬件复杂,又不方便司机使用和维修。因此,设计一种实时性高、性能可靠的智能辅保系统替代原有的模拟电路装置势在必行。本文将介绍笔者开发的用于韶山型电力机车的智能辅助保护系统的设计及实现。 1 系统的主要功能
[传感技术]
助力工业机器人伺服控制 瑞萨电子发布RX72T系列MCU
32位RX72T系列MCU获得CoreMark®基准5V MCU评测最高成绩 为伺服电机带来专用硬件加速器及先进的控制功 能 全球领先的半导体解决方案供应商瑞萨电子株式会社(TSE:6723)宣布推出32位电机控制微控制器(MCU)RX72T系列产品,配备专用硬件加速器IP,以执行机器人和其它工业设备中电机控制所需的复杂、高速运算。RX72T系列产品提供卓越性能,在EEMBC®基准(注1)评测中获得1160 CoreMark 的高分——这是在200 MHz下运行的5V MCU的最高水平。 瑞萨电子工业自动化事业部副总裁 傅田明表示,“RX72T系列产品为我们针对工业机器人和电机控制而优化的丰富MCU产品线带来了领先的性
[物联网]
助力工业机器人伺服控制 瑞萨电子发布RX72T系列<font color='red'>MCU</font>
基于STC12C2051单片机的智能太阳能路灯设计
简介:太阳能路灯的应用具有重要的现实意义,尤其是靠小规模火力发电或季节性水力发电的地区,更应大力发展太阳能电力。太阳能路灯以其先进、稳定、智能、成熟的控制技术及显著的节能特性、简便的维护方式等特点得到推广。随着太阳能照明灯具产品的普及,很多应用项目存在质量和售后服务问题。 太阳能路灯的应用具有重要的现实意义,尤其是靠小规模火力发电或季节性水力发电的地区,更应大力发展太阳能电力。太阳能路灯以其先进、稳定、智能、成熟的控制技术及显著的节能特性、简便的维护方式等特点得到推广。随着太阳能照明灯具产品的普及,很多应用项目存在质量和售后服务问题。因此,需及时分析原因、规范市场,使太阳能路灯市场健康有序地发展。太阳能是地球上最为直接、普遍、
[单片机]
基于STC12C2051<font color='red'>单片机</font>的智能太阳能路灯设计
ARM超低功耗实体IP推动新一代MCU发展
      ARM日前推出可驱动新一代节能型微控制器(MCU)发展的超低功耗实体IP数据库。ARM 0.18um超低功耗数据库(uLL)具备ARM Cortex处理器系列的内建电源管理优势,结合台积电0.18um嵌入式闪存uLL/HDR「high data retention」制程,可协助系统单芯片(SoC)设计人员进一步降低功耗漏损,幅度可达0.18um G实作的10倍。       对于习惯采用多MCU系统(multiple MCU system approach)的公司而言,ARM数据库及ARM Cortex-M与Cortex-R设定档处理器是理想选择。透过超低功耗单一32位MCU及针对台积电0.18um uLL嵌入式闪
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved