Error c231 redefinition

I wrote the following code for LCD interfacing of the 8051 microcontroller using strings and pointers. I declared two strings namely str1 and str2 and pointers ptr1 and ptr2 respectively. When I

I wrote the following code for LCD interfacing of the 8051 microcontroller using strings and pointers. I declared two strings namely str1 and str2 and pointers ptr1 and ptr2 respectively. When I initiliasied both the pointers to the starting of the strings, I got the error C231 saying that ‘ptr1’ : redefinition and same for ptr2. Following is the code:

#include<reg51.h>
char str1[]="abcd";
char str2[]="efgh";
int i;
char *ptr1;
ptr1=&str1[0];
char *ptr2;
ptr2=&str2[0];
sbit rs=P1^0;
sbit wr=P1^1;
sbit en=P1^2;
void delay()
{
   int i,j;
   for(i=0;i<100;i++)
   for(j=0;j<1275;j++);
}
void lcd_inl()
{
   comwrt(0x38);
   comwrt(0x0f);
   comwrt(0x01);
   comwrt(0x81);
}
void datwrt(char)  
{
    P2=ch;
    rs=1;
    wr=0;
    en=1;
    delay();
    en=0; 
}
void comwrt(int)
{
   P2=i;
   rs=0;
   wr=0;
   en=1;
   delay();
   en=0;
}
void main()
{
   P1=0x00;
   P2=0x00;
   lcd_inl();
   delay();
   while(!*ptr1)
   {
       datwrt(*ptr1);
       ptr1++;
   }
    delay();
    while(!*ptr2)
   {
      comwrt(0xc1);
      delay();
      datwrt(*ptr2);
      ptr2++;
   }
   while(1);  
   }

asked Dec 27, 2016 at 17:06

chayan's user avatar

18

This line

ptr1=&str1[0];

must be within a function, as must all executable code, apart from initialisation statements incorporated as part of the definition.

So you would need

char *ptr1 = str1;

Edit (from OP’s comment) like this:

#include<reg51.h>
char str1[]="abcd";
char str2[]="efgh";
int i;
char *ptr1 = str1;
char *ptr2 = str2;
sbit rs=P1^0;
sbit wr=P1^1;
sbit en=P1^2;

I have looked in reg51.h and there is no str1 or str2 or ptr1 or ptr2. So if you are still getting an error, there is something you haven’t told us.

answered Dec 27, 2016 at 17:47

Weather Vane's user avatar

Weather VaneWeather Vane

33.2k7 gold badges36 silver badges56 bronze badges

6

Цитата
Сообщение от Витальич
Посмотреть сообщение

(правда в IAR это пародия на симулятор)

Тем не менее почему-то все пишут на IAR …. на Keil только под 8051 и язык не особо распространен.

Добавлено через 21 секунду
Хотя я могу и заблуждаться

Добавлено через 6 минут
Далее хочу сделать задержку времени

C++
1
2
#define F_CPU 8000000
#define _delay_us(us)     __delay_cycles((F_CPU / 1000000) * (us));

Получаю ошибку :
Warning[Pe223]: function "__delay_cycles" declared implicitly C:UsersUserDocumentsmain.c 49
Warning[Pe111]: statement is unreachable C:UsersUserDocumentsmain.c 51
Linking
Error[e46]: Undefined external "__delay_cycles" referred in main ( C:UsersUserDocumentsDebugObjmain.r51 )

Я так понимаю он ругается на то что нет такой функции, но в мануалах пишут что это стандартный вызов задержки по времени … ?

Добавлено через 14 минут
и еще не понятны следующие моменты:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//порт к которому подключена шина данных ЖКД
#define PORT_DATA PORTD
#define PIN_DATA  PIND
#define DDRX_DATA DDRD
 
//порт к которому подключены управляющие выводы
#define PORT_SIG PORTB
#define PIN_SIG  PINB
#define DDRX_SIG DDRB
 
//номера выводов микроконтроллера 
//к которым подключены управляющие выводы ЖКД
#define RS 5
#define RW 6
#define EN 7

Как мне узнать как обозначается шина данных в моем чипе ? как вообще находить шину данных на любом чипе ?
Порт к которому подкл. упр. шина :

C
1
#define PORT_SIG PORTВ

я для своего камня заменяю на

?
Дальше вот эта часть мне не понятна как объявить для моего камня :

C
1
2
#define PIN_SIG  PINB
#define DDRX_SIG DDRB

Далее вот эта часть :

C
1
2
3
#define RS 5
#define RW 6
#define EN 7

Я так понимаю устанавливает просто биты ? например

исходя из этого :

C
1
2
3
4
5
6
7
8
9
10
11
12
13
//макросы для работы с битами
#define ClearBit(reg, bit)       reg &= (~(1<<(bit)))
#define SetBit(reg, bit)          reg |= (1<<(bit))    
 
void LcdWriteCom(unsigned char data)
{
  ClearBit(PORT_SIG, RS);    // устанавливаем RS в 0
  PORT_DATA = data;        // выводим данные на шину    
  SetBit(PORT_SIG, EN);    // устанавливаем Е в 1
  _delay_us(2);
  ClearBit(PORT_SIG, EN);    // устанавливаем Е в 0
  _delay_us(40);
}

