求助啊 单片机串口发送数组的问题

2020-01-23 14:33发布

打算用单片机发送一个数组recevie[8],应该怎么做啊:
#include<STC15F2K.H>
#define uchar unsigned char
#define uint unsigned int
uchar n=0;
uchar receive[8];
uchar n;
uchar m;
void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设定定时器1为16位自动重装方式
        TL1 = 0xE0;                //设定定时初值
        TH1 = 0xFE;                //设定定时初值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
        EA=1;
        ES=1;
}
void delayms(uint z)
{
   uint x,y;
   for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
void uart_send(receive)
{
   uchar i;
   ES=0;
   for(i=0;i<8;i++)
   {
      SBUF=receive[i];

   while(!TI);
   TI=0;
   }
   ES=1;
}
void uart_rec() interrupt 4
{
   
  
   if(RI)
   {
      receive[n]=SBUF;
          n++;
          if(n==7)
          {
             ES=0;
           }
             RI=0;
        }
}
void main()
{
   
   UartInit();
   
   while(1)
   {
     P0=receive[0];
         P1=receive[1];
         delayms(4000);
     P0=receive[2];
         P1=receive[3];
         delayms(4000);
     P0=receive[4];
         P1=receive[5];
         delayms(4000);
     P0=receive[6];
         P1=receive[7];
         delayms(4000);
         if(n==7)
            {
                  uart_send(receive);
                }
                n=0;
         }
}
我这个程序是当单片机收到8个字节的数据,放到数组中,然后从串口发送出去,有做过这个的朋友吗,哪个地方错了啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
dingdan258
1楼-- · 2020-01-23 17:22
比如发送7F 80 01 11 65 82 一组数(不是字符串),不是逐个发送!而是一次性发送  51串口可以实现吗
提问者采纳
检举| 2012-12-18 12:16
那是肯定是不行的……51的串口发送的原理是一个字节一个字节的发送,数组是必须要通过转换成一个个数据发送的。举个例子啊:
假如你的发送单个字节的函数为:void senddata_uart(uchar cdd)

那么发送数组可以是:
void sendstring_uart(const uchar *dd)
{
    while((*dd)!=0)
    {
        senddata_uart(*dd);
        dd++;
    }  
}
这样就行了。。。。。不知道你听明白了吗?

百度上的,必须用指针吗?
lcw_swust
2楼-- · 2020-01-23 20:33
uart_send(receive[0]);
uart_send(receive[1]);
uart_send(receive[2]);
uart_send(receive[3]);
uart_send(receive[4]);
uart_send(receive[5]);
uart_send(receive[6]);
uart_send(receive[7]);
或者
for(i=0;i<8;i++)uart_send(receive[i]);
tanguicaicai
3楼-- · 2020-01-23 21:10
肯定的一个数据的发送了,串口本身就是一位一位的发送。
lidar
4楼-- · 2020-01-23 21:41
串口就是一个字节一个字节发的,不一定用指针的
dingdan258
5楼-- · 2020-01-23 22:55
 精彩回答 2  元偷偷看……
lcw_swust
6楼-- · 2020-01-24 02:24
dingdan258 发表于 2013-4-25 07:50
兄弟给看看,我那个发送函数写的格式有问题吗?主要是函数的参数问题,呵呵,C语言不过关啊。 ...

哪个函数有问题?

一周热门 更多>