#include <reg52.h>
unsigned char code bottom[] = {"I get "};
unsigned char a;
unsigned char flag;
void init(){
TMOD = 0x20;//设定定时器的工作方式 00100000,方式2,8位自动重装定时器
TH1 = 0xfd;
TL1 = 0XFD;//定时器装入初值
TR1 = 1; //启动定时器
REN = 1;//允许串行接受数据
SM0 = 0;//设置串行口工作方式为1, 0 1;10位异步收发通信
SM1 = 1;
EA = 1;//开全局中断
ES = 1; //开串行中断
}
void main(){
unsigned char i;
init();
while(1){
if(flag == 1){
ES = 0;//关闭串行中断,防止无限次发送数据,让程序跑飞
for(i = 0;i < 6;i++){
SBUF = bottom[i];
while(!TI){
} //检测数据是否发送完毕,如果发送完毕,TI会硬件置1,
TI = 0; //软件将发送中断标志位置0,为下一次发送做准备
}
SBUF = a;
while(!TI){
}
TI = 0;
ES = 1; //打开中断,初始化flag,为下一次收发做准备
flag = 0;
}
}
}
void sre() interrupt 4{
RI = 0; //接受数据中断标志位,需要软件置0,以便进行下一次数据接受,进入中断程序
a = SBUF;//
flag = 1;//标记,确认数据是否接受完毕
}
为什么只能接受个位数呢????发送10只能收到1,还有要怎么接受汉字??
恩。谢了