51 模拟串口 115200
单片机一般只有一个串口,有时需要两个串口,本例采用模拟GPIO方法,使用115200波特率,测试通讯正常,时序精准。
; /*UART1 DRIVERS
; – 115200Boundrate, 1 start bit, 8 data bit, 1 stop bit, no verify
; – 22.1184MHzcrystal, 12 machine clock
; */
需要关掉中断,send,recv的数据需要在xdata。
send之后,如果对方回应很快,最好立即recv,避免数据丢失,
当然如果回应太快了(小于10us),是收不到的。
如果应答时间超过142210.95us,需要自己再延时,或不断查询。
程序下载:http://download.csdn.net/detail/lxj_com2006/4089348
欢迎交流:QQ 67016879 EMAIL: lxj_com@163.com
文件列表:
包含两个文件,uart1.h 头文件
uart1.src汇编文件,通过KEIL C由c文件编译出来,再经过修改(算指令周期以匹配115200 Timing)
在KEIL中使用方法:
将uart1.src文件加入工程,在需要调用的c文件 #include "uart1.h",注意包含路径,依据自己的工程目录而定。
调用例子:
void uart_demo()
{
unsigned char ret;
unsigned char xdata buffer[16];
buffer[0] = 0x55;//刚好可以看每个bit
buffer[1] = 0x00;
buffer[2] = 0xff;
buffer[3] = 0xaa;
EA = 0;//关中断
UART1_Send(buffer,4);
ret=UART1_Recv(buffer,4);
EA = 1;
if(ret==0x50){//接收超时
//errortimeout about
/*timeoutabout (255*255*4clock+255*8clock) * 0.5425us = 142210.95us*/
}else{
//接收成功
}
}
函数说明:
头文件:
GPIO定义:
逻辑分析仪测试: