历史上的今天
返回首页

历史上的今天

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

正在发生

2018年01月15日 | 串口自动波特率设置程序

2018-01-15 来源:eefocus

在另外一套程序中并没有ISP功能,要实现程序的更新功能,要了解芯片的IAP调用,这一点在芯片的资料上也有介绍,然后就是接收上位机的程序,一般是通过串口,下面介绍一下P89C51RD2的串口自动波特率设置,程序源码主要摘录于《 单片机 与嵌入式系统》,现在贴出完整的源码:

        ;==============================
        ;初始化串口,自适应波特率;上位机
        ;发送两个字符'U',如果接收到一个
        ;字符'U',那么初始化成功
        ;==============================
SERIAL_INIT:
        MOV     TMOD,#02H ;T1工作模式2,定时器
        MOV     T2CON,#30H ;T2工作为串行口波特率发生器
        CLR     A
        MOV     TL2,A
        MOV     TH2,A         ;TH2=0000H
        JNB     P3.0,$       ;若P3.0=0 则等待直到其变为1
        JB       P3.0,$     ;若P3.0=1 则等待直到下降沿到来
        SETB     TR2         ;启动T2定时器
        JNB     P3.0,$       ;若P3.0=0 则等待直到上升沿到来
        CLR     TR2

        ;计算波特率
        MOV     A,TL2
        SWAP   A
        ANL     A,#0FH       ;取TL2高四位
        MOV     R0,A
        MOV     A,TH2
        SWAP   A
        ANL     A,#0F0H     ;取TH2低四位
        ORL     A,R0
        MOV     R0,A         ;组合后送入R0
        MOV     A,TH2
        SWAP   A
        ANL     A,#0FH       ;取TH2高四位
        MOV     R1,A
        MOV     A,R0   ;以上程序实现T2中数据除以16送R1和R0保存
        CPL A         ;低位取反
        MOV     TL2,A
        MOV     RCAP2L,A
        MOV     A,R1
        CPL A         ;高位取反
        MOV     TH2,A
        MOV     RCAP2H,A
        ;校验波特率
        SETB     TR2
        MOV     SCON,#52H   ;串行口方式1,TI=1
RREV0:   ACALL   REV_SEND0 ;接收一个字符"U"
        CJNE     A,#55H,RREV0     ;判断A="U"?
        RET           ;如果收到字符"U",则串口初始化完成

        ;==============================
        ;接收一个数据并返回给上位机
        ;==============================
REV_SEND0:
        JNB     RI, $
        CLR     RI
        MOV     A,SBUF       ;接收数据
        JNB     TI,$
        CLR     TI
        MOV     SBUF,A       ;发送数据
        RET


推荐阅读

史海拾趣

GE Industrial Solutions公司的发展小趣事
当输入信号过大时,运放可能进入饱和状态,导致输出信号失真。解决方法包括选择合适的运放增益和输入电阻,以及加入限幅电路。
Axiohm公司的发展小趣事

随着国内市场的饱和,Axiohm公司开始寻求国际化发展。公司制定了详细的国际化战略,先后在亚洲、欧洲和北美设立了分支机构和研发中心。通过与当地企业的合作,Axiohm成功打入多个国际市场,并根据不同地区的需求进行产品定制。这一战略不仅拓宽了公司的销售渠道,还提升了品牌知名度。

Auris公司的发展小趣事

2019年,强生公司以34亿美元的价格收购了Auris Health。这次收购对于双方来说都具有重要意义。对于Auris而言,它获得了强大的资金支持和市场资源,有助于加速其产品的市场推广和技术研发。对于强生来说,它借此机会获得了Auris在呼吸道手术和肺癌检测方面的先进技术,进一步巩固了其在医疗领域的领先地位。

FOSLINK公司的发展小趣事

