串口通信程序设计步骤 1、计算波特率(查阅工作手册,定时器初值) 2、定时器初始化,串行口初始化 3、主程序需要完成的事情 4、中断服务子程序 1、定时器初值:TL1=0XFD 2、SCON=0X50: TMOD=0X20; PCON=0X00: TH1=0XFD; TL1=0XFD; TI=RI=0; TR1=1; ES=1; EA=1; 6
6 串口通信程序设计步骤 1、计算波特率(查阅工作手册,定时器初值) 2、定时器初始化,串行口初始化 3、主程序需要完成的事情 4、中断服务子程序 1、定时器初值:TL1=0XFD 2、SCON=0X50; TMOD=0X20; PCON=0X00; TH1=0XFD; TL1=0XFD; TI=RI=0; TR1=1; ES=1; EA=1;
主程序:根据要求,灯闪烁一次。发送字符。 延时子程序 发送字符子程序 接收中断服务子程序 1
7 主程序:根据要求,灯闪烁一次。发送字符。 延时子程序 发送字符子程序 接收中断服务子程序
6.3.3方式2 方式2和方式3,为9位异步通信接口。每帧数据为11位,1 位起始位0,8位数据位(先低位),1位可程控为1或0的第9位 数据和1位停止位。方式2、方式3帧格式如图6-18所示。 起始位 DO D1 D2 D3 D4 D5 D6 D7 D8 停止位 图6-18方式2、方式3的帧格式 方式2波特率=200 64 X fosc
8 6.3.3 方式2 方式2和方式3,为9位异步通信接口。每帧数据为11位,1 位起始位0,8位数据位(先低位),1位可程控为1或0的第9位 数据和1位停止位。方式2、方式3帧格式如图6-18所示。 图6-18 方式2、方式3的帧格式 8
1.方式2发送 发送前,先根据通信协议由软件设置TB8(如奇偶校验位或 多机通信的地址/数据标志位),然后将要发送的数据写入SUF, 即启动发送。TB8自动装入第9位数据位,逐一发送。发送完毕, 使T位置“1”。 发送时序如图6-19所示。 TX时钟 L几几几几几几L几几几 写SBUF SEND IXD 起始位D0D1D2 D3 D4 D5 D6 D7 TB8 停止位 TI 图6-19 方式2和方式3发送时序
9 1.方式2发送 发送前,先根据通信协议由软件设置TB8(如奇偶校验位或 多机通信的地址/数据标志位),然后将要发送的数据写入SBUF, 即启动发送。TB8自动装入第9位数据位,逐一发送。发送完毕, 使TI位置“1”。 发送时序如图6-19所示。 9 图6-19 方式2和方式3发送时序
【例6-1】方式2发送在双机串行通信中的应用 下面的发送中断服务程序,以TB8作为奇偶校验位,偶校验 发送。数据写入SBUF之前,先将数据的偶校验位写入TB8 (设第2组的工作寄存器区的R0作为发送数据区地址指针)。 PIPTI: PUSH PSW ;现场保护寄存器PSW和Acc PUSH Acc SETB RS1 ;选择第2组工作寄存器区 CLR RSO CLR TI ;发送中断标志清“0” MOV A,@R0 ;取要发送的数据 MOV C,P ;校验位P送T8,采用偶校验 MOV TB8,C ;P=1,则校验位TB8=1,P=0,则TB8=0,保证偶校验 MOV SBUF,A ;A中的数据写入发送SBF,同时发送I8校验位 INC RO ;数据指针加1 POP Acc ;恢复现场 POP PSW RETI ;中断返回 10
10 【例6-1】方式2发送在双机串行通信中的应用 下面的发送中断服务程序,以TB8作为奇偶校验位,偶校验 发送。数据写入SBUF之前,先将数据的偶校验位写入TB8 (设第2组的工作寄存器区的R0作为发送数据区地址指针)。 10