打印

关于调用函数使用

[复制链接]
1930|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xvezhe|  楼主 | 2013-7-31 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.
以下为一个被调用的函数;
void CHEJC()
{
              
           P1 = 0xff;                 
         _nop_();
         _nop_();
         _nop_();
         _nop_();
         _nop_();
         CHE_A  = P1;
         CHE_A  &=0x3f;  
}
下面的程序是,将以上的函数的值付给一个数组(CHE_A为全局变量)
dqb_one[i] = CHE_A;  //这样写法是否正确呢?
dqb_one[i] = CHEJC();  //这样写法是否正确呢?
请问各位那种方式是可行的呢?

2.我已经在前面声明过的IO口
sbit CHK_01        = P1^0;
下面我可以这样写程序吗?(   if(P1^0==0)....  )
还是应为(  if(CHK_01==0).....)?
请各位指点。。。

相关帖子

沙发
3htech| | 2013-7-31 15:59 | 只看该作者
1
unsigned char CHEJC()
{
    P1 = 0xff;                 
    _nop_();
    _nop_();
    _nop_();
    _nop_();

    return (P1 & 0x3f);
}

dqb_one[i] = CHEJC();

尽量少用全局变量。

2  if(CHK_01==0)正确。

使用特权

评论回复
板凳
gx_huang| | 2013-7-31 16:03 | 只看该作者
dqb_one[i] = CHE_A;  //这样写法是否正确呢?------正确
dqb_one[i] = CHEJC();  //这样写法是否正确呢?-----错误,这个函数是void

下面我可以这样写程序吗?(   if(P1^0==0)....  )
还是应为(  if(CHK_01==0).....)?
都可以,一般:
if(!CHK_01)   就可以了,因为它是bit变量,是逻辑变量,==0可以去掉,判断是否是逻辑0就可以

使用特权

评论回复
地板
xvezhe|  楼主 | 2013-8-1 09:55 | 只看该作者
3htech 发表于 2013-7-31 15:59
1
unsigned char CHEJC()
{

谢谢,      想再请教一下我写那个代码是错误的呢?:)

使用特权

评论回复
5
grasswolfs| | 2013-8-1 10:08 | 只看该作者
xvezhe 发表于 2013-8-1 09:55
谢谢,      想再请教一下我写那个代码是错误的呢?

这个问题没看懂,2楼3楼说的很清楚了,还想问什么呢?

使用特权

评论回复
6
xvezhe|  楼主 | 2013-8-1 10:47 | 只看该作者
grasswolfs 发表于 2013-8-1 10:08
这个问题没看懂,2楼3楼说的很清楚了,还想问什么呢?

copy下去,编译时候出错。。。。

unsigned char CHEJC()
{
    P1 = 0xff;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        return ( P1 & 0x3f);
}

DJS-X-1.C(216): error C231: 'CHEJC': redefinition

使用特权

评论回复
7
grasswolfs| | 2013-8-1 11:00 | 只看该作者
函数重定义了,把原来前面void的那个函数删掉

使用特权

评论回复
8
xvezhe|  楼主 | 2013-8-1 11:15 | 只看该作者
grasswolfs 发表于 2013-8-1 11:00
函数重定义了,把原来前面void的那个函数删掉

当然删掉了,现不知是不是编译器问题。。。我用的是keil 4

使用特权

评论回复
9
xvezhe|  楼主 | 2013-8-1 11:16 | 只看该作者
grasswolfs 发表于 2013-8-1 11:00
函数重定义了,把原来前面void的那个函数删掉

当然删掉的了,不知是与编译器有没有问题的呢?

使用特权

评论回复
10
grasswolfs| | 2013-8-1 14:32 | 只看该作者
xvezhe 发表于 2013-8-1 11:15
当然删掉了,现不知是不是编译器问题。。。我用的是keil 4

应该不会的,看看头文件里里面有没有改?另外你把这个函数名字改一下看看还报错不?

使用特权

评论回复
11
xvezhe|  楼主 | 2013-8-1 15:03 | 只看该作者
grasswolfs 发表于 2013-8-1 14:32
应该不会的,看看头文件里里面有没有改?另外你把这个函数名字改一下看看还报错不? ...

谢谢,改了函数名就可以了。。。呵呵,这个是为什么呢?

使用特权

评论回复
12
grasswolfs| | 2013-8-1 15:44 | 只看该作者
xvezhe 发表于 2013-8-1 15:03
谢谢,改了函数名就可以了。。。呵呵,这个是为什么呢?

编译时有没有选择“重新生成”而不是“生成”?或者这个名字在库文件中被用了,当然可能性非常小

使用特权

评论回复
13
xvezhe|  楼主 | 2013-8-2 16:55 | 只看该作者
3htech 发表于 2013-7-31 15:59
1
unsigned char CHEJC()
{

谢谢指教。。。

使用特权

评论回复
14
xvezhe|  楼主 | 2013-8-2 16:55 | 只看该作者
gx_huang 发表于 2013-7-31 16:03
dqb_one = CHE_A;  //这样写法是否正确呢?------正确
dqb_one = CHEJC();  //这样写法是否正确呢?-----错 ...

谢谢指教。。。

使用特权

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

本版积分规则

54

主题

225

帖子

2

粉丝