Conflito entre macro e LiquidCrystal_I2C lcd

Ola não consigo compilar o programa que esta dando erro

expression cannot be used as a function linha 12. Mas se retiro a linha do LiquidCrystal_I2C ele aceita a macro, acho que a variável do LCD 0x27 entra em conflito com a variável da macro das portas PORTX e DDRX e PINX da macro. Segue código abaixo, como posso consertar isso?

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//Inicializa o display no endereco 0x27

#include <avr/io.h>
#include <util/delay.h>

#define set_bit(Y,bit_x) (Y|=(1<<bit_x)) //ativa o bit x da variável Y (coloca em 1)
#define clr_bit(Y,bit_x) (Y&=~(1<<bit_x)) //limpa o bit x da variável Y (coloca em 0)
#define tst_bit(Y,bit_x) (Y&(1<<bit_x)) //testa o bit x da variável Y (retorna 0 ou 1)
#define cpl_bit(Y,bit_x) (Y^=(1<<bit_x)) //troca o estado do bit x da variável Y complementa)
o compilador para na linha #define set_bit(Y,bit_x) (YI=(1<<bit_x))

Ola @getulio ,

compilei este fragmento de programa que você
postou e não deu nenhum erro.

Dê mais detalhes sobre seu sketch e sobre o erro.

Leia "How to get the best out of this forum"

RV mineirin

ola Ruilviana, desculpa por não ter postado ontem, mas vamos la.
o programa segue a logica do FBD (blocos com transições entre as ações), meu primeiro skatch usava pinmode- digitalRead -DigitalWrite, mas estava tive problemas com lentidão na leitura das postas e acionamento dos reles, não sou programador e apenas estudo em casa para fazer minhas pequenas automações, deve conter erros de logica e programação no skatch. segue abaixo o codigo inteiro.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <avr/io.h>        
#include <util/delay.h> 
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//Inicializa o display no endereco 0x27

#define  set_bit(Y,bit_x) (Y|=(1<<bit_x))    //ativa o bit x da variável Y (coloca em 1)
#define  clr_bit(Y,bit_x) (Y&=~(1<<bit_x))   //limpa o bit x da variável Y (coloca em 0) 
#define  tst_bit(Y,bit_x) (Y&(1<<bit_x))     //testa o bit x da variável Y (retorna 0 ou 1)
#define  cpl_bit(Y,bit_x) (Y^=(1<<bit_x))    //troca o estado do bit x da variável Y (complementa)

#define   AND  &&
#define   OR   ||
#define   NOT  !


//#define set_bit(RES, BIT)(RES |= (1 << BIT)) // Por BIT em nível alto
//#define clr_bit(RES, BIT)(RES &= ~ (1 << BIT)) // Por BIT em nível baixo
//#define tst_bit(RES, BIT)(RES &  (1 << BIT)) // testar BIT, retorna 0 ou 1
//#define cpl_bit(RES, BIT)(RES ^= (1 << BIT)) // Inverter estado do BIT

#define pino2_sensor PE4


volatile  byte sensor1=LOW;            //HIGH;

volatile byte valor = LOW ;            //HIGH;
volatile byte Cv1=  HIGH   ;           //HIGH;
volatile byte Cv2= HIGH    ;           // HIGH;
volatile byte  estado_anterior_sensor=   LOW ;       //HIGH;
volatile byte conta1 = LOW;
volatile byte conta2=LOW;



// variaveis etapas


int E0; int E1; int E2;  int E3;  int E4; int E5; int E6; int E7;

int E8; int E9; int E10; int E11; int E12;


// variaveis de transisao


int M0; int M2; int M3; int M4; int M5;


int M6; int M7; int M8; int M9; int M10; int M11; int M12; 


// fariaveis de transicao  ou esclusivo


int MT2;  
int MT3; 
int MT4=0; 
int MT5=0;
int MT6;
int MT7;  
int MT10; 
int MT11;





//entradas

