#include<reg52.h>
#define uchar unsigned
charuchar flag,a,b,c,e,k;
uchar idata table[4];
void main()
{ a=0;
TMOD=0x20;//设置定时器1为工作方式2自动载入。
TH1=0xfd;//送初值给定时器T1
TL1=0xfd;//送初值给定时器T1
TR1=1; //开启定时器使能REN=1; //串行口允许接受
SM0=0; //SCON中第7位,控制串口的工作方式
SM1=1; //SCON中第6位,00,01,10,11.
EA=1; //开放总中断允许
ES=1; //开启串口中断
while(1){ if(a==4)
{ a=0;
ES=0;
for(c=0;c<4;c++)
{ SBUF=table[c];
while(!TI);
TI=0; }
}
ES=1; }
}
void apple() interrupt 4
{ ES=0;
RI=0;
table[a]=SBUF;
a++;
ES=1; }
我开始用串口工具发送4个字节的数据在把发送的数据传回来,后来发现发送的数据和收到的数据不一样,然后查了很多地方,上电后就执行一次串口中断程序,导致a为1;请问大侠帮我解释解释 这是什么原因导致的啊。纠结了好多天了。
#define uchar unsigned
charuchar flag,a,b,c,e,k;
uchar idata table[4];
void main()
{ a=0;
TMOD=0x20;//设置定时器1为工作方式2自动载入。
TH1=0xfd;//送初值给定时器T1
TL1=0xfd;//送初值给定时器T1
TR1=1; //开启定时器使能REN=1; //串行口允许接受
SM0=0; //SCON中第7位,控制串口的工作方式
SM1=1; //SCON中第6位,00,01,10,11.
EA=1; //开放总中断允许
ES=1; //开启串口中断
while(1){ if(a==4)
{ a=0;
ES=0;
for(c=0;c<4;c++)
{ SBUF=table[c];
while(!TI);
TI=0; }
}
ES=1; }
}
void apple() interrupt 4
{ ES=0;
RI=0;
table[a]=SBUF;
a++;
ES=1; }
我开始用串口工具发送4个字节的数据在把发送的数据传回来,后来发现发送的数据和收到的数据不一样,然后查了很多地方,上电后就执行一次串口中断程序,导致a为1;请问大侠帮我解释解释 这是什么原因导致的啊。纠结了好多天了。