打印

帮菜鸟看下简单c51程序!!!pxx得不到p32,为什么啊?

[复制链接]
1588|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nimanha|  楼主 | 2008-12-26 17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include    "reg52.h"
sbit    P32=P3^2;
sbit    P33=P3^3;

void main()
{    void an(bit pxx);    //声明函数
    for(;;)        //循环
    an(P32);        //调用函数
}

void an(bit pxx)
{    
    unsigned  int i;
    P1=0xff;                     //初始,P1灯灭
    while(1)
   {
     for(;;)                           //等待,pxx键按下
          { if(pxx==0)        
            for(i=0;i<10;i++);//去抖动
            if(pxx==0)
             break;
        }
        for(;;)    //等待,如pxx键松开,P1灯亮
         {
           if(pxx==1)
         {  P1=0x00;
           break;}
     }
             
    }
}

相关帖子

沙发
nimanha|  楼主 | 2008-12-27 01:02 | 只看该作者

大家帮忙看下呀,弄了很久,不问题出在哪?

使用特权

评论回复
板凳
无锋| | 2008-12-27 19:46 | 只看该作者

声明函数不应该放在main里边

使用特权

评论回复
地板
nimanha|  楼主 | 2008-12-29 11:04 | 只看该作者

3楼: 声明函数不应该放在main里边

我查了下书,声明函数可以在main里,也可以在函数外部。

我好像有点知道错在哪了。是不是这样:在调用有参函数时,当在运行调用的函数时,这时实际参数发生变化是不会引起形式参数的变化的。

使用特权

评论回复
5
zhiganglet| | 2008-12-29 13:31 | 只看该作者

位寄存器可以用作参数吗?

位寄存器可以用来作函数参数吗?

使用特权

评论回复
6
catwill| | 2008-12-29 19:58 | 只看该作者

应该是传递调用这一时刻的p32的值……

  an(P32);        //调用函数
应该是传递调用这一时刻的p32的值……

楼主把while(1)中的所有pxx都改为p32,并去掉参数就应该可以了。

个人观点,仅供参考。

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