const byte BTN_LIGAR = PA0;      // Botao LIGAR PINO 22  PA0

const byte BTN_DESLIGAR = PA1;   // BotaO DESLIGAR PINO 23  PA1

const byte BTN_POS1 = PA2;       //BOTao posicao 1 DO CARRINHO PINO 24  PA2
  
const byte BTN_POS2 = PA3;       //Boato posicao 2 DO CARRINHO PINO 25  PA3

const byte BTN_FABRICAR = PA4;   //Botao FABRICAR  PINO 26 PA4

const byte BTN_PROGRAMAR = PA5;  //Botao  programar no pino 27 PA5

const byte BTN_CONT1 = PA6;   //botao contador 1 da programacao PINO 28 PA6

const byte BTN_CONT2 = PA7;    //botao contador 2 da programacao PINO 29 PA7

const byte  BTN_MAIS = PC6;    //botao crescende  da programacao PINO 31  PC6

const byte  BTN_MENOS = PC4;  //botao decresente da programacao PINO 33  PC4

const byte  BTN_OK = PC2;    //botao finalizador da  programacao dos contadores PINO 35 PC2

const byte SENSOR_POS1 = PL4;    //SENSOR INDUTIVO CARRINHO  POSIcao 1  PINO 45 PL4

const byte SENSOR_POS2 = PL2;    //SENSOR INDUTIVO CARRINHO POSIcao 2  PINO 47  PL2


//saidas


const byte BOMBA_OLEO = PC7;     // BOMBA DE OLEO , rele n1 PINO 30  PC7

const byte MOTOR1 = PC5;         //MOTOR DE FABRICAcao DA TELA , rele n2 PINO 32 PC5

const byte CIL_CARRINHO =  PC3;   //SOLENOIDE CILINDRO PNEUMATICO DO CARRINHO   ,rele n3 PINO 34 PC3

const byte CIL_GAN = PC1;        //SOLENOIDE CILINDRO PNEUMATICO DA GANCHEIRA   ,rele n4 PINO 38 PC1

//int CIL_DOBRADOR = 41;  //SOLENOIDE CILINDRO PNEUMATICO DO  DOBRADOR 1 E 2   ,rele n5 PINO 41

//int led1 = 42;           // LED INDICADOR DE LIGADO pino 42


//variaveis do contador

unsigned int contador_s1 = 0;     //VARIAVEL de preset do contador 1

unsigned int contador_s2 = 0;     //VARIAVEL de preset do contador 2

unsigned int preset_s1 = 0;        //variavel que amarsena  valor lido dos sensores para contagem do contador 1

unsigned int preset_s2 = 0;        //variavel que amarsena  valor lido dos sensores para contagem  do contador 2


//variaveis de controle



int desliga = 0;                //desliga o processo quando BTN_DESLIGAR for apertado
int ETAPA = 0;                  //variavel que mostra em qual etapa esta o processo etapas 
int estado = 0;                 // variavel de controle acionada pelo BTN_LIGAR 
int programar = 0;              // variavel acionada quando BTN_PROMGRAMAR  e apertado e abilita a mudanca do  valor de contado s1 e S2
int cont1 = 0;                  // seleciona o contador_s1 para incrementar ou decrementar o valor da variavel
int cont2 = 0;                  // seleciona o contador_s2 para incrementar ou decrementar o valor da variavel



