hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 1186|回复: 0

求助!TX-1C开发板51串行中断 if 语句无法执行问题(看起来很简单,但不知为何总调不过去

[复制链接]

535

主题

535

帖子

1629

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1629
发表于 2024-1-11 00:52:25 | 显示全部楼层 |阅读模式
碰到一个看起来很简单的51单片机串行通信的问题,但折腾了两天了,怎么也调试不过去

1.目的:
使用郭天祥的开发版,实现串口送入0x01情况下,led灯闪烁的效果


2.代码如下:
void Usart() interrupt 4
{
unsigned char receiveData;
receiveData=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位

//ledFlash();//放在外面单片机能够指挥外部小灯闪烁
if(receiveData==0x01)
{
ledFlash();
}

SBUF=receiveData;//将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}


3.问题:
1)将实现led闪烁的函数 ledFlash()放在if语句之外直接执行,可以实现当字节到达时,直接闪烁的效果
2)但是,当将ledFlash()移到if 语句中,不知为什么,下载到单片机就无法实现小灯闪烁效果了,但是后面发送到stc-isp的缓冲区的程序依旧正常。如下图


4.尝试:
使用keil串口仿真调试,则当发送0x01时,能够进入 if 语句,正常执行ledFlash(),如图


请教大家,这个到底是怎么回事的,问题该如何解决啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2025-1-9 09:53 , Processed in 0.072838 second(s), 23 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表