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

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-24 04:40
void uart_send(receive)
这种写法对吗?
lcw_swust
2楼-- · 2020-01-24 08:45
dingdan258 发表于 2013-4-25 14:21
void uart_send(receive)
这种写法对吗?

不对,定义函数时,扩号内需定义变量,引用函数时,扩号内才是直接给变量
可写成void uart_send(uchar  *receive)
dingdan258
3楼-- · 2020-01-24 10:26
lcw_swust 发表于 2013-4-26 17:24
不对,定义函数时,扩号内需定义变量,引用函数时,扩号内才是直接给变量
可写成void uart_send(uchar  * ...

receive是个数组,呵呵,应该怎么写啊,定义发送函数的时候,后面调用的时候,这个格式是怎么样的呢?
lcw_swust
4楼-- · 2020-01-24 12:07
 精彩回答 2  元偷偷看……
dingdan258
5楼-- · 2020-01-24 12:08
lcw_swust 发表于 2013-4-27 09:00
4种办法
1.void uart_send(receive)改成void uart_send(void),调用时这样写:uart_send();
2.void uart_s ...

谢谢啊,呵呵,我再练练。。。。。。。。
389704844
6楼-- · 2020-01-24 14:54

一周热门 更多>