|
#include<reg52.h>
#define BAUD 9600 //define后边不能使用分号
unsigned char rxdbuf=0;
unsigned char j=0;
unsigned char *p;
unsigned char flag=0;
unsigned char array1[]={1};
unsigned char array2[]={1,2};
unsigned char array3[]={1,2,3};
unsigned char array4[]={1,2,3,4,5,6,7,8};
void configbaud(unsigned int baud);
void main()
{ EA=1;
configbaud(BAUD);
while(1)
{ if(flag)
{ flag=0;
switch(rxdbuf)
{ case 1: p=&array1[0];
j=sizeof(p);
TI=1;
break;
case 2: p=array2;
j=sizeof(p);
TI=1;
break;
case 3: p=array3;
j=sizeof(p);
TI=1;
break;
case 4: p=array4;
j=sizeof(p);
TI=1;
break;
default: break;
}
}
}
}
void configbaud(unsigned int baud)
{
TH1=256-(11059200/2/16/12/baud);
TL1=TH1;
TMOD&=0x0F;
TMOD|=0x20;
TR1=1;
ET1=0;
SCON=0x50;
ES=1;//打开串口中断。
}
void interruptuart()interrupt 4
{ if(RI)
{ RI=0;
flag=1;
rxdbuf=SBUF;
}
if(TI)
{ TI=0;
if(j>0)
{ SBUF=*p;//先对指针p取内容,在++;
j--;
p++;
}
}
}
程序的目的是在串口调试助手那输入一个1-4的数字后,根据输入的数据,返回指定的数组。
程序问题是我输入4(应该显示1-8数字)时,串口助手那只显示三个数(1-3),大神看看我程序那出问题了?
|
|