单片机 MCU 51 115200 波特率 模拟串口程序

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定义:

 

逻辑分析仪测试:

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值