标题: error C231: 'RCLK': redefinition关于单片机8*8_LED点阵点亮第一个灯报错问题 [打印本页]

作者: zhyixi    时间: 2020-3-21 21:22
标题: error C231: 'RCLK': redefinition关于单片机8*8_LED点阵点亮第一个灯报错问题
大佬们 我想请问为什么我老是出现一个报错:..\user\includes.h(20): error C231: 'RCLK': redefinition代码示例:
自己定义的文件:
#ifndef _INCLUDES_H_
#define _INCLUDES_H_

#include<reg52.h>
#include<intrins.h>

sbit SRCLK = P3^6;
sbit RCLK = P3^5;
sbit SER = P3^4;

#define GPIO_LIGHT P0
#define GPIO_KEY P1

typedef unsigned char u8;
typedef unsigned int u16;

u8 code smgduan[16] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
//共阴数码管
void Hc595SendByte(u8 dat1, u8 dat2);

void Hc595SendByte(u8 dat1, u8 dat2)
{
        u8 i;
        SRCLK = 1;
        RCLK = 1;
        for(i = 0; i< 8;i++)
        {
                SER = dat1>>7;
                dat1<<=1;
               
                SRCLK = 0;
                _nop_();
                _nop_();
                SRCLK = 1;
        }
        for(i = 0; i< 8;i++)
        {
                SER = dat2>>7;
                dat2<<=1;
               
                SRCLK = 0;
                _nop_();
                _nop_();
                SRCLK = 1;
        }

        RCLK = 0;
        _nop_();
        _nop_();
        RCLK = 1;
}

#endif


我的主函数:
#include"includes.h"

/*
        函数名称:主函数
        函数功能:运行程序入口
*/

void main()
{
        while(1)
        {
                Hc595SendByte(0xfe,0x01);
        }
}


--------------------------------------------------------------------------------------------------------------------------------------------
以下是我买的开发板的原理图:



作者: csmyldl    时间: 2020-3-22 02:58
把程序中的所有RCLK改为SRCLK就行了
作者: zhyixi    时间: 2020-3-24 16:32
csmyldl 发表于 2020-3-22 02:58
把程序中的所有RCLK改为SRCLK就行了

请问为什么?RCLK用的是P3^5 ,如果都改成了SRCLK 那P3^5谁用?不是出现重复定义吗
作者: wulin    时间: 2020-3-24 17:43
程序中sbit RCLK = P3^5;需要重新命名,因为与头文件#include<reg52.h>里的寄存器命名重名sbit RCLK   = T2CON^5;,沙发的建议行不通,会导致595工作不正常。建议改为sbit LCLK = P3^5;,程序中的名称也要一道改成LCLK。
作者: zhyixi    时间: 2020-3-25 17:27
wulin 发表于 2020-3-24 17:43
程序中sbit RCLK = P3^5;需要重新命名,因为与头文件#include里的寄存器命名重名sbit RCLK   = T2CON^5;, ...

谢谢!
作者: olele    时间: 2020-7-2 23:04
你的<reg52.h>改为<reg51.h>应该就可以了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1