SetTimer2Baudraye((u16)(65536UL - (MAIN_Fosc / 4) / Baudrate2));
这句就是定时器2作为时钟脉冲的设置:
是怎么来的? 18.4.5串口2 模式1,模式1波特率计算公式 当软件设置S2CON的S2SMO、S2SM1为"01”时,串行口2则以模式1进行工作。此模式为8位1 UART格式,一帧信息为10位:1位起始位,8位数据位(低位在先)和1位停止位。波特率可变,即可根据需要进行设置波特率。TxD2为数据发送口,RxD2为数据接收口,串行口全双工接受/发送。模式1 的发送过程:串行通信模式发送时,数据由串行发送端 TxD2输出。当主机执行一条写S2BUF的指令就启动串行通信的发送,写“S2BUF”信号还把“1”装入发送移位寄存器的第9位,并通知TX控制单元开始发送。移位寄存器将数据不断右移送TxD端口发送,在数据的左边不断移入"0”作补充。当数据的最高位移到移位寄存器的输出位置,紧跟其后的是第9位“1”,在它的左边各位全为“0”,这个状态条件,使TX控制单元作最后一次移位输出,然后使允许发送信号“SEND”失效,完成一帧信息的发送,并置位中断请求位S2TI,即S2TI-1,向主机请求中断处理。 模式1的接收过程:当软件置位接收允许标志位S2REN,即S2REN=1时,接收器便对RxD2端口的信号进行检测,当检测到RxD2端口发送从“1”-"0”的下降沿跳变时就启动接收器准备接收数据,并立即复位波特率发生器的接收计数器,将1FFH装入移位寄存器。接收的数据从接收移位寄存器的右边移入,已装入的 1FFH 向左边移出,当起始位"0"移到移位寄存器的最左边时,使 RX 控制器作最后一次移位,完成一帧的接收。若同时满足以下两个条件: S2RI=0;S2SM2=0 或接收到的停止位为 1。 则接收到的数据有效,实现装载入S2BUF,停止位进入S2RB8,S2RI标志位被置1,向主机请求中断,若上述两条件不能同时满足,则接收到的数据作废并丢失,无论条件满足与否,接收器重又检测RxD2端口上的"1"-"0"的跳变,继续下一帧的接收。接收有效,在响应中断后,S2RI标志位必须由软件清0。 通常情况下,串行通信工作于模式 1 时,S2SM2 设置为"0"。
看看要求的脉冲时序图:
|