又遇到问题了。请前辈指点一下,谢谢了。

[复制链接]
784|5
手机看帖
扫描二维码
随时随地手机跟帖
tianxiongweitxw|  楼主 | 2018-9-26 20:43 | 显示全部楼层 |阅读模式
本帖最后由 tianxiongweitxw 于 2018-9-26 20:59 编辑

主函数 调用Inflating(  uchar Valve_x) ,想改变全局变量VALVE1的取值 ,但调试结果是VALVE1的值 没有改变,找不到原因。
void  Inflating(  uchar Valve_x)
           {
     while(1)
         {
          Valve_x=1;
             QiBeng_JD1=1;              
         if(AD_DATA>AntiSnore_Pressure)
                         {
                                  QiBeng_JD1=0;
                          break ;
                          }         
           }
               
  }

void main(void)
{
        MCUInit();                                 //MCU初始化
        EA  = 1;                        //开启全局中断
        while(1)
        {                           
         Inflating(VALVE1);                  
                }
        
}

相关帖子

ohy3686| | 2018-9-27 00:34 | 显示全部楼层
哈哈哈~
VALVE1的值当然不会改变了。
将全局变量VALVE1作为参数传递给Inflating()函数,
实际上传递给Inflating()函数的不是全局全局变量VALVE1本身
而是全局变量VALVE1的副本
换句话说,在Inflating()函数中对VALVE1的任何改变都不会影响局变量VALVE1。
要实现你的想法,可以使用指针。
Inflating(&VALVE1);来调用。
当然,你的Inflating()要重新编写了
最起码你的的参数应该是指针。
void  Inflating(  uchar * Valve_x)
{  ........  }

使用特权

评论回复
ayb_ice| | 2018-9-27 08:29 | 显示全部楼层
参数是值传递

可以传入地址解决

使用特权

评论回复
tianxiongweitxw|  楼主 | 2018-9-27 08:57 | 显示全部楼层
已经解决了,就是用指针。谢谢各位的热情回答,感谢!!!

使用特权

评论回复
diweo| | 2018-9-27 11:43 | 显示全部楼层
既然是全局变量,那还用参数传来传去干嘛?直接改不就得了?

使用特权

评论回复
tianxiongweitxw|  楼主 | 2018-9-28 09:06 | 显示全部楼层
diweo 发表于 2018-9-27 11:43
既然是全局变量,那还用参数传来传去干嘛?直接改不就得了?

因为是同一种操作,对象是四个,放函数里面调用,程序结构更清晰。

使用特权

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

本版积分规则

71

主题

517

帖子

0

粉丝