void setup()
{
 
sensor1= HIGH;
  lcd.begin (20, 4);       //Inicializa o display LCD 20x4 I2C 


  //entradas


DDRE &= ~pino2_sensor;     // Configura o pino 2 sensor eixo faca INPUT

DDRA &= ~BTN_LIGAR;
DDRA &= ~BTN_DESLIGAR;
DDRA &= ~BTN_POS1;
DDRA &= ~BTN_POS2;
DDRA &= ~BTN_FABRICAR;
DDRA &= ~BTN_PROGRAMAR;
DDRA &= ~BTN_CONT1;
DDRA &= ~BTN_CONT2;

DDRC &= ~BTN_MAIS;
DDRC &= ~BTN_MENOS;
DDRC &= ~BTN_OK;

DDRL &= ~SENSOR_POS1;
DDRL &= ~SENSOR_POS2;

 //SAIDAS

// o  como OUTPUT (1)

DDRC |= BOMBA_OLEO;             // o pino 30 como OUTPUT PC7
DDRC |= MOTOR1;                 // o pino 32 como OUTPUT PC5
DDRC |= CIL_CARRINHO;           // o pino 34como OUTPUT  PC3
DDRC |= CIL_GAN;                // o pino 38 como OUTPUT PC1

 // colocar os pinos de saida em 5v  rele logica HIGH

set_bit(PORTC,BOMBA_OLEO);         // rele n1

set_bit(PORTC,MOTOR1);             //rele n2

 set_bit(PORTC,CIL_CARRINHO);     // rele n3

set_bit(PORTC,CIL_GAN);           // rele n4

   // digitalWrite(CIL_DOBRADOR, HIGH); // rele n5


   //estado inicial das variaveis

contador_s1 = 17;    contador_s2 = 18;   preset_s1 = 0;     preset_s2 = 0;

desliga = 0;         ETAPA = 0;       estado = 0;        

programar = 0;       cont1 = 0;       cont2 = 0;


 // DECLARACAO DOS ESTADOS INICIAIS DAS ETAPAS

  E0 = 1; // ETAPA INICIAL ATIVANA DA INICIALIZACAO

  E1 = 0; E2 = 0; E3 = 0; E4 = 0; E5 = 0; E6 = 0; E7 = 0;

  E8 = 0; E9 = 0; E10 = 0; E11 = 0; E12 = 0; 

  M0 = 0;  M2 = 0;  M3 = 0;  M4 = 0;  M5 = 0;
  
  M6 = 0;  M7 = 0;    M8 = 0;  M9 = 0;  M10 = 0;
  
  M11 = 0;   M12 = 0; 

  MT2 = 0;   MT3 = 0;   MT6 = 0;   MT7 = 0;
  
  MT10 = 0;  MT11 = 0;  MT4=0;     MT5=0;
}

