历史上的今天
返回首页

历史上的今天

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

正在发生

2018年01月03日 | 单片机教程实战7 串行应用编程实例

2018-01-03 来源:eefocus

1. 串口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就可以扩展一个并行口。
第二十二课 串行口应用编程实例
  例:用8051串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,可以靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通讯之前,都要先对控制寄存器SCON进行初始化。在方式0中将,将00H送SCON就可以了。
ORG 2000H
START: MOV SCON,#00H ;置串行口工作方式0
MOV A,#80H ;最高位灯先亮
CLR P1.0 ;关闭并行输出(避象传输过程中,各LED的"暗红"现象)
OUT0: MOV SBUF,A ;开始串行输出
OUT1: JNB TI,OUT1 ;输出完否
CLR TI ;完了,清TI标志,以备下次发送
SETB P1.0 ;打开并行口输出
ACALL DELAY ;延时一段时间
RR A ;循环右移
CLR P1.0 ;关闭并行输出
JMP OUT0 ;循环
  说明:DELAY延时子程序可以用前面我们讲P1口流水灯时用的延时子程序,这里就不给出了。
  二、异步通讯
org 0000H
AJMP START
ORG 30H
START:
mov SP,#5fh ;
mov TMOD,#20h ;T1: 工作模式2
mov PCON,#80h ;SMOD=1
mov TH1,#0FDH ;初始化波特率(参见表)
mov SCON,#50h ;Standard UART settings
MOV R0,#0AAH ;准备送出的数
SETB REN ;允许接收
SETB TR1 ;T1开始工作
WAIT:
MOV A,R0
CPL A
MOV R0,A
MOV SBUF,A
LCALL DELAY
JBC TI,WAIT1 ;如果TI等于1,则清TI并转WAIT1
AJMP WAIT
WAIT1: JBC RI,READ ;如果RI等于1,则清RI并转READ
AJMP WAIT1
READ:
MOV A,SBUF ;将取得的数送P1口
MOV P1,A
LJMP WAIT
DELAY: ;延时子程序
MOV R7,#0ffH
DJNZ R7,$
RET
END
  将程序编译通过,写入芯片,插入实验板,用通读电缆将实验板与主机的串口相连就可以实验了。上面的程序功能很简单,就是每隔一段时间向主机轮流送数55H和AAH,并把主机送去的数送到P1口。可以在PC端用串口精灵来做实验。串口精灵在我主页上有下载。运行串口精灵后,按主界面上的“设置参数”按钮进入“设置参数”对话框,按下面的参数进行设置。注意,我的机器上用的是串口2,如果你不是串口2,请自行更改串口的设置。
第二十二课 串行口应用编程实例
  设置完后,按确定返回主界面,注意右边有一个下拉列表,应当选中“按16进制”。然后按“开始发送”、“开始接收”就可以了。按此设置,实验板上应当有两只灯亮,6只灯灭。大家可以自行更改设置参数中的发送字符如55,00,FF等等,观察灯的亮灭,并分析原因,也可以在主界面上更改下拉列表中的“按16进制”为“按10进制”或“按ASCII字符”来观察现象,并仔细分析。这对于大家理解16进制、10进制、ASCII字符也是很有好处的。程序本身很简单,又有注释,这里就不详加说明了。
  三、上述程序的中断版本
org 0000H
AJMP START
org 0023h
AJMP SERIAL ;
ORG 30H
START:
mov SP,#5fh ;
mov TMOD,#20h ;T1: 工作模式2
mov PCON,#80h ;SMOD=1
mov TH1,#0FDH ;初始化波特率(参见表)
mov SCON,#50h ;Standard UART settings
MOV R0,#0AAH ;准备送出的数
SETB REN ;允许接收
SETB TR1 ;T1开始工作
SETB EA ;开总中断
SETB ES ;开串口中断
SJMP $
SERIAL:
MOV A,SBUF
MOV P1,A
CLR RI
RETI
END
  本程序没有写入发送程序,大家可以自行添加

推荐阅读

史海拾趣

Coil-Q Corporation公司的发展小趣事

随着全球环保意识的提高,Coil-Q积极响应绿色发展的号召,将环保理念融入公司的生产和经营中。公司投入大量资金研发环保材料和技术,优化生产工艺,降低能耗和排放。同时,Coil-Q还积极参与环保公益活动,推动行业的绿色转型。

Ava Electronics Corp公司的发展小趣事

随着市场的不断发展,AVA电子意识到只有不断创新才能在竞争中保持领先。于是,公司加大了在研发方面的投入,引进了一批高素质的研发人才,并与多所高校和研究机构建立了合作关系。经过数年的努力,AVA电子成功研发出了一系列具有自主知识产权的电子产品,这些产品在性能、稳定性和用户体验等方面都达到了行业领先水平。这些创新产品的推出,不仅提升了公司的市场地位,也为公司带来了可观的利润。

地博电子(DIBO)公司的发展小趣事

