这个是我的程序 大家给看一下 设置有没有问题呢
BYTE temp_data;
BYTE flag;
void REG_Init()
{
CPUCS = 0x10; //48Mhz
CKCON = (CKCON&(~bmSTRETCH)) | 1;
}
void SerialPort_Init()
{
TMOD = (TMOD & 0x0F) | 0x20; // 定时器1工作方式2,自动重载
CKCON |= 0x10; //T1M = CLKOUT/4
EICON |= 0x80; //设置SMOD1=1,波特率加倍
SCON1 = 0x50; //串行口1工作方式1,10位异步收发,REN=0,允许接收。RI1=0,TI1=0
TH1 = 0xD9; //定时器1的初值
ES1 = 1; //允许串口1中断
TR1 = 1;
EA = 1;
}
void Serial_SendChar(BYTE source)
{
SBUF1 = source;
while(TI1 == 0);
TI1 = 0;
}
void Serial_Interrupt1() interrupt 7
{
if(RI1 == 1)
{
RI1 = 0;
temp_data = SBUF1;
flag = 1;
}
}
void main(void)
{
REG_Init();
SerialPort_Init();
EA = 1;
while(1)
{
if(flag==1)
{
flag=0;
Serial_SendChar(temp_data);
}
}
} |