单片机串口接串口助手 我只想发送一个字符 结果一按复位发了很长一串 都是同一个字符 代码如下

skyline0093 2013-09-01 11:11:44

#include<reg52.h>
void init()//初始化参数
{
//定时、串口初始化
TMOD=0x20;//T1工作于方式2自动重装
TH1=0xff;
TH0=0xff;//波特率为57600晶振为11.0592M
TR1=1;//启动T1
SM0=0;
SM1=1;//工作方式1
PCON=0X80;//波特率翻倍
REN=1;//允许串口接收
EA=1;//开总中断
ES=1;//开串口中断
}
void main()
{
init();
ES=0;
SBUF=0x31;
while(!TI)
TI=0;
ES=1;
}
经询问说main函数中改为
void main()
{
init();
ES=0;
SBUF=0x31;
while(!TI)
TI=0;
while(1)
{
}
}
经验证,成功了 但是不明白删除ES=1和增加while(1)两个条件的原因 求讲解
...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2013-09-02
  • 打赏
  • 举报
回复
1 ES=1 开中断了 但是没有中断服务程序, 程序可能跑飞了 2 有看门狗么? 没喂狗,程序在返回复位中 ?
dceacho 2013-09-02
  • 打赏
  • 举报
回复
ES=1那个不是什么很致命的问题 关键是那个while(1),因为单片机没有关机指令,所以必须要一个死循环,否则PC指针一直向下走然后单片机就疯了
skevil 2013-09-02
  • 打赏
  • 举报
回复
while(1)是单片机很重要的语句啊。。没有的话不行的

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