void loop() {

  //informacoes iniciais do lcd

  //lcd.setBacklight(HIGH);

  lcd.setCursor(0, 0);
  lcd.print("maquina=");

  lcd. setCursor(0, 1);
  lcd.print("valor:    atual:");

  lcd.setCursor(0, 2);
  lcd.print("cont1:");         // contador 1

  lcd.setCursor(6, 2);
  lcd.print(contador_s1);      // mostra o valor de pre-selecao do contador 1 

  lcd.setCursor(10, 2);
  lcd.print(preset_s1);        //mostra o valor  da variavel preset_s1 

  lcd.setCursor(15, 2);
  lcd.print("ETAPA");         //mostra  a palavra em etapa no lcd

  lcd.setCursor(0, 3);
  lcd.print("cont2:");        //contador 2

  lcd.setCursor(6, 3);
  lcd.print(contador_s2);     //mostra o valor de pre-selecao do contador 2

  lcd.setCursor(10, 3);
  lcd.print(preset_s2);       //mostra o valor  da variavel preset_2

  lcd.setCursor(15, 3);
  lcd.print(ETAPA);          //mostra em qual etapa esta o programa

  if (estado == 1) {         // se a variavel estado for 1  mostra a palavra ligado no lcd
    // lcd.clear();
    lcd.setCursor(9, 0);
    delay(150);
    lcd.print("lidado---");
  }
  else {                     //se nao mostra desligado
    lcd.setCursor(9, 0);
    lcd.print("desligado");
  }



  // condicoes das etapas e transicoes
     
 E0 = ((E0 |  (E7 & M7) | (E11  & M11) ) & (~E1));   // E0 vai no inicio da ilicializacao e etapa 7 e transicao M7 ou E11 e M11 for concluida  e E1 for =0
 
 E1 = ((E1   | (E0 & M0 )) & (~E2 ) &(~E3) );     // E1 e  = 1 quando a etapa E0 e transicao M0 for igual a 1 e  E2 e E3 = 0

 E2 = ((E2 | (E1 & MT2))  & (~E4));               // E2 e =1 quando a etapa E1 e transicao MT2 for igual a 1 e  E4 = 0
 
 E3 = ((E3 | (E1 & MT3 ))  & (~E5));             // E3 e =1 quando a etapa E1 e transicao MT3 for igual a 1 e  E5 = 0
       
 E4 = ((E4 | (E2 & M2 )  | ( E9 & MT4 ))    &  (~E6 ) & (~E7));  // E4 e =1 quando a etapa E2 e transicao M2 ou E9 e transicao MT4 igual a 1 e  E6 e E7 = 0

 E5 = ((E5  | (E3  & M3 )  |  (E9  & MT5 ))   &  (~E10) & (~E11)); // E5 e =1 quando a etapa E3 e transicao M3 ou E9 e transcao MT5 igual a 1 e  E10 e E11 = 0
 
 E6 = ((E6 | (E4  & MT6)) & (~E8));              // E6 e =1 quando a etapa E4 e transicao MT6 for igual a 1 e  E8 = 0

 E7 = ((E7 | (E4  & MT7)) & (~E0));               // E7 e =1 quando a etapa E4 e transicao MT7 for igual a 1 e  E0 = 0

 E8 = ((E8  | (E6  & M6 )) & (~E9));              // E8 e =1 quando a etapa E6 e transicao M6 for igual a 1 e  E9 = 0

 E9 = ((E9 |  ( (E8 & M8) | (E12 & M12)   ) )  &  (~E4)  & (~E5) );   // E9 e =1 quando a etapa E8 e transicao M8 ou E12 e transicao M12 igual a 1 e  E4 e E5 = 0
 
 E10 = ((E10 | (E5  & MT10 ))  & (~E12) );           // E10 e =1 quando a etapa E5 e transicao MT10 for igual a 1 e  E12 = 0

 E11 = ((E11 | (E5 & MT11)) & (~E0));              // E11 e =1 quando a etapa E5 e transicao MT11 for igual a 1 e  E0 = 0

 E12 = ((E12 | (E10  &  M10 ))  & (~E9));        // E12 e =1 quando a etapa E10 e transicao M10 for igual a 1 e  E9 = 0


//condicoes iniciais
 // if ( estado == 1) {              // quando a variavel estado for 1 liga o led1
//    digitalWrite(led1, HIGH);
  


if (tst_bit(PINA,BTN_DESLIGAR)== 1)  {   // quando o BTN_DESLIGAR for acionado a fariavel desliga asume o valor 1
    desliga = 1;
  }



  if (desliga == 1) {                   //quando a variavel edesliga e 1 
    set_bit(PORTC,MOTOR1);       //  desliga o motor1 no rele n1, obs  rele desliga desliga com HIGH
    set_bit(PORTC, BOMBA_OLEO);         //desliga bonba na saida n1 do rele
    //digitalWrite(led1, LOW);       desliga o led1
   conta1=LOW;
   conta2=LOW;
   Cv1=HIGH;
   Cv2=HIGH;
   
   estado = 0;                        //variavel estado = 0
   lcd.clear();                       //lipa o lcd
   desliga = 0;                       //coloca a variavel desliga =0 como no inicio
  

  
 E0 = 1;         // COLOCA TUDO COMO NA  INICIALIZAcao DO PROCESSO MESNOS OS CONTADORES E ABILITA APENAS E0 PARA NICIALIZAR O PROCESSO

  E1 = 0; E2 = 0; E3 = 0; E4 = 0; E5 = 0; E6 = 0; E7 = 0;

  E8 = 0; E9 = 0; E10 = 0; E11 = 0; E12 = 0; 

  M0 = 0;  M2 = 0;  M3 = 0;  M4 = 0;  M5 = 0;
  
  M6 = 0;  M7 = 0;    M8 = 0;  M9 = 0;  M10 = 0;
  
  M11 = 0;   M12 = 0; 

  MT2 = 0;   MT3 = 0;   MT6 = 0;   MT7 = 0;
  MT10 = 0;  MT11 = 0;  MT4=0;     MT5=0;

  }

if (tst_bit(PINA,BTN_PROGRAMAR) ==1 and ( E1== 1 or E6== 1 or E10==1) ) { 
    programar = 1;
   }


  
 if (tst_bit(PINA,BTN_CONT1) == 1  and programar == 1 ) {              //se o BTN_CONT1 for presionado e a  variavel programar =1 e   atribui  1 a variavel cont1
    cont1 = 1;
   }

 if (tst_bit(PINA,BTN_CONT2) == 1 and programar == 1) {                  //se o BTN_CONT2 for presionado e a  variavel programar =1 e   atribui  1 a variavel cont1
    cont2 = 1;
   }

 if (programar == 1  and    cont1 == 1 and    cont2== 0 and  tst_bit(PINC,BTN_MAIS) == 1 ) {   // se programar = 1 e cont1=1 e presionado o BTN_MAIS 
        contador_s1++;                                                                           //acresenta uma unidade na variavel contador_s1
   }

 if (programar == 1 and   cont1 == 1 and   cont2==0 and  tst_bit(PINC,BTN_MENOS) == 1 ) {   // se programar = 1 e cont1=1 e presionado o BTN_MENOS
        contador_s1--;                                                                          //decrementa uma inidade na variavel contador_s1
   }

 if ( programar == 1 and   cont2 == 1  and   cont1==0 and   tst_bit(PINC,BTN_MAIS) == 1 ) {  //mesmo processo anterior acresenta uma unidade no contador_s2
        contador_s2++;
   }

  if (  programar == 1 and   cont2 == 1  and   cont1==0  and  tst_bit(PINC,BTN_MENOS) == 1 ) {  //decremeta uma unidade no contador_s2
        contador_s2--;
   }

 if ( (tst_bit(PINC, BTN_OK) == 1) && programar == 1) {      //finaliza a programacao dos contadores e coloca as variaveis em estado inicial
    programar = 0;
    cont1 = 0;
    cont2 = 0;
 }
  if (E0 == 1 ) { ETAPA = 0; }         //atribui a variavel ETAPA os valores corespondente a medida que as etapas
  if (E1 == 1 ) { ETAPA = 1; }         // e transcicao sao ultrapasadas no decorer do proceso 
  if (E2 == 1 ) { ETAPA = 2; }
  if (E3 == 1 ) { ETAPA = 3; }
  if (E4 == 1 ) { ETAPA = 4; }
  if (E5 == 1 ) { ETAPA = 5; }
  if (E6 == 1 ) { ETAPA = 6; }
  if (E7 == 1 ) { ETAPA = 7; }
  if (E8 == 1 ) { ETAPA = 8; }
  if (E9 == 1 ) { ETAPA = 9; }
  if (E10 == 1 ) { ETAPA = 10; }
  if (E11 == 1 ) { ETAPA = 11; }
  if (E12 == 1 ) { ETAPA = 12; }

switch (ETAPA) {                                                //conforme o valor da variavel etapa uma acao determinada e realizada , e apenas uma etapa por fez pode ser acionada
    case 0 :                                                    // se etapa= 0 ,M0=1 
      if (tst_bit(PINA ,BTN_LIGAR) == 1 and desliga == 0) {     //se presionado o BTN_LIGAR
        desliga = 0;                                           //atribui 0 a variavel desliga
        estado = 1;                                            // atribui 1 a variavel estado mudando no lcd de desligado ára ligado acendendo o led1
        M0 = 1;                                                //atrinui 1 a M0 pulando a transicao e ´passando E1=1
        M7=0;                                                  //atrinui 0 a transicao de E7 e desativando esta etapa
        M11=0;                                                 //atrinui 0 a transicao de E7 e desativando esta etapa
      //  lcd.clear();
       }
      else {
        M0 = 0;   //se nao manten a transicao  M0=0 aguardando ate que o botao BTN_LIGAR seja acionado
      }
      break;

  case  1 :
      clr_bit(PORTC, BOMBA_OLEO);     // liga a bomba de oleo no rele em n1
      if (tst_bit(PINA ,BTN_POS1) == 1) {   //se BTN_POS1 e acionado 
        M0 = 0;                               //desabilita etapa anterio E0
        MT3 = 0;                                //mantem transicao para etapa 3 desabilitada
        MT2 = 1;                               //abilita transicao etapa 2
      }
      else if (tst_bit(PINA ,BTN_POS2) == 1) {      //se BTN_POS2 e acionado
        M0 = 0;                                      //desabilita etapa anterio E0
        MT2 = 0;                                    //mantem transicao para etapa 2 desbilitada
        MT3 = 1;                                    // abilita transicao etapa 3
      }
      break;

  case 2 :
      
      if (tst_bit(PINC ,CIL_GAN) == 1){
        clr_bit(PORTC, CIL_CARRINHO);          //  Liga solenoide CIL_CARRINHO NO RELE SAIDA  n3 
         preset_s1 = 0;                         //sera o valor preset_s1 
         preset_s2 = 0;                        // sera o valor preset_s2
      
      if (tst_bit(PINL ,SENSOR_POS1) == 1 and tst_bit(PINA, BTN_FABRICAR) == 1) {     //se o sensor indutivo posicao 1 estiver ligado e BTN_PROGRAMAR for acionado
        MT2 = 0;                        //desabilita etapa anterior E1
        M2 = 1;                         //abilita trassicao etapa 4
      }
      } else {MT2 = 0;
               M0= 1;
      }
      break;

 case 3 :
    if (tst_bit(PINC, CIL_GAN) == 0){
      set_bit(PORTC, CIL_CARRINHO);   // desliga solenoide CIL_CARRINHO NO RELE SAIDA  n3 
      preset_s1 = 0;                       //sera o valor preset_s1 
      preset_s2 = 0;                       //sera o valor preset_s2 
      
      if (tst_bit(PINL,SENSOR_POS2) == 1 and tst_bit(PINA, BTN_FABRICAR) == 1) {   //se o sensor indutivo posicao 2 estiver ligado e BTN_PROGRAMAR for acionado
        MT3 = 0;                          //desabilita etapa anterior E1
        M3 = 1;                          //abilita transicao etapa 5
      }
      } else { MT3 = 0;
               M0= 1;
      }
      break;

 case 4 :
    conta1= HIGH;
      if (tst_bit(PINC,BOMBA_OLEO) == 0) {                 // se BOMBA_OLEO ligad a n1 no  rele
          clr_bit(PORTC,MOTOR1);                          // liga MOTOR1 na saida n2 do rele
     
attachInterrupt(digitalPinToInterrupt(pino2_sensor),contador,HIGH);
       }
      
    
     if (Cv1==LOW){
        set_bit(PORTC, MOTOR1);                         // desliga MOTOR1 na saida n2 do rele
      detachInterrupt(pino2_sensor);
        delay(100);
        M2 = 0;                                             //desabilita etapa anterior E2
        MT4=0;                                              //mantem transicao  MT4 desabilitada e desabilita E9
        MT7 = 0;                                            //mantem trasicao MT7 desabilitada e desabilitanto E7
        MT6 = 1;                                            //abilita transicao Etapa 6
      }
      else if (tst_bit( PINA ,BTN_DESLIGAR) == 1) {         // então se presionado BTN_DESLIGAR
        detachInterrupt(pino2_sensor);
        set_bit(PORTC, MOTOR1);                         // desliga MOTOR1 na saida n2 do rele
        M2 = 0;                                             //desabilita etapa anterior E4
        MT4=0;                                              //mantem transicao  MT4 desabilitada e desabilita E9
        MT6 = 0;                                            //mantem trasiÃcao MT6 desabilitada e desabilitanto E6
        MT7 = 1;                                            //abilita transicao Etapa 6
      }
      break;

 case 5 :
    conta2= HIGH;
      if (tst_bit(PINC,BOMBA_OLEO) == 0)  {                  // ferifia se abomba de oleo esta ligada na saida n1 do rele
        clr_bit(PORTC,MOTOR1);                            // liga MOTOR1 rele n2 LOW e ligado e HIGH desligado
     attachInterrupt(digitalPinToInterrupt(pino2_sensor),contador,HIGH);
      }
     
      if (Cv2== LOW){
       set_bit(PORTC, MOTOR1);                          // desliga MOTOR1 na saida n2 do rele
       delay(100);
        M3 = 0;                                              //desabilita etapa anterior E3
        MT5=0;                                               //mantem transicao  MT5 desabilitada e desabilita E9
        MT11 = 0;                                            //mantem trasicao M11 desabilitada e desabilitanto E11
        MT10 = 1;                                            //abilita transicao o Etapa 10
      }
      else if (tst_bit( PINA ,BTN_DESLIGAR) == 1) {          // então se presionado BTN_DESLIGAR
        set_bit(PORTC, MOTOR1);                         // desliga MOTOR1 na saida n2 do rele
       detachInterrupt(pino2_sensor);
        M3 = 0;                                              //desabilita etapa anterior E3
        MT5=0;                                               //mantem transicao  MT5 desabilitada e desabilita E9
        MT10 = 0;                                            //mantem trasicao M10 desabilitada e desabilitanto E10
        MT11 = 1;                                            //abilita transicao Etapa 11
      }
     
      break;

  case 6 :
             clr_bit(PORTC ,CIL_GAN);                    // liga o solenoide do clindro da gancheira saida n4 do rele
            if (tst_bit(PINA, BTN_FABRICAR) == 1) {         //se BTN_FABRICAR for presionado
           // desliga = 0;                                   
          conta1=LOW;
           Cv1= HIGH;
           Cv2=HIGH;
            MT6 = 0;                                         //desabilita etapa anterior E4
            M6 = 1;                                         //abilita transicao ETAPA 8
     lcd.clear();                       //lipa o lcd
      }
      break;

case 7 :
      set_bit(PORTC, MOTOR1)              // desliga MOTOR1 na saida n2 do rele
      set_bit(PORTC, BOMBA_OLEO);         //desliga bonba na saida n1 do rele
      MT7 = 0;                                //desabilita etapa anterior E4
      M7=1;                                   //abilita transcicao ETAPA E0
      desliga = 1;                            //muda o valor da fariavel desliga para 1 e aciona a rotina de desligamento
      lcd.clear();                           // limpa o lcd
    break;

    case  8 :
       preset_s1 = 0;                              //zera o valor dos contadores
       preset_s2 = 0;
     // digitalWrite(CIL_DOBRADOR, LOW);               // liga  solenoide dos cilindros dos dobradores na saida n5 do rele
       set_bit(PORTC, CIL_CARRINHO);             // desliga  solenoide do cilindro do carrinho na saida n3 do rele
      if (tst_bit(PINL,SENSOR_POS2) == 1) {       //se sensor indutivo SENSOR_POS2 acionado
        M6 = 0;                                //desabilita etapa anterior E6
        M8 = 1;                                //abilita transcicao ETAPA 9
      }
      break;

 case   9 :
        if (M8 == 1){                          //se variavel de transicao M8 = 1 
        MT5 = 1;                               //abilita transicao etapa 5
        MT4 = 0;                               //mante desabilitado transicao etapa 4
        M8 = 0;                                //desabilita etapa anterior E8
        lcd.clear();                           //limpa lcd
       
      }
     else if (M12 == 1) {                   //se a variavel de transicao M12 ==1
         MT5 = 0;                           //mantem desabilitado trasnsicao etapa 5
         MT4 = 1;                           //abilita transição etapa 4
         M12 = 0;                           //desabilita etapa anterior E12
         lcd.clear();                      //limpa lcd
     }
      break;

case 10 :
      conta2=LOW;
      set_bit( PORTC ,CIL_GAN);               // desliga  solenoide cil gancheira  na saida n4 do rele
    
      if (tst_bit(PINA, BTN_FABRICAR) == 1) {      // se BTN_FABRICAR for presionado
        desliga = 0;                            //atribui 0 variavel desliga
        Cv1= HIGH;
        Cv2=HIGH;
        MT10 = 0;                               // desabilita etapa anterior E5
        M10 = 1;                                //abilita transicao etapa12
      lcd.clear();                       //lipa o lcd
      }
      break;

case 11 :
      set_bit(PORTC, MOTOR1);                   // desliga o motor1  na saida  n2  do rele
      set_bit(PORTC,BOMBA_OLEO);               // desliga o bomba na saidae n1  do rele
      MT11 = 0;                                     //desabilida etapa anterior E5
      M11=1;                                       //abilita transicao etapa E0
      desliga = 1;                                 //atribui 1 a variavel desliga chamando a rotina de desligamento
      lcd.clear();                                //limpa o lcd
      break;

 case 12 :
       preset_s1 = 0;                               //zera os contadores
       preset_s2 = 0;
     // digitalWrite(CIL_DOBRADOR, LOW);                // liga o  solenoide   cilindros dobradores  na saida n5  do rele
      clr_bit(PORTC, CIL_CARRINHO);                // liga o  solenoide do cilindro do carrinho na  saida n3  do rele
      if (tst_bit(PINL ,SENSOR_POS1) == 1) {        // se o sensor indutivo SENSOR_POS1 for ativado
       
        M10 = 0;                                      //desabilita etapa anterior E10
        M12 = 1;                                      //abilita transicao etapa E9
      }
      break;

    default:
      E0 = HIGH;
  }
}