面对全球气候变化的严峻挑战,FOSLINK公司积极响应国家关于绿色发展的号召,将绿色转型作为企业发展的重要方向。公司致力于研发和生产低能耗、环保型的电子产品,并不断优化生产工艺流程,减少资源消耗和环境污染。同时,FOSLINK还积极推广绿色供应链管理,与供应商和客户共同构建绿色、低碳的产业链生态。这一系列的绿色转型举措,不仅彰显了FOSLINK的社会责任感,也为其赢得了更多消费者的青睐和支持。

BOPLA公司的发展小趣事

在国内市场取得一定成绩后,BOPLA开始将目光投向海外市场。通过参加国际电子展会、与海外客户建立合作关系等方式,公司成功将产品打入国际市场。同时,BOPLA还积极调整产品策略,根据不同国家和地区的市场需求,推出定制化的电子元件产品,进一步扩大了市场份额。

COTO TECHNOLOGY公司的发展小趣事

COTO TECHNOLOGY的故事始于1917年,当时它在美国罗德岛州的普罗维登斯以Coto Coil Incorporated的名字诞生,专注于线圈绕组的设计与制造。这个初创公司凭借对技术的深入理解和对质量的执着追求,逐渐在电子行业中崭露头角。它的线圈绕组产品以高精度、高稳定性而受到市场的青睐,为公司的初步发展奠定了坚实的基础。

问答坊 | AI 解惑

单片机在交通灯控制系统中的应用

求一篇关于这个题目的毕业论文 谢谢! 邮箱yixianfeng-1987@163.com [ 本帖最后由 yixianfeng 于 2009-5-17 17:59 编辑 ]…

查看全部问答>

未来无限好 智能家居前景浅析

智能家居开始流行于上世纪七十年代的美国,并且在欧洲有很大的应用。近几年来智能家居产品像普通商品一样被摆在超市里销售。进入二十一世纪,在新加坡、韩国、日本及我国香港、澳门等地也开始应用。什么是智能家居?    一、概念解析 ...…

查看全部问答>

各位帮我看看下面的电路啊

Y1为超声波探头 去掉D3 Y1两端的电压为15v方便 没有去掉时 Y1在示波器上显示没有信号 怎么回事:L…

查看全部问答>

evc 如何弹出另一窗口界面???

各位大侠,我想在一个界面上按一个按钮,弹出另一界面,请问应该使用什么函数去调用产生另一个界面呢?…

查看全部问答>

关于无线网络的设计

小弟现在接到上头一份任务,就是设计一个无线网络协议出来。 可能有几百个节点(Node),每个结点之间要能互相通信,网络使用无线电波作为传输的介质。在同一时刻只能有一个节点发送数据。 小弟以前都是做软件的,TCP/IP网络协议倒是研究过,但是 ...…

查看全部问答>

如何实现内核空间一个函数在后台一直运行!

大家好! 现在正在做一个通过无线网络进行文件传输方面的项目,想让内核空间的接收函数在后台一直运行,然后数据到来时用netlink通过用户态接收,然后写入文件。 主要问题:如何实现内核空间一个函数在后台一直运行,而又不影响用户态的操作。 ...…

查看全部问答>

LED开关电源选用及使用注意事项

replyreload += \',\' + 775946;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

matlab很好的教程(我当做一本工具书用)

M AT L A B是一个可视化的计算程序,被广泛地使用于从个人计算机到超级计算机范围内的各种计算机上。 M AT L A B包括命令控制、可编程,有上百个预先定义好的命令和函数。这些函数能通过用户自定义函数进一步扩展。M AT L A B有许多强有力的命令。 ...…

查看全部问答>

请问这两个可控硅控制电路功能上有什么区别?

请问这两个可控硅控制电路功能上有什么区别?        …

查看全部问答>

使用MATLAB实现DSP28335中SCI数据通讯的模型建立以及C代码的生成

MATLAB里面就两个SCI模块SCI Receive & SCI Transmit,怎样搭建模型才能实现数据的双向通讯? 求大神指导~…

查看全部问答>