我根据例程,改了个十分简单的串口通信程序,该方法我通过proteus仿真,能够实现功能,但是下载到SH88f516中,就出问题了,按理说,即使波特率,和停止位位数这些不正确,通过串口助手仍然能够收到数据才是,虽然数据可能是错的。经过调试发现,有块PCB上是SBUF一直不能够得到值,但是TI会变化;有一块则是SBUF能得到一次赋值,但一直在执行while(TI == 0);即TI一直无法变成1.
使用EUART1,没有问题。这是我串口没有配置好?请各位不吝赐教!
主要的配置程序如下:
T2MOD = Bin(00000000); //设置Timer2用于产生波特率(baudrate generator
T2CON = Bin(00110000);
SCON = Bin(11010000);
RCAP2L = LOBYTE(UART_BAUDRATE);
TL2 = LOBYTE(UART_BAUDRATE);
RCAP2H = HIBYTE(UART_BAUDRATE);
TH2 = HIBYTE(UART_BAUDRATE);
//////////////////////////////////////////////////////
while(1)
{
SBUF = 10;
while(TI == 0);
TI = 0;
} |