波特率设置方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
T2_BTL28800: ;用T2作波特率发生器的初始化设置
MOV 98H,#01100011B ;98H=SCON 仿真P89C664时不识别SCON
; MOV SCON,#01100011B ;串行口工作为方式1,位9(停止位)必须为1接收才有效,发送位9预设为1(方式1时自动设置)
;TI=1为不用定时器1作波特率用定时器2(位TI位未理解清楚)LI=1
MOV PCON,#00000000B ;波特率不加倍
;MOV PCON,#10000000B ;波特率加倍
MOV T2MOD,#00000000B ;定时不输出
MOV T2CON,#00110100B ;T2用做发送接收时钟,置RCLK接收时钟与TCLK发送时钟,TR2=1启动T2,定时且自动重装
MOV RCAP2H,#0FFH ;12M 8052
MOV RCAP2L,#LOW(0FFFFH-13) ;12M
;MOV RCAP2L,#LOW(0FFFFH-(13*2)) ;24M
; CLR TR2 ;仿真P89C664时不识别TR2
CLR T2CON.2 ;TR2 ;仿真P89C664时不识别TR2
MOV TH2,#0FFH ;12M 8052
MOV TL2,#LOW(0FFFFH-13) ;12M
;MOV TL2,#LOW(0FFFFH-(13*2)) ;24M
; SETB TR2 ;仿真P89C664时不识别TR2
SETB T2CON.2 ;TR2 ;仿真P89C664时不识别TR2
RET
;T2计算公式:;12M/(32*(65536-(RCAP2H,RCAP2L)))=28800 8051式
; ( 13 ) 78
;===================================
;T1_BTL4800: ;用T1作波特率发生器的初始化设置
; MOV SCON,#01101000B ;串行口工作为方式1,位9(停止位)必须为1接收才有效,发送位9预设为1(方式1时自动设置)
;(位TI位未理解清楚)
; MOV PCON,#00000000B ;波特率不加倍
; MOV TMOD,#00100000B ;T1工作于方式2为8位重装
; MOV TH1,#0F9H
; MOV TL1,#0F9H
; RET
;SCON 串行通信控制寄存器
; D7 D6 D5 D4 D3 D2 D1 D0
;SM0 SM1 SM2 REN TB8 RB8 TI RI
;(1)SM0、SM1:串行口工作方式控制位。
;SM0,SM1 工作方式
;00 方式0-波特率由振荡器频率所定:振荡器频率/12
;01 方式1-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32
;方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。其中的起始位
;和停止位在发送时自动插入的。
;输出:当CPU执行一条指令将数据写入发送缓冲SBUF且TI=0时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由
;硬件置位TI。
;输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一
;帧数据。只有当8位数据接收完,并检测到高电平停止位后,只有满足①(RI)=0;②(SM2)=0或接收到的第9位数据为1时,停止位才
;进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和
;SM2标志
;10 方式2-波特率由振荡器频率和SMOD所定:2SMOD ×振荡器频率/64
;11 方式3-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32
;(2)SM2:多机通信控制位。< br> 多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于
;方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则
;会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。
;工作于方式0时,SM2必须为0。方式1时:只有当接收到第9位数据(RB8)为1(停止位)时,置位RI
;(3)REN:允许接收位。< br> REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
; REN:接收允许控制位。由软件置位(REN=1)才允许接收,又由软件清O(REN=0)来禁止接收。
;(4)TB8:发送接收数据位8。< br> 在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,
;TB8: 可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。
;并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
;(5)RB8:接收数据位8。
;在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
;(6)TI:发送中断标志位。
;TI:发送中断标志。发送数据前必须软件清0,发送过程中TI一直为0,当发送完一帧数据后,由硬件自动置1。如果要再发送,
;必须用软件再清0。在编写串行通信程序的时候,可以使用软件查询TI的方法获得数据是否已发送完毕
;可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发
;送结束,TI可由软件清“0”。亦可申请中断
;(7)RI:接收中断标志位。
;RI:接收中断标志位。接收数据前必须软件清0,接收过程中RI一直为0,当接收完一帧数据后,由硬件自动置1。如果要再接收,
;必须用软件再清0。在编写串行通信程序的时候,可以使用软件查询RI的方法获得数据是否已接收完毕。
;可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。亦可申请中断
;在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位
;默认为SMOD=0。
;定时器T1工作于方式2:溢出所需周期数=256-X 波特率=4800时(SMOD=1 TH1初值=F3H TL1初值=F3H)晶振12HMZ
;T2CON 定时器控制寄存器
;B7 B6 B5 B4 B3 B2 B1 B0
;TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2
;TF2:T2溢出中断标志。TF2必须由用户程序清“0”。当T2作为串口波特率发生器时,TF2不会被置“1”。
;EXF2:定时器T2外部中断标志。EXEN2为1时,当T2EX(P1.1)发生负跳变时置1中断标志DXF2,EXF2必须由用户程序清“0”。
;TCLK:串行接口的发送时钟选择标志。TCLK=1时选用T2(TCLK=0时选用T1)为接收波特率发生器。
;RCLK:串行接口的接收时钟选择标志。RCLK=1时选用T2(TCLK=0时选用T1)为发送波特率发生器。
;EXEN2:T2的外部中断充许标志。
;C/T2:外部计数器/定时器选择位。C/T2=1时,T2为外部事件计数器,计数脉冲来自T2(P1.0);C/T2=0时,T2为定时器,振荡脉
;冲的十二分频信号作为计数信号。
;TR2:T2计数/定时控制位。TR2为1时充许计数,为0时禁止计数。
;CP/RL2:捕捉和常数自动再装入方式选择位。为1时工作于捕捉方式,为0时T2工作于常数自动再装入方式。当TCLK或RCLK为1时,
;CP/RL2被忽略,T2总是工作于常数自动再装入方式。