打印

多次引用某个语句,,

[复制链接]
2409|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冯冯冯冯|  楼主 | 2010-12-17 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 冯冯冯冯 于 2010-12-17 12:00 编辑

有个问题,程序中用到了外部存储24c01,一开始从24c01中读出数据,调用了这个语句 speed=AT24C02_Read1Byte(0);          //读入速度,0速度存放地址
time=AT24C02_Read1Byte(1);             //读入时间,1时间存放地址
然后重新设置并且重新给24c01写入了新值,然后在运行停止时间到了之后,需要把这次设置的值再重新输出,调用speed=AT24C02_Read1Byte(0);          //读入速度,0速度存放地址
time=AT24C02_Read1Byte(1);             //读入时间,1时间存放地址
再次将设置值送出去,但是
出现警告:多次调用语句,这个要怎么办呢?


后来这个是必须要再次调用的,防止24c01写入之后再次设置,但是送显示的还是写入的24c01的值。

相关帖子

沙发
chunyang| | 2010-12-17 11:36 | 只看该作者
重复调用和多次调用的概念是不同的,重复调用是指在前一个调用未结束时再次掉用自身,这是不准许的,检查代码中前次调用是否已经返回。

使用特权

评论回复
板凳
冯冯冯冯|  楼主 | 2010-12-17 12:02 | 只看该作者
(⊙o⊙)…,错了,出现的警告是:多次调用。
原来重复调用和多次调用的概念是不同的。。。受教,O(∩_∩)O谢谢

使用特权

评论回复
地板
CIOneTwo| | 2010-12-17 13:00 | 只看该作者
没看明白,帮你顶下。

使用特权

评论回复
5
liang7143| | 2010-12-17 13:19 | 只看该作者
如果一个函数是可重入的
那多次调用是没有问题的~~
单片机程序不涉及到多进程的话,应该是可以忽悠此警告~~
唯一注意的一点是:
是否在中断函数 和 其他函数中 都有调用,这个时候就应该考虑重入问题。

keil C51默认的是不可重入的,可以在函数定义前加关键字reentrant 显性定义为重入函数

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
冯冯冯冯 + 1
6
冯冯冯冯|  楼主 | 2010-12-17 13:19 | 只看该作者
OK 解决了,O(∩_∩)O谢谢两位啊,结贴。

使用特权

评论回复
7
冯冯冯冯|  楼主 | 2010-12-17 13:22 | 只看该作者
本帖最后由 冯冯冯冯 于 2010-12-17 14:19 编辑

5# liang7143

嗯,正在研究 reentrant 函数,觉得你说的刚刚好到我的问题。,O(∩_∩)O谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:老了

0

主题

659

帖子

1

粉丝