打印
[51单片机]

函数调用不了?怎么回事呢

[复制链接]
890|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 慧剑温情 于 2015-9-10 17:57 编辑

以下是函数全部,函数void Thekeyadd()在主函数里调用不起,但是把void Thekeyadd()函数内容直接写到主函数里就能正常运行,怎么回事啊??附带能正常运行图片
#include<reg52.h>
sbit keyout4=P2^0;
sbit key=P2^6;
unsigned char code ledchar[]={
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
        };
unsigned char ge=0;
unsigned char shi=0;
void delay();
void Thekeyadd();
void main()
{
        
        keyout4=0;
        P1=0x08;
        P0=0xff;
        EA=1;
        TMOD=0X01;
        TH0=0XFC;
        TL0=0X67;
        ET0=1;
        TR0=1;
        
        while(1)
        {
                  
                Thekeyadd();
        }
}
void delay()
{
        unsigned int shu=1000;
        while(shu)
        {
                shu--;
        }
}
void Thekeyadd()
{
        unsigned char sec=0;
        unsigned kbuff;
        bit backup=1;
        ge=sec%10;
        shi=sec/10%10;
        kbuff=key;
        if(kbuff!=backup)
        {
                delay();
                if(kbuff==key)
                {
                        if(backup==0)
                        {
                                sec++;
                                if(sec>=100)
                                {
                                        sec=0;
                                }
                        
                        }
                        backup=kbuff;
                }
        }                        
}
void interrupttimer0() interrupt 1
{
        static unsigned char i=0;
        TH0=0XFC;
        TL0=0X67;
        P0=0XFF;
        switch(i)
        {
                case 0:P1=0X08;i++;P0=ledchar[ge];break;
                case 1:P1=0X09;i=0;P0=ledchar[shi];break;
                default :break;
        }
}



QQ截图20150909223706.png (100.13 KB )

QQ截图20150909223706.png

相关帖子

沙发
ningling_21| | 2015-9-10 08:35 | 只看该作者
程序编译没问题吗

使用特权

评论回复
板凳
NE5532| | 2015-9-10 08:56 | 只看该作者
你的截图和文字描述不一样,截图是把void Thekeyadd()放到Main里,不是delay,请楼主检查哪个描述是正确的?

使用特权

评论回复
地板
慧剑温情|  楼主 | 2015-9-10 17:59 | 只看该作者
NE5532 发表于 2015-9-10 08:56
你的截图和文字描述不一样,截图是把void Thekeyadd()放到Main里,不是delay,请楼主检查哪个描述是正确的 ...

描述错误,应该是void Thekeyadd()函数不能调用。

使用特权

评论回复
5
慧剑温情|  楼主 | 2015-9-10 18:00 | 只看该作者
刚开始描述错误,应该是void Thekeyadd()函数不能调用,现已改正。

使用特权

评论回复
6
lianer2002| | 2015-9-11 17:10 | 只看该作者
没遇到过,lz解决了吗

使用特权

评论回复
7
慧剑温情|  楼主 | 2015-9-13 00:48 | 只看该作者
lianer2002 发表于 2015-9-11 17:10
没遇到过,lz解决了吗

没有哦

使用特权

评论回复
8
天风立马| | 2015-9-13 16:50 | 只看该作者
编译提示贴一下。

使用特权

评论回复
9
慧剑温情|  楼主 | 2015-9-13 22:29 | 只看该作者

编译通过

使用特权

评论回复
10
慧剑温情|  楼主 | 2015-9-13 22:58 | 只看该作者
lianer2002 发表于 2015-9-11 17:10
没遇到过,lz解决了吗

成功解决,将调用函数的变量定义为静态变量就能实现功能了

使用特权

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

本版积分规则

9

主题

39

帖子

1

粉丝