串口助手发送数据到单片机接收回显到串口助手,再通过按键控制发送原来数据。
这是代码,按键不能完整发送数据到串口助手显示,不知道问题出在哪里,应该怎样改进啊?????
#include"STC12C5A.h"
#include"intrins.h"
sbit LED0=P0^0;
sbit LED1=P0^1;
unsigned char UART_buff,Rx=0,i=0;
unsigned char System_buff[20];
bit new_rec=0,send_ed=0;
void delay_us(unsigned int t)
{
while(t--)
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
void delay_ms(unsigned int time)
{
for(;time>0;time--)
{
delay_us(1000);
}
}
void SendASC(unsigned char d)
{
SBUF=d;
}
void USART_Init()
{
PCON&=0x7f;
SCON=0x50;
AUXR|=0x40;
AUXR&=0xfe;
TMOD&=0x0f;
TMOD|=0x20;
TL1=0xB2;
TH1=0xB2;
ET1=0;
TR1=1;
ES=1;
EA=1;
}
void main(void)
{
USART_Init();
while(1)
{
LED0=0;
P2=0X0f;
if((new_rec==1)&&(send_ed==1))
{
LED1=0;
LED0=1;
delay_ms(1000);
LED1=1;
new_rec=0;
send_ed=0;
}
if(P2!=0X0f)
{
delay_ms(5);
if(P2!=0X0f)
{
while(P2!=0X0f);
{
for(i=0;i<20;i++)
{
SendASC(System_buff[i]);
for(i=0;i<20;i++)
{
System_buff[i]=0;
}
}
LED1=0;
LED0=1;
delay_ms(1000);
LED1=1;
}
}
Rx=0;
i=0;
}
}
}
void servise() interrupt 4
{
EA=0;
if(RI==1)
{
if(Rx<20)
{
UART_buff=SBUF;
System_buff[Rx]=SBUF;
Rx++;
SendASC(UART_buff);
RI=0;
new_rec=1;
}
}
else
{
TI=0;
send_ed=1;
}
EA=1;
} |