求助---STC89C52串口通信问题

ZYY5837055 2016-09-13 07:51:53
各位大神,我用的是STC89C52,串口通信使用的是Mode0,将P3.0和P3.1连接在一块儿,但是为什么灯一直是全亮的状态,而不是交替闪烁的现象,求各位大神帮帮忙!

#include<reg52.h>
#include"util.c"

#define led P1 //led灯,P1引脚
//测试串口
unsigned char portSign = 0xAA; //10101010

void init(void);

void main()
{
init();
while(1)
{
portSign = ~portSign;
SBUF = portSign;
while(!TI);
TI = 0;
delay1ms(500);
}
}

void init()
{
//使用模式0,固定波特率 f/12
SCON = 0X10;
RI = 0;
TI = 0;
PCON = PCON & 0x7F;
//开启串口中断
ES = 1;
EA = 1;
}

void receiver(void) interrupt 4
{
if(RI)
{
led = SBUF;
RI = 0;
}
else if(TI)
{
TI = 0;
}
}
...全文
705 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
载月而归. 2019-06-29
  • 打赏
  • 举报
回复
能告诉我一下烧程序时怎么看串口号吗?
ZYY5837055 2016-09-16
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903 的回复:
串口端口无发送数据时的状态是高电平
我后来再试时发现即使不发送数据,中断仍然会产生,而且是RI等于1,怎么会这样,是不是需要将RXD和TXD这两个引脚电平先设置为0
SupermanTm 2016-09-16
  • 打赏
  • 举报
回复
没认真读 PDF 吧,MODE0 是 P3.1做时钟线,P3.0做数据线的“同步串行”,所以这样的程序肯定读回来都是“1”。
zgl7903 2016-09-14
  • 打赏
  • 举报
回复
串口端口无发送数据时的状态是高电平
ZYY5837055 2016-09-14
  • 打赏
  • 举报
回复
引用 1 楼 gordon71305 的回复:
portSign = ~portSign; //的下一行加 P1都没有写过东西 led = portSign; 或者 P1= portSign;
我写这个程序是为了测试下串口的收发,在中断里面写了led=SBUF这一句,但是结果是灯全亮,应该是收到的全是0吧
ZYY5837055 2016-09-14
  • 打赏
  • 举报
回复
我写这个程序是为了测试下串口的收发,在中断里面写了led=SBUF这一句,但是结果是灯全亮,应该是收到的全是0吧
gordon71305 2016-09-14
  • 打赏
  • 举报
回复
portSign = ~portSign; //的下一行加 P1都没有写过东西 led = portSign; 或者 P1= portSign;

27,375

社区成员

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

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