单片机的函数调用及返回值得执行

[复制链接]
1232|6
 楼主| 小塔云 发表于 2014-12-24 09:04 | 显示全部楼层 |阅读模式
uchar chuzhi()        /*chuzhichenggong sum*10*/
{
        uchar temp,h;
        while(1)
        {
                P3=0xf0;
                if(P3!=0xf0)
                {
                        delay(50);
                        if(P3!=0xf0)
                        {
                                temp=P3;
                                P3=0x0f;
                                key=temp|P3;
                                for(h=0;h<10;h++)
                                {
                                         
                                        if(key==K_table[h])        //dedao 60
                                        {
                                                sum=h;
                                                b[0]=sum*10;
                                                break;
                                                }
               
                                        }
                                }
                        }
                       
        display(b[0]);                  
        }
        return (b[0]);
}
void qidong(uchar sum)
{         
        sum=chuzhi();
          while(1)
         {
                 for(sum=sum;sum>0;sum++)
                 {
                           display(sum);
                        }
        }
第一个函数chuzhi 得到的b[0],调用到qidong 函数,数码管能显示b[0]的值,但sum不能累加显示,只显示b[0]的值。本人初学者,求大神帮忙,谢谢喔
yueguang3048 发表于 2014-12-24 09:52 | 显示全部楼层
本帖最后由 yueguang3048 于 2014-12-24 10:15 编辑

void qidong(uchar j)
{      
        uchar  i;  
        j=chuzhi();
          while(1)
         {
                 for(i=j;i>0;i++)
                 {
                           display(i);
                        }
}
还是这样子清爽些,貌似是你的数码管显示没有刷新内容吧
 楼主| 小塔云 发表于 2014-12-24 10:05 | 显示全部楼层
yueguang3048 发表于 2014-12-24 09:52
void qidong(uchar sum)
{      
        uchar  i;  

谢谢您,可是我照您的说,把sum改为了i,还是只显示调用的值,它不累加。这个程序问题从昨晚调到现在了,唉,
yueguang3048 发表于 2014-12-24 10:16 | 显示全部楼层
本帖最后由 yueguang3048 于 2014-12-24 10:25 编辑
小塔云 发表于 2014-12-24 10:05
谢谢您,可是我照您的说,把sum改为了i,还是只显示调用的值,它不累加。这个程序问题从昨晚调到现在了, ...

void qidong(uchar j)
{      
        uchar  i;  
        j=chuzhi();
          while(1)
         {
                 for(i=j;i>0;i++)
                 {
                           display(i);
                        }
}

你再试试 这个 貌似你的sum是个全局变量 有些混乱,如果还是不行的话,可能就是你的display函数有些问题
 楼主| 小塔云 发表于 2014-12-24 13:11 | 显示全部楼层
yueguang3048 发表于 2014-12-24 10:16
void qidong(uchar j)
{      
        uchar  i;  

非常感谢,但还是那个情况,可能我的程序其他地方问题太多,得不到想要的累加显示。
NE5532 发表于 2014-12-24 13:16 | 显示全部楼层
小塔云 发表于 2014-12-24 13:11
非常感谢,但还是那个情况,可能我的程序其他地方问题太多,得不到想要的累加显示。 ...

建议《程序调试黑宝书》,要学会自己分解问题和找问题。
joyme 发表于 2014-12-24 17:27 | 显示全部楼层
display(i);   语句后面加至少100ms的延时试试,可能是屏来不及刷新
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部