1918|13

6

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助!TX-1C 开发板51串行中断 if 语句无法执行问题(看起来很简单,但怎么也调不过去) [复制链接]

 

邀请:@weizhongc   @huo_hu   @Blkhumor   @kiverin   参与回复

碰到一个看起来很 简单的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(),如图

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

此帖出自51单片机论坛

最新回复

51单片机也有这问题?不过可以试试。   详情 回复 发表于 2022-12-10 21:17
点赞 关注
 

回复
举报

7494

帖子

2

TA的资源

版主

沙发
 

你确定你串口发送的是HEX的0x01,而不是字符串的0x01?

此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
wangerxian 发表于 2022-12-5 17:21 你确定你串口发送的是HEX的0x01,而不是字符串的0x01?

都试过了

此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

4
 
wangerxian 发表于 2022-12-5 17:21 你确定你串口发送的是HEX的0x01,而不是字符串的0x01?

是keil编译环境的代码优化问题吗

此帖出自51单片机论坛

点评

试试吧,一般奇怪的问题都是优化造成的。 调试按道理来说应该和不调试时的现象一样才对。  详情 回复 发表于 2022-12-6 10:29
有可能  选择不优化试试。  详情 回复 发表于 2022-12-6 08:48
 
 
 

回复

6168

帖子

4

TA的资源

版主

5
 
goodshot 发表于 2022-12-5 19:16 是keil编译环境的代码优化问题吗

有可能  选择不优化试试。

此帖出自51单片机论坛
 
 
 

回复

7494

帖子

2

TA的资源

版主

6
 
goodshot 发表于 2022-12-5 19:16 是keil编译环境的代码优化问题吗

试试吧,一般奇怪的问题都是优化造成的。

调试按道理来说应该和不调试时的现象一样才对。

此帖出自51单片机论坛

点评

选择什么优化呢  详情 回复 发表于 2022-12-7 09:25
 
 
 

回复

6168

帖子

4

TA的资源

版主

7
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛

点评

没使用数组  详情 回复 发表于 2022-12-7 09:24
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

8
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

9
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛

点评

KeilC51的编译器有一个优化设置,不同的优化设置,会产生不同的编译结果。实际最高可设定为9级优化。   Keil C51的编译优化选择设置为0(不优化).  详情 回复 发表于 2022-12-7 11:32
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

10
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛

点评

直接设置优化为Level 0,也就是不优化。先试试吧。但是凭经验来说,这现象不像优化的锅。  详情 回复 发表于 2022-12-7 14:14
 
 
 

回复

6168

帖子

4

TA的资源

版主

11
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛
 
 
 

回复

7494

帖子

2

TA的资源

版主

12
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛

点评

能不能把怀疑的变量volatile一下?  详情 回复 发表于 2022-12-10 01:06
 
 
 

回复

224

帖子

0

TA的资源

一粒金砂(高级)

13
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛

点评

51单片机也有这问题?不过可以试试。  详情 回复 发表于 2022-12-10 21:17
 
 
 

回复

7494

帖子

2

TA的资源

版主

14
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
报名最后一周!2025 英飞凌消费、计算与通讯创新大会-北京站
会议时间:3月18日(周二)09:30签到
参会奖励:电动螺丝刀套装、户外登山包、京东卡

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表