历史上的今天
返回首页

历史上的今天

今天是:2025年01月19日(星期日)

正在发生

2021年01月19日 | 8051单片机教程第二十二课:串行口应用编程实例

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


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


推荐阅读

史海拾趣

Heidenhain Corp公司的发展小趣事

面对电子行业日益增长的自动化需求,海德汉公司凭借其丰富的自动化解决方案,助力多家电子企业实现了生产线的智能化升级。某大型电子制造厂采用海德汉的自动化控制系统和光栅尺技术,对生产线进行了全面改造。改造后的生产线实现了从原材料上料到成品下线的全自动化作业,大大提高了生产效率和产品质量稳定性。同时,通过集成海德汉的MES系统,实现了生产数据的实时监控和追溯,为企业的精细化管理提供了有力支持。

Ceramics公司的发展小趣事

“全球陶瓷”公司凭借其卓越的产品质量和国际化战略,成功拓展了海外市场。该公司积极参与国际展览和交流活动,与多国电子企业建立了合作关系。同时,全球陶瓷还针对不同国家和地区的市场需求,推出了定制化的陶瓷电子材料解决方案。这一国际化战略不仅提升了公司的品牌影响力,也为其在全球范围内的业务拓展提供了有力支持。

Corsair Electrical Connectors Inc公司的发展小趣事

Corsair Electrical Connectors Inc公司自创立之初,便专注于电气连接器的制造。公司创始人凭借其深厚的行业经验和敏锐的市场洞察力,准确把握了连接器在电子行业中的重要地位,并决定以此为切入点,打造一家专业的连接器制造商。在创立初期,Corsair面临着资金短缺、技术落后等多重困难,但创始人凭借坚定的信念和不懈的努力,带领公司逐步走上了正轨。

FORMOSA公司的发展小趣事

在半导体技术日新月异的时代,一家名为“FORMOSA半导体科技”的公司凭借其在先进制程技术上的突破,迅速在行业内崭露头角。该公司专注于研发和生产高性能的处理器和存储器芯片,为智能手机、数据中心等高端应用提供核心动力。通过持续的研发投入和与全球顶尖科技公司的合作,FORMOSA半导体科技成功打破了多项技术壁垒,其产品在市场上赢得了广泛赞誉。公司还积极响应绿色环保的号召,推出了一系列低功耗、高效率的半导体解决方案,为可持续发展贡献力量。

天钰(FITIPOWER)公司的发展小趣事

随着互联网和电子商务的兴起,一家名为“FORMOSA电子商城”的平台应运而生。该平台利用先进的互联网技术,为电子产品制造商、分销商和消费者搭建了一个高效、便捷的在线交易平台。FORMOSA电子商城不仅提供丰富的电子产品选择,还通过智能化的推荐系统和优质的客户服务,为用户提供个性化的购物体验。平台还积极推动供应链的数字化转型,帮助合作伙伴优化库存管理、提高运营效率。在短短几年内,FORMOSA电子商城便成为了电子行业内知名的电子商务品牌。

Calmos Systems Inc公司的发展小趣事

为了进一步扩大市场份额,Calmos Systems Inc公司积极寻求与行业内外的合作伙伴建立合作关系。公司与多家知名企业签订了战略合作协议,共同开发新产品、拓展新市场。同时,公司还积极参加各类行业展会和交流活动,与业内同行进行深入交流,了解行业动态和发展趋势。通过这些努力,公司的品牌知名度和影响力不断提升,为公司的长期发展打下了坚实的基础。

问答坊 | AI 解惑

电路板设计求救?急〉〉〉〉〉〉。

小弟要设计一电路板,输出要求bnc接口的,求助各位高手直接焊到板子上的bnc接口的型号,及封装?先谢拉。…

查看全部问答>

这样的干扰怎么解决?请赐教

本人设计的工业仪表,遇到这样的问题:输入信号0-20MV。当用手触摸输入端子的时候,显示值会波动,这是什么干扰(好象是串模干扰),如何解决?注明:信号是经过了2个模拟开关(CD4051),由OP07放大 再采样。…

查看全部问答>

怎样写testbench

前段时间看到有人在问,现分享下 有vhdl的testbench详细例子,verilog的谁有,给分享下…

查看全部问答>

实在不想干了,怎么找老板要年终奖

最近很郁闷,实在不想干了,想拿年终奖走人。省得年底又赶上春运高峰,想问老板要年终奖,怎么说比较好啊?         多谢多谢。…

查看全部问答>

晶振的好坏鉴别方法

晶振的好坏鉴别方法…

查看全部问答>

LPC1114资料汇总

LPC1114 datasheet深度解析LPC1100低功耗设计的七个秘密以LPC1100产品进行设计32位MCU开发全攻略上32位MCU开发全攻略下LPC1000 系列 Q&A及支持 …

查看全部问答>

pxa3XX 从CF卡上启动nk.bin 的bootloader

    请问各位大侠有谁做过pxa310或者pxa270的bootloader 要求从CF卡启动nk.bin       我应该用什么软件来编译,用wce6.0 还是ARM提供的AXD     是不是wce6.0下生成bootimage.nb0 就是bootloader 我用仿 ...…

查看全部问答>

急急急~~

各位大哥,小弟我最近在学嵌入式,用的是ARM7 S3C44BOX,最近碰到一个问题,本人想从CF卡上面下载数据到主机上,但是试验机上插上CF卡后,电脑没检测新硬件设备啊什么的,也就是说我的程序美和CF卡联系上,我是通过USB线连接试验机和电脑的,我不知 ...…

查看全部问答>

上电瞬间会有个尖峰

                                 有些口线上电的瞬间会产生一个时间很短的尖峰,没弄明白。请香主解答一下,谢谢!…

查看全部问答>

STVP的缺陷!

经过验证,STVP软件对STM32烧录的支持有重大缺陷.版本是3.2.0 问题是 1.    当不使用STVP的"project"菜单建立并打开STP工程文件时,只通过configure选择STLINK及STM32型号,然后通过open打开一个.HEX文件进行下载,可以烧录STM32( ...…

查看全部问答>