打印

串口通信求解

[复制链接]
1131|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
719459589|  楼主 | 2013-5-9 19:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
logokfu| | 2013-5-9 20:03 | 只看该作者
你看用户手就可以看懂了啦

使用特权

评论回复
板凳
梦幻FLY| | 2013-5-9 21:34 | 只看该作者
这个是查询法,不是中断法。
#include <AT89X52.h>
unsigned char cc[]={1,2,3,4,5};
/************串口初始化函数***************/
void serial_port_initial()//
{
    PCON    =   0x00;         //波特率不加倍
    SCON    =   0x50;   //0101,0000  设定串口方式1,10位异步通信
    TMOD    =   0x20;   //0011,0001 设置定时器1为8位自动重装计数器
    TH1     =   0xfd;   //设置定时器1自动重装数   9.6K
    TL1     =   0xfd;   //波特率设定 9.6K
    ES      =   0;      //串口中断关闭
    ET1     =   0;      //定时器1中断关闭
    TR1     =   1;      //打开串口
    EA      =   0;      //开总中断
}

/***********串口发送一个数据**************/
void send_UART(unsigned char i)
{
   TI = 0;           //软件清零发送中断标志
   SBUF = i   ;      //发送一帧数据
   while( TI == 0 ); //等待发送结束

}

/***************主函数********************/
void main( void )
{
        serial_port_initial();        //初始化串口
    while( 1 )
    {
            if(RI==1)                        //判断是否接收完毕
            {
                        a = SBUF;            //把接收的数据存于a中
                              P0 = a;              //用P0显示接收的数据
            }
             RI=0;                    //清除接收标志位

               
               send_UART(cc);   //通过串口发送

   }
}

使用特权

评论回复
地板
牛牛牛| | 2013-5-9 22:14 | 只看该作者
[b]具体请查看通信方式一以及计数方式二的工作过程,
波特率=2^(smod)*11059200/{32*12*(256-TL1)}.

使用特权

评论回复
5
huzi741| | 2013-5-10 12:51 | 只看该作者
其实可以看看用户手册在分析一下3楼的程序就可以理解了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