近年来,地博电子积极响应行业发展趋势,不断推进数字化转型和精益生产。在2022年,公司导入了精益生产系统,通过优化生产流程、降低库存和浪费等措施,进一步提高了生产效率和产品质量。同时,在2023年,地博电子还导入了OA/SAP信息化系统,开启了数字化转型之路。这些举措使得地博电子在电子材料行业中保持了领先地位,并为公司的未来发展奠定了坚实基础。

请注意,以上故事概要仅为地博电子(DIBO)公司发展历程中的部分关键事实,更多详细信息和数据可参考公司官方资料。

博通集成(BEKEN)公司的发展小趣事

为了加快市场拓展和技术创新步伐,博通集成积极寻求与产业链上下游企业的战略合作。公司与多家知名企业建立了紧密的合作关系,共同推动无线通讯技术的发展和应用。通过战略合作,博通集成不仅获得了更多的市场资源和技术支持,还实现了与合作伙伴的共赢发展。

HCC Industries公司的发展小趣事

近年来,随着全球对环境保护和可持续发展的重视,HCC Industries积极响应号召,制定了绿色可持续发展战略。公司加大了对环保技术和绿色产品的研发投入,推出了一系列符合环保标准的微电子部件产品。同时,HCC还通过优化生产工艺和节能减排措施,降低了生产过程中的能源消耗和污染排放。这一战略不仅赢得了客户和消费者的广泛赞誉,也为公司带来了更加可持续的发展前景。

Digitron公司的发展小趣事

Digitron公司非常重视产品的品质和售后服务。公司建立了严格的质量控制体系,确保每一台出厂的设备都符合高标准的质量要求。同时,Digitron公司还提供全方位的售后服务,包括技术支持、维修保养等,确保客户在使用过程中得到及时、有效的帮助。这种对品质的坚持和对客户的关怀使Digitron公司在客户中树立了良好的口碑。

问答坊 | AI 解惑

付费寻求电子高手解决问题

老板有一个奇怪的想法,要我去实现,我自己是电脑专业的,对电子一点都不懂,所以在此请教各位大侠,我们愿意付钱来完成这个电路,也让你们在经济不好的环境下争点外快. 要求: 1\\我们有很多注塑机,想取得每个注塑机的真实情况,如一个产品的生产周期 ...…

查看全部问答>

keil4注册问题(求解)

为什么我用注册机注册了,还是有2K限制的提示框????…

查看全部问答>

OpenCV往Vxworks下移植

请教,opencv能够移植到vxworks下么?…

查看全部问答>

关于sd卡更新nk

用sd卡更新nk是不是过程是不是: 把要更新的nk.bin放到sd卡中 -》eboot根据全局变量从sd卡中读取nk.bin  ->  eboot 把在sd卡中读到的nk.bin写到flash中(这步不知道写到flash中是一bin的格式还是nb0的格式) -》到这里更新nk ...…

查看全部问答>

Marvell-PXA168开发板

Marvell-PXA168开发平台简介: 一:系统主要特性: ------------------------------------------- 1:内核总线频率1.2G,L1/L2 64K两级高速缓存 2:支持DDR2(1066M)最大DDR2访问速度 3:Mini PCI-E2接口 4:GPS 内置加速器 5:高速DMA通道 6:2D硬件 ...…

查看全部问答>

(ARM7)当某个模块以10ms速度更新数据时,使用轮询模式还是中断模式?

大家好,本人刚刚接触ARM7不久,原来也没有做过单片机,现在做嵌入式脑子里有点浆糊,希望大家指点下。 我的板子使用NXP2478芯片,8M的内存。 UART连接的有GPS(数据采集频率为1秒),GSM(发送数据与接收数据频率都为1分钟),KWP2000(汽车总线 ...…

查看全部问答>

请教关于NK大小的问题

请问如果想把NK.NB0调到36.3M左右,需要修改哪些位置???? 现在我在config.bib中将NKSIZE设置成2450000,在platform->setting中设置可以大于32M限制 但是在下载的过程中发现 在flashwrite中             &nbs ...…

查看全部问答>

手机操作系统问题

智能手机操作系统主要是symbian、linux和windows mobile,但有些手机虽然不是智能手机,但也支持第三方java程序的开发和运行,比如象索爱的很多手机,那么这种手机里面应该也是有操作系统的,由于手机本身也是一款嵌入式设备,而一般嵌入式设备其操 ...…

查看全部问答>

??谁能回答我这个问题

不能捕捉到CArchiveException 请各路英雄指教 大家好, 最近我遇到一个问题,在我的应用程序中(MFC工程), 里面有一句代码,是对文件读写的,如果这儿有一个空文件(里面什么内容也没有), 但我们又对它进行了读操作(调用CArchive >>进行 ...…

查看全部问答>

电子设计大赛预测题

本帖最后由 paulhyde 于 2014-9-15 04:04 编辑 电子设计大赛预测题,希望对各位参赛选手有用  …

查看全部问答>