串口自动波特率设置程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

串口自动波特率设置程序
[日期:2008-05-23 ] [来源:net 作者:佚名] [字体:大 中 小] (投递新闻)

来源:网上转载 作者:

在另外一套程序中并没有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


参考链接:/news/2008-05/5516.htm

相关文档
最新文档