本帖最后由 greyhairs 于 2011-10-10 23:07 编辑
在写一个串口调试时;
初始化函数中
SCON = 0x40;
与SM0 = 0; SM1 = 1;
得到了不同的结果!!!!!
//初始化函数,对串口通信的端口的设置
void UartInit(void)
{
TMOD = 0x20; //定时器工作方式2
TH1 = 0xfd; //晶振11.0592MHZ
TL1 = 0xfd; //设置波特率为9600
SM0 = 0;
SM1 = 1; //串口工作方式1
REN = 1; //开启串口
TR1 = 1; //开启定时器
EA = 1; //开总中断
ES = 1; //开串口中断
}
//发送一个字符(OK)
void SendData(unsigned char dat)
{
TI = 0; //软件复位,表示未发送完成
SBUF = dat; //赋值给SBUF寄存器
while(!TI); //等待发送完成(TI=1)
TI = 0; //软件复位
}
主函数就是在while中不断的发送 一个字符。
在SCON = 0x40;下 只有按下复位键才回在串口助手中接收到字符;
在SM0 = 0; SM1 = 1;下 可以得到连续的字符;例如 ;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |