#include<reg52.h>
//11.0592M 9600
void Delay(void);
void chuankou_init(void);
unsigned char Receive(void);
void Send(unsigned char dat);
void main()
{
unsigned char num;
num='A';
chuankou_init() ;
while(1)
{
Delay();
Send(num); //不能直接写成Send('+');,不然不成功
//Send(Receive()+1);
}
}
void usart_rx(void) interrupt 4
{
unsigned char Temp;
if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
Temp=SBUF; //读入缓冲区的值
//P1=Temp; //把值输出到P1口,用于观察
//Send(Temp+1); //把接收到的值+1再发回电脑端
Send(Temp);
}
// if(TI) // 不要写这句话,不然主函数不能一直发送
// TI=0;
}
void chuankou_init()
{
TMOD=0x20; //定时器T1工作于方式2 ,8位自动重装
SCON=0x50; //SCON=0101 0000B,串口工作方式1,允许接收(REN=1)
PCON=0x00; //PCON=0000 0000B,波特率2400
TH1=0xFd ; //根据规定给定时器T1赋初值
TL1=0xFd; //根据规定给定时器T1赋初值
TR1=1; //启动定时器T1
REN=1; //允许接收
EA=1; //打开总中断
ES=1; //打开串口中断
}
void Send(unsigned char dat)
{
SBUF=dat;
while(TI==0) //等待发送完毕
;
TI=0;
//Delay();
}
unsigned char Receive(void)
{
unsigned char dat;
while(RI==0) //只要接收中断标志位RI没有被置“1”
; //等待,直至接收完毕(RI=1)
RI=0; //为了接收下一帧数据,需将RI清0
dat=SBUF; //将接收缓冲器中的数据存于dat
return dat;
}
void Delay()
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<250;j++)
;
}
完整资料打包