打印
[其他ST产品]

串口中断接收到的数据怎么放到一个数组变量里

[复制链接]
5499|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
歇斯底里|  楼主 | 2017-3-9 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void InitUART(void)//11.0592MHz 9600
{
    SCON = 0x50;//8位数据,可变波特率
    AUXR |= 0x04;//定时器2时钟为Fosc,即1T
    T2L = 0xE0;//设定定时初值
    T2H = 0xFE;//设定定时初值
    AUXR |= 0x01;//串口1选择定时器2为波特率发生器
    AUXR |= 0x10;//启动定时器2
    ES=1;
    EA=1;
    REN=1;
  }void Uart_Init(void) interrupt 4
{
                unsigned char temp;
    RI=0;
    temp=SBUF;
         // putptr&=0x0f;
    SBUF=temp;
    while(TI==0);
    TI=0;
}

想把串口中断接收到的数据放到一个数组变量里,想着在中断函数里把 “temp”定义为一个数组,可是存的数据不对,求教!!!




沙发
feelhyq| | 2017-3-9 11:26 | 只看该作者
还是把 temp数组定义成全局的吧

使用特权

评论回复
板凳
wkshengren| | 2017-3-9 11:31 | 只看该作者
unsigned char temp;
改成全局

temp[i]=SBUF;
i++;


使用特权

评论回复
地板
歇斯底里|  楼主 | 2017-3-9 12:31 | 只看该作者
feelhyq 发表于 2017-3-9 11:26
还是把 temp数组定义成全局的吧

定义成全局的数组 我也试过 还是实现不了

使用特权

评论回复
5
歇斯底里|  楼主 | 2017-3-9 12:33 | 只看该作者
wkshengren 发表于 2017-3-9 11:31
unsigned char temp;
改成全局

改成全局的变量 temp=SBUF; i++; 这种方法我在网上看到过,但是我实现不了

使用特权

评论回复
6
feelhyq| | 2017-3-9 12:42 | 只看该作者
歇斯底里 发表于 2017-3-9 12:33
改成全局的变量 temp=SBUF; i++; 这种方法我在网上看到过,但是我实现不了

这个就涉及到C语言的知识了,楼主要加油哇

使用特权

评论回复
7
歇斯底里|  楼主 | 2017-3-9 13:38 | 只看该作者
feelhyq 发表于 2017-3-9 12:42
这个就涉及到C语言的知识了,楼主要加油哇

可以了 哈哈

使用特权

评论回复
8
lihui567| | 2017-3-10 08:19 | 只看该作者
3楼的额不错,temp[i]=SBUF;i++;这样就把接收到的数据暂存到数组里,然后你的STC单片机在对每个数据进行逐一判断

使用特权

评论回复
9
ddllxxrr| | 2017-3-10 09:15 | 只看该作者
可以用一个全局变量来控制
如:
unsigned char temp[20];
unsigned char i;
void Uart_Init(void) interrupt 4
{
                unsigned char temp;
    RI=0;
    temp[i]=SBUF;
         // putptr&=0x0f;
    SBUF=temp;
    while(TI==0);
    TI=0;
    i++;
    if(i>=19)
    i=0;
}

使用特权

评论回复
10
上海光伏发电| | 2017-3-10 10:18 | 只看该作者
你说的这种通信要求可以采用帧传送的方式,自己要确定一个帧格式,例如:
0X55//帧头标志
0XAA
//128字节数据
校验字节1
校验字节2
校验字节是防止数据传输错误,校验方式可自行选择。
如果数据不是很重要,定义一个132字节接收队列(全局变量数组),如果数据很重要,定义两个132字节接收队列,一个做接收缓冲,接受正确才更新正式队列。还要定义一个接收指针,屋顶太阳能发电leaptonenergy.com当接收到帧头标志,接收指针清零,以后每接收一个字符,以接收指针做下标将数据存入接收数组。

使用特权

评论回复
11
深夜的堂吉诃德| | 2018-4-18 20:57 | 只看该作者
改成全局变量是必须的

使用特权

评论回复
12
huzi2099| | 2018-4-19 08:22 | 只看该作者
i++以后不要超出数组范围

使用特权

评论回复
13
junyee| | 2018-4-19 21:26 | 只看该作者
楼主明显C语言基础不过关,你们别瞎帮忙了,反而害了他.

使用特权

评论回复
14
CaLipton| | 2018-4-21 12:21 | 只看该作者
可以了 哈哈

楼主怎么实现的

使用特权

评论回复
15
Mattheww| | 2018-4-21 15:42 | 只看该作者
应该是改成全局变量

使用特权

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

本版积分规则

22

主题

70

帖子

1

粉丝