Спасибо за ответы, и вашу помощь. С праздником вас.

Skip to content



Open


Issue created Jan 18, 2022 by lcwang0@lcwang0Maintainer

SPI sample code compilation error out of the box

Created by: LovelyA72

I am compiling a fresh SPI_Flash sample code from this repository.
The code is unmodified.
I am getting the following errors

Rebuild started: Project: SPI_Flash
Rebuild target 'SPI_Flash'
compiling SPI_Flash.c...
compiling Common.c...
....IncludeFunction_Define.h(9): error C231: 'BIT': redefinition
....IncludeFunction_Define.h(10): error C231: 'UINT8': redefinition
....IncludeFunction_Define.h(11): error C141: syntax error near 'UINT16', expected 'hdata'
....IncludeFunction_Define.h(12): error C141: syntax error near 'UINT32', expected 'hdata'
....IncludeFunction_Define.h(14): error C231: 'uint8_t': redefinition
....IncludeFunction_Define.h(15): error C141: syntax error near 'uint16_t', expected 'hdata'
....IncludeFunction_Define.h(16): error C141: syntax error near 'uint32_t', expected 'hdata'
....IncludeFunction_Define.h(18): error C231: 'int8_t': redefinition
....IncludeFunction_Define.h(19): error C141: syntax error near 'int16_t', expected 'hdata'
....IncludeFunction_Define.h(20): error C141: syntax error near 'int32_t', expected 'hdata'
compiling Delay.c...
assembling STARTUP.A51...
Target not created.

1Answers

Asked by: Betty Bennett
310 views
IT
June 7, 2021

#include

sbit wei=P1^5;

sbit duan=P1^6;

int i,j,k,tables;

tables[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d.0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71}//1,2,3,4,5……E,F

void main()

{

while(1)

{

for(k=0;k>12;k++)

{

duan=1;

P0=tables[k];

duan=0;

P0=0XEE;

for(i=200;i>0;i—)

for(j=200;j>0;j—);

wei=1;

P0=0x0e;

wei=0;

for(i=200;i>0;i—)

for(j=200;j>0;j—);

}

}

}

事牍?c(6): error C231: ‘tables’: redefinition

事牍?c(7): error C141: syntax error near ‘.0’, expected ‘}’

事牍?c(11): error C141: syntax error near ‘{‘, expected ‘;’

事牍?c(16): error C231: ‘duan’: redefinition

事牍?c(16): error C231: ‘duan’: redefinition

事牍?c(17): error C231: ‘P0’: redefinition

事牍?c(17): error C231: ‘P0’: redefinition

事牍?c(18): error C279: ‘duan’: multiple initialization

事牍?c(18): error C231: ‘duan’: redefinition

事牍?c(18): error C231: ‘duan’: redefinition

事牍?c(19): error C279: ‘P0’: multiple initialization

事牍?c(19): error C231: ‘P0’: redefinition

事牍?c(19): error C231: ‘P0’: redefinition

事牍?c(20): error C141: syntax error near ‘for’, expected ‘hdata’

事牍?c(20): error C141: syntax error near ‘=’, expected ‘)’

事牍?c(20): error C129: missing ‘;’ before ‘>’

求大佬解答

@priteshrnandgaonkar this is what needs to be changed to repro:

platform :ios, '10.3' # was 9.0
require_relative '../../../node_modules/@react-native-community/cli-platform-ios/native_modules'

def add_flipper_pods!
  version = '~> 0.33.1'
  pod 'FlipperKit', version, :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitLayoutPlugin', version, :configuration => 'Debug'
  pod 'FlipperKit/SKIOSNetworkPlugin', version, :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitUserDefaultsPlugin', version, :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitReactPlugin', version, :configuration => 'Debug'
end

# Post Install processing for Flipper
def flipper_post_install(installer)
  installer.pods_project.targets.each do |target|
    if target.name == 'YogaKit'
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.1'
      end
    end
  end
end

target 'v1' do
  # Pods for v1
  pod 'FBLazyVector', :path => "../../../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../../../node_modules/react-native/Libraries/FBReactNativeSpec"
  
  ...

  use_native_modules!

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  add_flipper_pods!
  post_install do |installer|
    flipper_post_install(installer)
  
    # this post build is necessary for other dependencies to work, since they use api's not available in 9.0 
    installer.pods_project.targets.each do |t|
      t.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.3'
          config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
      end
    end
  end
end

target 'v1-tvOS' do
  # Pods for v1-tvOS

  target 'v1-tvOSTests' do
    inherit! :search_paths
    # Pods for testing
  end
end

Also had to change the main project to 10.3

Понравилась статья? Поделить с друзьями:
  • Error c2220 следующее предупреждение рассматривается как ошибка
  • Error c2220 warning treated as error no object file generated
  • Error c2220 the following warning is treated as an error
  • Error c2169 intrinsic function cannot be defined
  • Error c2146 синтаксическая ошибка отсутствие перед идентификатором