51单片机串口接收一个数组

希望串口接收一组8位数。现在遇到的问题是,程序在结束完毕后没法在LED上显示。
下面是部分程序:
while(RI); //接收数据,若字符未接受完,一直等待
{
RI=0;
temp[num]=SBUF;
num++;
endmark=1;
}
if (temp[1]==0x31)
{
LS138A=1; LS138B=0; LS138C=0;P0=0x5b; delay(150);
}
下面的IF用于检验是不是接收到了数据,以及检测数据内容。但实际上P0的数据并未在LED上显示。
其中temp[]是个数组。请高手给解释一下。谢谢。

第1个回答  2013-09-18
建议你把完整程序发出来,或者把整个函数贴出来,不然很难分析问题所在啊

51单片机串口接收一个数组
1.你先显示num这个变量试试,看你是否接收到了数据。2. 把显示数值换成一个常数,试试你的显示是否正常

51单片机串口接收数组数据并存储
你用一个数组变量(也就是开辟一个接收缓冲区)就OK了如:include<reg51.h> define uchar unsigned char uchar buf[16],num;void ser_isr() interrupt 4 { if(RI){ RI=0;buf[num]=SBUF;num++;num&=0x0f;} } main(){ TMOD=0x20;SCON=0x50;TH1=TL1=0xfd;TR1=1;ES=1;EA=1;while...

用51单片机通过串口接受一个数据,我目标是用一个if语句来比较和判别这...
\/\/T1 方式2 PCON = 0x00; \/\/SMOD = 0 SCON = 0x50; \/\/方式1 8个数据位 TH1=0xfd; \/\/\/波特率9600初值 TL1=0xfd; TR1 = 1; \/\/启动定时器1\/\/ ES=1; \/\/开串口中断\/\/ EA=1; \/\/开总中断 }\/\/主函数void main(void){ uchar temp=0...

c51,单片机从串口接收字符串,放到一个数组里面,然后在与一个常量字符...
建议 去 我的领地 5d6d 的 proteus 论坛看看 那里有很多 单片机仿真实例,包括仿真图 和 源码 搜 5d6d 和 proteus 2个关键词

如何在串口中接收一个字符串
在51单片机中,我们使用上下位机时,我们通常会发送一串字符串,将它作为信号发给单片机处理。因为串口通信时,发送信息是以一个个字符的形式发送过来的,所以接收的就是一个个字符,通常我们是一个字符数组保存,在进行下一步处理,同时字符数组长度固定有限,但是如果上位机发送的字符不满足我们想要处理的...

我想用51单片机串口接收到一个字符比如0X2A ,然后发送一个数组 用C...
你好!!单片机的接收采用中断的方式,给你一个单片机串口实例,你试试吧

51单片机接收串口传送的未知大小的数组,这怎么定义啊,跪求求解决方法...
依靠通信协议。除非通信协议中有长度相关的约定,否则收到的数据无法解析。

51单片机串口问题
51单片机的端口共有32个,去掉两个用于串口通信端口,可供使用的还有30个IO端口 你的发光二级管随意接在这30个端口的任意一个都可以 然后编写代码,再根据你连接的端口进行赋值 至于串口的接收内容存储,单片机会把接收到的数据存储在一个寄存器中 这个寄存器的名字叫 SBUF ,同时这个寄存器也是发送数据...

51单片机的串口接收一帧数据有几位?
51单片机的发送和接受,只有10位和11位两种。先说单片机串口的工作方式:单片机串口的工作方式共4种,方式0--方式3.方式0:用移位脉冲。RXD做输入\/输出,TXD进行移位。收发的数据为八位。方式1:传送一帧信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。数据位由TXD发送,由RXD接收方式1:一帧...

如何用51单片机RXD串口接收MIDI信号然后将命令转换到数码管显示_百度知 ...
接收函数差不多,可以申明一个数组来接受三个值。unsigned char recv[3];...void recive(void){ while(RI==0);recv[0]=SBUF;RI=0;while(RI==0);recv[1]=SBUF;RI=0;while(RI==0);recv[2]=SBUF;RI=0;}

相似回答