用过16c552的朋友进来看一下
用16c552,使用查询方式。
再发送时无论thr里送任何数,发出来的都是00。
有知道的朋友指点一下啊。
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <uart.h>
#define uchar unsigned char
#define uint unsigned int
//#define ch 0x55
//******************************************定义分频系数
#define DLL_DATA 0xc0
#define DLM_DATA 0x00 //分频系数
sbit uart_reset=P1^4;
void uart_init(void)
{
//XBYTE[FCR2]=0x01;
//XBYTE[IER2]=0x00; //设置工作在查询方式
XBYTE[LCR2]=0x80; //设置波特率
XBYTE[DLL2]=DLL_DATA;
XBYTE[DLM2]=DLM_DATA; //定义UART1 分频系数,在1.8432M 时,波特率为9600BPS
XBYTE[LCR2]=0x03; //设置串口数据格式为:1位起始,8位数据,无校验
XBYTE[FCR2]=0x00; //允许并复位FIFO
XBYTE[FCR2]=0x00; //允许并复位FIFO
XBYTE[IER2]=0x00;
XBYTE[MCR2]=0x00;
}void c552_reset(void)
{
int i;
uart_reset=0;
for(i=0;i <10;i++)
{
_nop_();
}
uart_reset=1;
for(i=0;i <10;i++)
{
_nop_();
}
}main()
{
uchar ii=0;
delay5ms();
c552_reset();
uart_init();
XBYTE[FCR2]=0x01;
while(1)
{ XBYTE[THR2]=0x22;
delay5ms();
}
}
发表时间:2005年9月5日9:04:23