我用tl16c554扩展串口,想先向串口a发送数据,但是接受不到发出的数据,示波器也没有量到任何信号,请大家帮忙看看错在哪里。 #include<reg51.h> sbit P1_0=P1^0; #define uchar unsigned char #define address_a 0x8000 #define address_b 0x8010
void delay() { unsigned int i,j; for(i=0;i<100;i++) for(j=0;j<1000;j++); }
void tl16c554_inita()//串口a的初始化 { uchar *p; p=(uchar *)address_a; *(p+3)=0x80;//置除数访问锁存器标志DLAB=1,访问波特率因子寄存器 *p=0x03;//设置波特率为9600bps *(p+1)=0x00; *(p+3)=0x1b;//无奇偶校验,停止位1,8位数据 *(p+2)=0x01;//使能FIFO,置接收触发字节数01 }
//tl16c554的发送,从csa口发送 void tl16c554_send(uchar ch) { uchar *p1; p1=(uchar *)address_a; *p1=ch; return; }
void main() { uchar ch='a'; tl16c554_inita(); while(1) { tl16c554_send(ch); P1_0=0;//检测程序运行,令灯一亮一灭 delay(); P1_0=1; delay(); } } 指示灯的工作完好,程序运行时灯一亮一熄 |