打印
[51单片机]

串口通信

[复制链接]
1153|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
ningling_21| | 2014-5-4 11:59 | 只看该作者
配置串口,打开串口中断,等待数据。。。

使用特权

评论回复
板凳
孤独的守望者|  楼主 | 2014-5-4 12:45 | 只看该作者
ningling_21 发表于 2014-5-4 11:59
配置串口,打开串口中断,等待数据。。。

我每次只能接到一为数据,我想用一个数组接一组数据怎么弄呢

使用特权

评论回复
地板
ningling_21| | 2014-5-4 12:55 | 只看该作者
孤独的守望者 发表于 2014-5-4 12:45
我每次只能接到一为数据,我想用一个数组接一组数据怎么弄呢

建一个数组,收一个存一个就可以了。。。。

使用特权

评论回复
5
孤独的守望者|  楼主 | 2014-5-4 13:03 | 只看该作者
ningling_21 发表于 2014-5-4 12:55
建一个数组,收一个存一个就可以了。。。。

#include<reg51.h>
#include<stdlib.h>
#define uchar unsigned char          
#define uint unsigned int
uchar reflag,a,b;
uchar DD[3];
uint i;
void main(void)
{

        TMOD = 0x20;//定时器一为方式二
        TH1 =0xfd;    //装初始值                  
        TL1 = 0xfd;
        TR1 = 1;    //启动定时器一
        SM0 = 0;
        SM1 = 1;    //设置串口为方式1
        REN = 1;    //接收使能
        EA =1;   //打开总中断开关
        ES =1;        // 打开串口中断开关
        //  初始化串口
        while(1)
        {
               
        }
       
}

void serial() interrupt 4    //PC给单片机发数据
{
        RI = 0;
        if(SBUF == '$')
        {
                reflag = 1;
                i = 0;
        }
        if(reflag==1)
        {
                DD=SBUF;
                i++;
                if(SBUF=='*')
                {
                        reflag=0;
                }
        }
}

使用特权

评论回复
6
孤独的守望者|  楼主 | 2014-5-4 13:04 | 只看该作者
孤独的守望者 发表于 2014-5-4 13:03
#include
#include
#define uchar unsigned char          

这样你看看那里错了   麻烦了

使用特权

评论回复
7
ningling_21| | 2014-5-4 14:43 | 只看该作者
MAIN()
{
   ....


   if(CNT>=3)
{
    CNT=0;
    .......收到数据后的处理
}
}
void serial() interrupt 4    //PC给单片机发数据
{
   if(RI==1)
   {
       RI=0;
      DD[CNT++]=SBUF;
}

使用特权

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

本版积分规则

9

主题

15

帖子

0

粉丝