打印

新手请教一个C程序问题,环境:keil3;

[复制链接]
2223|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DavisD|  楼主 | 2010-3-12 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 DavisD 于 2010-3-12 16:18 编辑

请教一个在Keil3环境下调试C程序时遇到的问题:


反复验证后将问题缩小至如下范围:



Void tansf(int);
Void decode(int);
Int buff;
Int dec;
Int disptest;
disptest = 7;

Main(){

      disptest = 7;
while(1){


Led();

Delay(200); //定义过的delay函数


}
}

volatile void trans(int buff)
{

switch(buff)

{

case 0:

p= 0; pb = 0; pc = 1; pd = 1; pe = 0; pf = 0; pg = 1; ledp = 1;//这些sbit是用于IO口控制

break;


Case 1:

…. 略去,形式相同



default: break;

}

}

/********************************
volatile void dec(int dec){

switch(dec)


{

case 1:
                                               da= 0; db = 0; dc = 0; dd = 0; ;//这些sbit是用于IO口控制

break;

case 2:

………略去,形式相同


default: break;

}
}


//============================
volatile void led(void)

{







//disptest = 7;

buff = disptest;


trans(buff);

dec(1);

delay(100);



dec(2);

delay(100);


….略去,形式相同





}
/*****************************/


Led程序的作用是点亮数码管,transf decode两个子程序被LED()程序调用.

现在发现的问题是:

disptest 已经在Main程序中赋值为7,

如果在led中这样操作: disptest = 7; buff = disptest; trans(buff);….这样是可以工作的,全部数码管都可以点亮
如果直接写成trans(7);…也是可以的

但如果不给disptest赋值,直接写成buff = disptest;…或者trans(disptest);…都不能正常工作,
这是为什么????
为什么赋值过的disptest在led子程序中必须要重新赋值才能使用???

设置:优化8
Small – pDATA设置;

请各位大侠帮忙指点下!多谢了

相关帖子

沙发
DavisD|  楼主 | 2010-3-12 10:32 | 只看该作者
本帖最后由 DavisD 于 2010-3-12 10:34 编辑

我已经尝试过volatile的方法或者改变keil3优化设置的方法,但还是不行.
我的keil3一进入调试模式就要死机,所有测试都是在硬件上做的,硬件功能是没问题的.


之前的程序使用数组做的,但是因为刚开始起步,对很多C用法心里没底,所以在调试中简化成了上面程序的形式.

使用特权

评论回复
板凳
cqh250551610| | 2010-3-12 13:36 | 只看该作者
你不给它赋值,它都默认为零了,哪能定常工作。。。这种方法麻烦些,可以用数组

使用特权

评论回复
地板
DavisD|  楼主 | 2010-3-12 16:22 | 只看该作者
本帖最后由 DavisD 于 2010-3-12 16:23 编辑

有赋值的,Main()里面有赋值,全局变量也有赋值,
但是到led()调用的时候就不行了....

我原本是用数组来操作的,
但为了找到问题,把所有地方都换成了最简单不易出错的表达方法, 估计这样容易定位问题...

我今天在其他环境下验证过了相似的例子,程序这样写是没有问题的
现在看十有**是keil3编译器的问题,至于硬件可以保证是OK的因为已经做过验证了 请问各位大侠们,有人遇到过类似的问题吗?为什么执行调用的时候前面的赋值会失效??

使用特权

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

本版积分规则

0

主题

39

帖子

1

粉丝