头文件检查了感觉没问题啊,不知道哪里出了问题

问题遇到的现象和发生背景

头文件检查了感觉没问题啊,不知道哪里出了问题

问题相关代码,请勿粘贴截图
#include <REGX52.H>
#include "Timer0.h"
#include "Int0.h"

unsigned char State;
unsigned char Couter0;
unsigned char IR_Data[4];
unsigned char IR_pData;
unsigned char IR_Address;
unsigned char IR_Command;
unsigned char IR_RepeatFlag;
unsigned char IR_DatatFlag;

void IR_Init()
{
    Timer0_Init();
    Int0_Init ();
}
unsigned char IR_GetDatatFlag()
{
    if(IR_DatatFlag)
    {
        return IR_GetDatatFlag;
        IR_DatatFlag=0;
    }
    return IR_DatatFlag;
}

unsigned char IR_GetRepeatFlag()
{
    if(IR_RepeatFlag)
    {
        return IR_RepeatFlag;
        IR_RepeatFlag=0;
    }
    return IR_RepeatFlag;
}

unsigned char IR_GetAddress()
{
    return IR_Address;
}

unsigned char IR_GetCommand()
{
    return IR_Command;
}

void Int0_Routine() interrupt 0
{
    if (State==0)
    {
        Timer0_SetCounter(0);
        Timer0_Run(1);
        State=1;
    }
    else if (State==1)
    {
        
        Couter0=Timer0_GetCounter();
        if (Couter0>12442-500&&Couter0<12442+500)//start
        {
            State=2;
            Timer0_SetCounter(0);
        }
        IR_RepeatFlag=0;
        else if(Couter0>10368-500 && Couter0<10368+500)//repeat
        {
            IR_RepeatFlag=1;
            State=0;
            Timer0_Run(0);
        }
        else 
        {
            State=1;
        }
    }
    else if (State==2)
    {
        Couter0=Timer0_GetCounter();
        if (Couter0>1032-500&&Couter0<1032+500)      //数据为0
        {
            IR_Data[IR_pData/8]&=(0xFE<<(IR_pData%8));
            IR_pData++;
            Timer0_SetCounter(0);
        }
        else if(Couter0>2074-500&&Couter0<2074+500)  //数据为1
        {
            IR_Data[IR_pData/8]|=(0x01<<(IR_pData%8));
            IR_pData++;
            Timer0_SetCounter(0);
        }
        else 
        {
            State==0;
            IR_pData=0;
        }
        if(IR_pData>=32)
        {
            IR_pData=0;
            State=0; 
            Timer0_Run(0);
            if(IR_Data[0]==~IR_Data[1]&&IR_Data[2]==~IR_Data[3])
            {
                IR_Address=IR_Data[0];
                IR_Command=IR_Data[2];
                IR_DatatFlag=1;
            }
        }
    }
}


#ifndef __TIMER0_H__
#define __TIMER0_H__

void Timer0_Init(void);
unsigned char Timer0_GetCounter();
void Timer0_SetCounter(unsigned char Data);
void Timer0_Run(unsigned char RunState);

#endif
###### 运行结果及报错内容 
IR.c(16): warning C206: 'Timer0_Init': missing function-prototype
IR.c(53): warning C206: 'Timer0_SetCounter': missing function-prototype
IR.c(53): error C267: 'Timer0_SetCounter': requires ANSI-style prototype
我的解答思路和尝试过的方法
我想要达到的结果

Timer0_Init、Timer0_SetCounter、Timer0_SetCounter这几个函数有没有实现?没实现的话会报错
实现函数的的文件需要包含 Timer0.h

117-120行四个函数在哪里实现的啊?