#include <intrins.h>
#include "config.h"
#include "stdio.h"//用于调用printf函数原型
/* 串口配置函数,baud-通信波特率 */
void ConfigUART(unsigned int baud)
{
RS485_DIR = 0; //RS485设置为接收方向
g_rs485_uart_pop_ptr = 0; //当 g_uart_pop_ptr + 1 = g_uart_push_ptr 时缓存为空
g_rs485_uart_push_ptr = 1; //此处加1是指针加1,即计算下一个指针
rs485_sbuf.out_index = 0; //----
rs485_sbuf.in_index = 1;
rs485_sbuf.send_runing = FALSE;
ACC = P_SW1;
ACC &= ~(S1_S0 | S1_S1); //S1_S0=0 S1_S1=0
P_SW1 = ACC; //(P3.0/RxD, P3.1/TxD)
SCON = 0x50; //配置串口为模式1
AUXR = 0x40; //定时器1为1T模式
AUXR &= 0xFE;
TMOD = 0x00; //定时器1为模式0(16位自动重载)
TL1 = (65536 - (FOSC/4/baud)); //设置波特率重装值
TH1 = (65536 - (FOSC/4/baud))>>8;
ET1 = 0; //禁止T1中断
ES = 1; //使能串口中断
TR1 = 1; //启动T1
EA=1;
}
当调用这个ConfigUART(unsigned int baud);写入9600、57600时通过串口助手接收发关送数据正确,当写入115200时通过串口助手接收发关送数据不对
如果把上面的
TL1 = (65536 - (FOSC/4/baud)); //设置波特率重装值
TH1 = (65536 - (FOSC/4/baud))>>8;
改为:
TL1 = (65536 - (FOSC/4/115200)); //设置波特率重装值
TH1 = (65536 - (FOSC/4/115200))>>8;
时通过串口助手接收发关送数据正确。
请各位大神指教函数那里错了!!!!!
|