void contador (){
 valor= tst_bit(PINE ,pino2_sensor);
 if (valor !=estado_anterior_sensor) {
        if (valor==HIGH and  conta1 == HIGH) {  
          preset_s1++;
         // delayMicroseconds(50);
          } else if (valor==HIGH and conta2== HIGH){
          preset_s2++;
         // delayMicroseconds(50);
          }
     
 estado_anterior_sensor = valor;
 }
 if (preset_s1 == contador_s1 ){
  //digitalWrite(MOTOR1, HIGH);                         // desliga MOTOR1 na saida n2 do rele
  Cv1=LOW;
  
  
 }
 if (preset_s2 == contador_s2 ){ // digitalWrite(MOTOR1, HIGH);
  Cv2=LOW;
  
 }
}
 //state = !state;
//}

The semicolon " ; " is missig in this line.
O ponto e virgula " ; " está faltando nesta linha.

RV mineirin

Bom dia Ruiviana!
Sempre li nos comentários que em programação o diabo mora nos destales; que bom que o erro era apenas uma um ponto e virgula, inexperiência minha, muito obrigado, e se você tiver uma dica sobre o meu skatch ou livro que eu possa ler para otimizar o programa eu ficaria muito agradecido, com estas mudanças você acha que vou conseguir mais rapidez na leitura e acionamento das saidas?
Bom muito obrigado.

Olá @getulio,
qual ucontrolador você está usando? Arduino Mega?

Você criou macros desnecessariamente já que existem funções que fazem isto.
Ex:

procure por bitset() e bitclear() em https://www.arduino.cc/reference/pt/language/functions/

Isto é desnecessário : você pode usar and , or , not ,

Não entendi bem o motivo desta sua frase "

Que tipo de problema de velocidade você estava tendo?

Não entendi bem o que seu programa faz, então faça um descritivo do que ele deverá fazer.

RV mineirin