雪化岩 2019-08-10 09:19 采纳率: 0%
浏览 2783

单片机编写EEPROM时,该程序中为什么只能用<reg52.h>作头文件,而换成<regx52.h>就是错误的呢?

只有用作头文件时调试正确,而换成就报错很多。我知道两个头文件中位定义的格式不一样,但把^改成_之后依旧报错。

#include <reg52.h>           //此文件中定义了单片机的一些特殊功能寄存器

#include "i2c.h"    
#include "nixie.h"
#include "Delay.h"
#include "at24c02.h"

typedef unsigned int u16;     //对数据类型进行声明定义
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;    //定义按键端口

char num=0;
u8 disp[4];



/*******************************************************************************
* 函数名         :Keypros()
* 函数功能       :按键处理函数
* 输入           : 无
* 输出             : 无
*******************************************************************************/
void Keypros()
{
    if(k1==0)
    {
        Delay(10);  //消抖处理
        if(k1==0)
        {
            At24c02Write(1,num);   //在地址1内写入数据num
        }
        while(!k1);
    }
    if(k2==0)
    {
        Delay(10);  //消抖处理
        if(k2==0)
        {
            num=At24c02Read(1);   //读取EEPROM地址1内的数据保存在num中
        }
        while(!k2);
    }
    if(k3==0)
    {
        Delay(1);  //消抖处理
        if(k3==0)
        {
            num++;     //数据加1
            if(num>255)num=0;
        }
        while(!k3);
    }
    if(k4==0)
    {
        Delay(10);  //消抖处理
        if(k4==0)
        {
            num=0;       //数据清零
        }
        while(!k4);
    }       
}

/*******************************************************************************
* 函数名         :datapros()
* 函数功能       :数据处理函数
* 输入           : 无
* 输出             : 无
*******************************************************************************/
void datapros()
{
    disp[0]=num/1000;//千位
    disp[1]=num%1000/100;//百位
    disp[2]=num%1000%100/10;//十位
    disp[3]=num%1000%100%10;    //个位
}


/*******************************************************************************
* 函数名         :DigDisplay()
* 函数功能       :数码管显示函数
* 输入           : 无
* 输出             : 无
*******************************************************************************/
void DigDisplay()
{
    u8 i;
    for(i=0;i<4;i++)
    {
        Nixie(i,disp[3-i]);
    }       
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能       : 主函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void main()
{   
    while(1)
    {
        Keypros();   //按键处理函数
        datapros();  //数据处理函数
        DigDisplay();//数码管显示函数        
    }       
}

报错如下:

F:\单片机\Keil 4\C51\Inc\reg52.h(13): error C231: 'P0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(14): error C231: 'P1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(15): error C231: 'P2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(16): error C231: 'P3': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(17): error C231: 'PSW': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(18): error C231: 'ACC': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(19): error C231: 'B': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(20): error C231: 'SP': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(21): error C231: 'DPL': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(22): error C231: 'DPH': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(23): error C231: 'PCON': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(24): error C231: 'TCON': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(25): error C231: 'TMOD': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(26): error C231: 'TL0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(27): error C231: 'TL1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(28): error C231: 'TH0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(29): error C231: 'TH1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(30): error C231: 'IE': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(31): error C231: 'IP': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(32): error C231: 'SCON': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(33): error C231: 'SBUF': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(36): error C231: 'T2CON': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(37): error C231: 'RCAP2L': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(38): error C231: 'RCAP2H': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(39): error C231: 'TL2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(40): error C231: 'TH2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(45): error C231: 'CY': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(46): error C231: 'AC': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(47): error C231: 'F0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(48): error C231: 'RS1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(49): error C231: 'RS0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(50): error C231: 'OV': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(51): error C231: 'P': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(54): error C231: 'TF1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(55): error C231: 'TR1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(56): error C231: 'TF0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(57): error C231: 'TR0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(58): error C231: 'IE1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(59): error C231: 'IT1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(60): error C231: 'IE0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(61): error C231: 'IT0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(64): error C231: 'EA': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(65): error C231: 'ET2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(66): error C231: 'ES': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(67): error C231: 'ET1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(68): error C231: 'EX1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(69): error C231: 'ET0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(70): error C231: 'EX0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(73): error C231: 'PT2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(74): error C231: 'PS': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(75): error C231: 'PT1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(76): error C231: 'PX1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(77): error C231: 'PT0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(78): error C231: 'PX0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(81): error C231: 'RD': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(82): error C231: 'WR': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(83): error C231: 'T1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(84): error C231: 'T0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(85): error C231: 'INT1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(86): error C231: 'INT0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(87): error C231: 'TXD': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(88): error C231: 'RXD': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(91): error C231: 'SM0': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(92): error C231: 'SM1': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(93): error C231: 'SM2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(94): error C231: 'REN': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(95): error C231: 'TB8': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(96): error C231: 'RB8': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(97): error C231: 'TI': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(98): error C231: 'RI': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(101): error C231: 'T2EX': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(102): error C231: 'T2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(105): error C231: 'TF2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(106): error C231: 'EXF2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(107): error C231: 'RCLK': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(108): error C231: 'TCLK': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(109): error C231: 'EXEN2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(110): error C231: 'TR2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(111): error C231: 'C_T2': redefinition
F:\单片机\Keil 4\C51\Inc\reg52.h(112): error C231: 'CP_RL2': redefinition
compiling i2c.c...
compiling Delay10us.c...
compiling Nixie.c...
compiling Delay.c...
compiling At24c02.c...
Target not created

  • 写回答

2条回答 默认 最新

  • --· ··· ·- 2022-09-20 17:43
    关注

    这个是因为单片机中的IO口冲突引起的,举个简单的例子,<reg52》和regx52也是会有冲突的两者不能同时导入,这个你可以试试。仅供参考。有错勿喷。

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?