打算用单片机发送一个数组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个字节的数据,放到数组中,然后从串口发送出去,有做过这个的朋友吗,哪个地方错了啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
不对,定义函数时,扩号内需定义变量,引用函数时,扩号内才是直接给变量
可写成void uart_send(uchar *receive)
一周热门 更多>