#include<reg52.h>
#define uintunsigned int
#define ucharunsigned char
uint a,flag;
void initial()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
TH1=0XFD; //计数器初始值设置,注意波特率是4800的
TL1=0XFD;
ES=1;//打开串口中断
EA=1;//打开总中断
TR1=1;//启动定时器1
}
void main ()
{
initial();
while(1);
}
void ser()interrupt 4
{
a=SBUF; //接收串口发来的值
RI=0;//接收中断标志位,当串行接收第8位数据结束时,内部硬件使RI置1,向cpu发中断申请,用软件清零取消中断申请
SBUF=a;//向串口发送值
while(!TI);//串行发送停止位开始,内部硬件使T1置1,向cpu发中断申请,此处验证数据是否发送结束
TI=0;//用软件清零取消中断申请
}
若把TH1,TL1改为0xf3,然后加个 PCON=0X80; //波特率加倍后就能正确通信,实在不解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>