玉米玉米粒 2025-03-04 11:09 采纳率: 0%
浏览 15
已结题

51单片机模块化编程报错

刚刚入门在做51单片机模块化编程时出现了问题,报错如图

img

这是main.c

#include <at89c51RC2.h>
#include "Delay.h"
#include "Nixie.h"

void main()
{
    while(1)
    {
        Nixie(1;2);    
        Nixie(2,6);
        Nixie(3,2);
        Nixie(4,5);
        Nixie(5,1);
        Nixie(6,4);
    }
}

这是Delay.c

void Delay(unsigned int xms)        //@11.0592MHz
{
    unsigned char i, j;
    while(xms--)
    {
        i = 2;
        j = 199;
        do
        {
            while (--j);
        } while (--i);
    }
}

这是Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);

#endif


这是Nixie.c

#include <at89c51RC2.h>
#include "Delay.h"
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};

void Nixie(unsigned char LED,Num)
{
    switch(LED)
    {
        case 1: P2_4=1;P2_3=1;P2_2=1;break;
        case 2: P2_4=1;P2_3=1;P2_2=0;break;
        case 3: P2_4=1;P2_3=0;P2_2=1;break;
        case 4: P2_4=1;P2_3=0;P2_2=0;break;
        case 5: P2_4=0;P2_3=1;P2_2=1;break;
        case 6: P2_4=0;P2_3=1;P2_2=0;break;
        case 7: P2_4=0;P2_3=0;P2_2=1;break;
        case 8: P2_4=0;P2_3=0;P2_2=0;break;
    }
    P0 = NixieTable[Num];
    Delay(1);
    P0 = 0x00;
}


这是Nixie.h

#ifndef__NIXIE_H__
#define__NIXIE_H__

void Nixie(unsigned char LED,Num);

#endif

请问这种错误该如何改正,感谢大家帮助

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2025-03-04 11:09
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    你正在使用51单片机进行模块化编程,遇到了报错问题。报错信息未提供,但你提供了main.c文件的代码,包括头文件的包含和一些函数的调用。

    解决方案

    1. 检查头文件的包含顺序:在main.c文件中,你包含了三个头文件:at89c51RC2.hDelay.hNixi.h。请检查头文件的包含顺序是否正确。如果头文件之间存在依赖关系,需要将依赖关系正确地包含。
    2. 检查函数的调用顺序:在main.c文件中,你调用了DelayNixi函数。请检查函数的调用顺序是否正确。如果函数之间存在依赖关系,需要将依赖关系正确地调用。
    3. 检查头文件的定义:请检查Delay.hNixi.h头文件中的定义是否正确。如果头文件中的定义存在错误,可能会导致编译错误。
    4. 检查编译器的设置:请检查编译器的设置是否正确。如果编译器的设置存在错误,可能会导致编译错误。

    代码示例

    以下是一个简单的示例代码,演示如何使用51单片机模块化编程:

    #include <at89c51RC2.h>
    #include "Delay.h"
    #include "Nixi.h"
    
    void main(void)
    {
        // 初始化延时模块
        Delay_Init();
    
        // 初始化Nixi模块
        Nixi_Init();
    
        // 你的程序逻辑代码
        while (1)
        {
            // 你的程序逻辑代码
        }
    }
    

    请注意,这只是一个简单的示例代码,实际情况中可能需要根据具体的需求和情况进行修改。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月4日
  • 创建了问题 3月4日