每次复位后第一次能接收到数据,然后十几次才接收到一次数据,数据:A5 5A 05 82 01 80 00 00,各位大神看看程序哪里出错了。
#include
#define uchar unsigned char
#define uint unsigned int
#define S2RI 0x01 //串口2接收中断请求标志位
#define S2ti 0x02 //串口2发送中断请求标志位
unsigned char a,flag2;
uchar dat[8]=0;
/****************串行口初始化函数****************/
void InitUART(void)
{
S2CON = 0x50; //串口2工作在方式1 10位异步收发 S2REN=1允许接收
BRT = 0xFD; //独立波特率发生器初值
AUXR = 0x10; //BRTR=1 独立波特率发生器开始计数
IE2 =0x01; //开串口2中断 ES2=1
EA =1; //开总中断
}
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=1000;j>0;j--);
}
void UART_2SendOneByte(uchar dat)
{
S2BUF =dat;
while(!(S2CON&S2TI)); //若S2TI=0,在此等待
S2CON&=~S2TI; //S2TI=0
}
void main(void)
{
InitUART(); //串行口初始化
while(1)
{
if(flag2==1)
{
flag2=0;
for(a=0;a<8;a++)
UART_2SendOneByte(dat[a]);
delay(50);
dat[8]=0;
IE2=0X01;
}
}
}
void UART_2Interrupt(void) interrupt 8
{
if(S2CON&S2RI)
{
S2CON&=~S2RI;
dat[a++]=S2BUF;
if(a==8)
{
a=0;
IE2=0X00;
flag2=1;
}
}
}
更多回帖