打印

串口调试时出的奇怪问题

[复制链接]
2091|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
greyhairs|  楼主 | 2011-10-10 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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

相关帖子

沙发
xhtxzxw| | 2011-10-10 20:52 | 只看该作者
SMOD????  
哪儿定义的SMOD??
怎么定义的SMOD???

使用特权

评论回复
板凳
greyhairs|  楼主 | 2011-10-10 23:07 | 只看该作者
是SCON。。。。打错了 呵呵

使用特权

评论回复
地板
xhtxzxw| | 2011-10-11 12:55 | 只看该作者
你的串口中断服务函数呢??
跑中断里出不来了,赶巧了就出现现在的情况了,你改ES=0试试吧,应该就你没问题了。

使用特权

评论回复
5
greyhairs|  楼主 | 2011-10-11 17:01 | 只看该作者
ES = 0;可以的,。可是为什么令SM0=0;SM1=1;就是可以的,而SCON=0x40不可以呢呢????

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

16

帖子

1

粉丝