[51单片机] 函数调用不了?怎么回事呢

[复制链接]
1194|9
 楼主| 慧剑温情 发表于 2015-9-9 22:45 | 显示全部楼层 |阅读模式
本帖最后由 慧剑温情 于 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;
        }
}



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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()函数不能调用。
 楼主| 慧剑温情 发表于 2015-9-10 18:00 | 显示全部楼层
刚开始描述错误,应该是void Thekeyadd()函数不能调用,现已改正。
lianer2002 发表于 2015-9-11 17:10 | 显示全部楼层
没遇到过,lz解决了吗
 楼主| 慧剑温情 发表于 2015-9-13 00:48 | 显示全部楼层
lianer2002 发表于 2015-9-11 17:10
没遇到过,lz解决了吗

没有哦
天风立马 发表于 2015-9-13 16:50 | 显示全部楼层
编译提示贴一下。
 楼主| 慧剑温情 发表于 2015-9-13 22:29 | 显示全部楼层

编译通过
 楼主| 慧剑温情 发表于 2015-9-13 22:58 | 显示全部楼层
lianer2002 发表于 2015-9-11 17:10
没遇到过,lz解决了吗

成功解决,将调用函数的变量定义为静态变量就能实现功能了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

39

帖子

1

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