搜索
bottom↓
回复: 17

keil c51奇葩的问题,怀疑是代码被优化(已经解决,如何结..

[复制链接]

出0入0汤圆

发表于 2013-10-8 11:29:16 | 显示全部楼层 |阅读模式
本帖最后由 woshiaokeman 于 2013-10-8 19:26 编辑

直接上图:


无论我怎么发 0x00,P0上面的等就是不亮!
但是我这样改,发送 0x00,之后P0上的等久两了。
修改如下:
Receive_2_Arr[Receive_2_Count] = temp;

然后我试着改了一下,这样:
volatile uint8 Receive_2_Arr[10];
volatile uint8 Receive_2_Count = 0;
结果还是不行。。。

最后我把代码优化等级减小,但是总是改不了。。。
如图:

无论我怎么改,点确定之后,再次打开还是原来的样子。

希望各位师哥师姐帮帮我。谢谢了。

已经解决,请问如何结贴。。。
把优化等级改到3就解决了!
谢谢各位的帮忙!

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-10-8 11:48:04 | 显示全部楼层
keil c51 酒精考验,一般没问题,这种情况先看自己是不是“七八”

出0入4汤圆

发表于 2013-10-8 11:53:56 | 显示全部楼层
串口接收的数据对不对,函数是否有重入,中断函数是否用了using 关键字,好好查查吧,对不熟的东西不要妄下结论

出0入0汤圆

发表于 2013-10-8 11:57:39 | 显示全部楼层
改成7試試。

出0入0汤圆

发表于 2013-10-8 12:16:13 来自手机 | 显示全部楼层
怀疑是代码问题,把串口部分去掉,只操作P0试下

出0入0汤圆

发表于 2013-10-8 12:24:24 | 显示全部楼层
嗯,怀疑波特率设置问题

出0入0汤圆

发表于 2013-10-8 13:25:32 | 显示全部楼层
参考LS各位的意见,这里再加一条:

Receive_2_Count 可能早超过10,数组溢出了。。也许跑飞了。。。

总之,代码不严谨加上新手,出这样的问题难免的。。多折腾吧。。

出0入0汤圆

发表于 2013-10-8 13:30:32 | 显示全部楼层
typedef 发表于 2013-10-8 12:16
怀疑是代码问题,把串口部分去掉,只操作P0试下

试试他的办法.

出0入0汤圆

 楼主| 发表于 2013-10-8 17:55:31 | 显示全部楼层
ibichao 发表于 2013-10-8 11:53
串口接收的数据对不对,函数是否有重入,中断函数是否用了using 关键字,好好查查吧,对不熟的东西不要妄下 ...
  1. void Uart_Isr() interrupt 4 using 1
  2. {
  3.         Uart1_ProcessIRQSrc();
  4. }
复制代码
串口是正常的,我给他发送0x55或者0xaa,然后赋值给P0都能正常显示!

出0入0汤圆

 楼主| 发表于 2013-10-8 17:59:45 | 显示全部楼层
duanll 发表于 2013-10-8 13:25
参考LS各位的意见,这里再加一条:

Receive_2_Count 可能早超过10,数组溢出了。。也许跑飞了。。。
  1. Receive_2_Count = 0;
  2. Receive_2_Arr[Receive_2_Count] = temp;
复制代码
其实这样也不行,所以不是Receive_2_Count 超过10的问题,这些基本的我都测试很多次了!
其实我用的是STC15的问题,我感觉还可能是单片机的问题!

出0入0汤圆

 楼主| 发表于 2013-10-8 18:01:10 | 显示全部楼层
typedef 发表于 2013-10-8 12:16
怀疑是代码问题,把串口部分去掉,只操作P0试下

单独给P0流水灯是很正常的,又或者给他赋值0x55 0xaa 这些显示都很正常。

出0入96汤圆

发表于 2013-10-8 18:26:51 | 显示全部楼层
直接判断temp可以么?

出0入0汤圆

发表于 2013-10-9 10:20:05 | 显示全部楼层
woshiaokeman 发表于 2013-10-8 18:01
单独给P0流水灯是很正常的,又或者给他赋值0x55 0xaa 这些显示都很正常。

那应该是你的代码有问题,一条一条排查吧

出0入0汤圆

 楼主| 发表于 2013-10-10 09:02:00 | 显示全部楼层
gallle 发表于 2013-10-8 18:26
直接判断temp可以么?

谢谢,已经解决了~
代码优化等级太高,导致代码被优化的问题!

顺便问问怎么结贴?

出0入0汤圆

 楼主| 发表于 2013-10-10 09:02:44 | 显示全部楼层
typedef 发表于 2013-10-9 10:20
那应该是你的代码有问题,一条一条排查吧

谢谢,已经解决了~
代码优化等级太高,导致代码被优化的问题!

顺便问问怎么结贴?

出0入4汤圆

发表于 2013-10-10 09:17:18 | 显示全部楼层
woshiaokeman 发表于 2013-10-10 09:02
谢谢,已经解决了~
代码优化等级太高,导致代码被优化的问题!

代码优化等级高就产生问题,原因可能是你程序没有写好.
你不让编译器优化某些你认为不能优化的部分的.

不用结贴的吧,好像是.

出0入0汤圆

发表于 2013-10-10 09:18:29 | 显示全部楼层
呵呵  弄好就行

出0入0汤圆

发表于 2013-10-15 10:47:49 | 显示全部楼层
woshiaokeman 发表于 2013-10-10 09:02
谢谢,已经解决了~
代码优化等级太高,导致代码被优化的问题!

如果是因为优化等级太高,那应该要好好检查代码才行。我一般都是开最高优化的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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