历史上的今天
今天是: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
上一篇:RS232通信程序
史海拾趣
|
求一篇关于这个题目的毕业论文 谢谢! 邮箱yixianfeng-1987@163.com [ 本帖最后由 yixianfeng 于 2009-5-17 17:59 编辑 ]… 查看全部问答> |
|
智能家居开始流行于上世纪七十年代的美国,并且在欧洲有很大的应用。近几年来智能家居产品像普通商品一样被摆在超市里销售。进入二十一世纪,在新加坡、韩国、日本及我国香港、澳门等地也开始应用。什么是智能家居? 一、概念解析 ...… 查看全部问答> |
|
大家好! 现在正在做一个通过无线网络进行文件传输方面的项目,想让内核空间的接收函数在后台一直运行,然后数据到来时用netlink通过用户态接收,然后写入文件。 主要问题:如何实现内核空间一个函数在后台一直运行,而又不影响用户态的操作。 ...… 查看全部问答> |
|
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,怎样搭建模型才能实现数据的双向通讯? 求大神指导~… 查看全部问答> |




