pppphhhhyyyy 2023-08-20 22:59 采纳率: 80.6%
浏览 4
已结题

51单片机相关的错误C141

51单片机错误141,不知道错在那里,想请问一下

img


#include "regx52.h"
#include "T0_Chu.h"

unsigned int Timecount;
unsigned char IR[4];
unsigned char IR_add;
unsigned char IR_Flagrepeat;
unsigned char Command;
unsigned char Address;
unsigned char Data_Flag;
unsigned char Start;

#include "regx52.h"
unsigned int T;

void T0_Chu(void)
{
    TMOD &=0xF0;
    TMOD |=0x01;
    TH0=0;
    TL0=0;
    TR0=1;
    TF0=0;
    ET0=1;
    EA=1;
    PT0=0;
}

void Time0_setcount(unsigned int m)
{
    TL0 = m % 256;
    TH0 = m / 256;
}

void Time0_run(unsigned char n)
{
    TR0 = n;
}

unsigned int Time0_out(void)
{
    T=(TH0<<8)|TL0;
    return T;
}

unsigned char IR_Repeatcommand(void)
{
    if (IR_Flagrepeat == 1)
    {
        IR_Flagrepeat = 0;
        return 1;
    }
    return 0;
}

void INT0_init(void)
{
    TR0 = 0;
    IT0 = 1; IE0 = 0;
    EX0 = 1; EA = 1; PX0 = 1;
}

void IR_init(void)
{
    T0_Chu(void); INT0_init(void);
}
unsigned char IR_Datacommand(void)
{
    if (Data_Flag == 1)
    {
        Data_Flag = 0;
        return 1;
    }
    return 0;
}

unsigned char IR_address(void)
{
    return Address;
}

unsigned char IR_command(void)
{
    return Command;
}

void INT0_stop() interrupt 0
{
    if(Start==0)
    {
        Time0_setcount(0); Time0_run(1); Start = 1;
    }
    else if (Start)
    {
        Timecount = Time0_out(void); Time0_setcount(0);
        if (Timecount >= 13500 - 500 && Timecount <= 13500 + 500)
        {
             Start=2;
        }
        else if (Timecount >= 11250 - 500 && Timecount <= 11250 + 500)
        {
            Time0_run(0); Start = 0; IR_Flagrepeat = 1;
        }
        else
        {
            Start = 1;
        }
    }
    else
    {
        Timecount = Time0_out(void);
        Time0_setcount(0);
        if (Timecount >= 1120 - 500 && Timecount <= 1120 + 500)
        {
            IR[IR_add / 8] &= ~(0x01 << (IR_add % 8));
            IR_add++;
        }
        else if (Timecount >= 2250 - 500 && Timecount <= 2250 + 500)
        {
            IR[IR_add / 8] |= 0x01 << (IR_add % 8);
            IR_add++;
        }
        else
        {
            IR_add = 0;
            Start = 1;
        }
        if (IR_add >= 32)
        {
            IR_add = 0;
            if(IR[0]==~IR[1] && IR[2]==~IR[3])
            {
                Data_Flag = 1;
                Address = IR[0];
                Command = IR[2];
            }
            Time0_run(0);
            Start = 0;
        }
    }
}

  • 写回答

2条回答 默认 最新

  • 智者知已应修善业 2023-08-21 07:54
    关注

    如果函数没参数的话括号里面空即可无需这样(void)写,另外也无需写2个#include "regx52

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 已采纳回答 9月4日
  • 修改了问题 8月20日
  • 创建了问题 8月20日