Ir ao conteúdo
  • Cadastre-se

C++ Converter linguagem C para C++


Posts recomendados

Olá, tudo bem? Alguem poderia me ajudar a converrter essalinguagem para c++??

 

Grato

 

os passos para lavar a roupa são:
1) ENCHER a cuba- roupa+água+sabão,
2) BATER a Roupa- 10min ou 20min ou 30min,
3) DESCANSAR por 10 min.
4) SOLTAR a água,
5) LAVAR - repetir os passos 1,2 e 3 em um tempo 5min (sem sabão),
6) ENXAGUAR - centrifugar jogando água (bomba ligada),
7) AMACIANTE- encher de água + amaciante a cuba agitar um pouco, descançar por 5 minutos e esvaziar,
😎 CENTRIFUGAR - girar para tirar toda água

FIM


//CONTROLANDO A MAQUINA DE LAVAR GE
//Paulo Roquetti
//Jun/2015
/*
PLACA CLPIC_VOICE
PIC18F4550
CRISTAL-20MHZ

RA0-I/O-DIGITAL-ANALOGICO
RA1-I/O-DIGITAL-ANALOGICO
RA2-I/O-DIGITAL-ANALOGICO
RA3-I/O-DIGITAL-ANALOGICO
RA4-IN-DIGITAL-CONTADOR DE EVENTOS - INC TIMER0 e IN-DIGITAL-OPTO
RA5-IN-DIGITAL-OPTO

RB0-OUT-RS-LCD
RB1-OUT-EN-LCD
RB2-OUT-DZ-7SEG
RB3-OUT-UN-7SEG
RB4-OUT-DADOS-LCD-7SEG
RB5-OUT-DADOS-LCD-7SEG
RB6-OUT-DADOS-LCD-7SEG
RB7-OUT-DADOS-LCD-7SEG


RC0-IN-DIGITAL-OPTO
RC1-OUT-PWM2
RC2-OUT-PWM1
RC3-VUSB
RC4-IN-D- USB
RC5-IN-D+ USB
RC6-IN-USART e IN-DIGITAL-OPTO
RC7-IN-USART e IN-DIGITAL-OPTO

RD0-OUT-DIGITAL-RELÉ
RD1-OUT-DIGITAL-RELÉ
RD2-OUT-DIGITAL-RELÉ
RD3-OUT-DIGITAL-RELÉ
RD4-OUT-DIGITAL-RELÉ
RD5-OUT-DIGITAL-RELÉ
RD6-OUT-DIGITAL-RELÉ
RD7-OUT-DIGITAL-RELÉ

RE0-IN-DIGITAL-OPTO
RE1-IN-DIGITAL-OPTO
RE2-OUT-DIGITAL-RELÉ
*/

#include
#include
#include "CLPIC_VOICE_biblioteca_lcd_2x16.h"//inclui biblioteca do lcd

// Fosc = 20MHz
// Tciclo = 4/Fosc = 0,2us
#pragma config FOSC = HS //Para cristal de 20MHz
#pragma config CPUDIV = OSC1_PLL2//sem PLL
#pragma config USBDIV = 1//para USB sem PLL
#pragma config PLLDIV = 5//Para cristal de 20MHz divide por 5, sempre tem que dar 4MHz
#pragma config WDT = OFF//Desabilita o Watchdog Timer (WDT).
#pragma config PWRT = OFF//Habilita o Power-up Timer (PWRT).
#pragma config BOR = OFF//Brown-out Reset (BOR) habilitado somente no hardware.
#pragma config BORV = 3//tensão do BOR é 2,0V.
#pragma config PBADEN = OFF//RB0,1,2,3 e 4 configurado como I/O digital.
#pragma config LVP = OFF//Desabilita o Low Voltage Program.
#pragma config MCLRE = OFF//Desabilita o RESET

/////////////////////////////////////
//    ENTRADAS
////////////////////////////////////

#define PARTIDA PORTAbits.RA5
#define PRESSOSTATO PORTEbits.RE0
#define TAMPA PORTEbits.RE1

///////////////////////////////////
//     SAIDAS
///////////////////////////////////

#define  FASE PORTDbits.RD0
#define  GIRO_ESQ  PORTDbits.RD1
#define  GIRO_DIR PORTDbits.RD2
#define  BOMBA PORTDbits.RD3  
#define  AGUA PORTDbits.RD4
#define  AMACIANTE PORTDbits.RD5
#define  TRAVA PORTDbits.RD6

/////////////////////////////////////

//variaveis globais
int cont=0,x,y,z,i,j,ch;
char envia;

//prototipo de funcoes
void agitar();
void escreve_dado();
char recebe_caracter();
char envia_caracter();


void main() //funcao principal
{
//configura entradas e saida
TRISA = 0b111111;
TRISB = 0b00000000;
TRISC = 0b11110001;
TRISD = 0b00000000;
TRISE = 0b111;

//configura digitais
ADCON1 = 0b00001111;
//configura interrupcao
INTCON = 0b11000000;
//7-habilita chave geral
//6-habilita perifericos
PIE1bits.RCIE = 1;
//configura UART
TXSTA = 0b00000000;
//7-não usado - assincrono
//6-transmissão 8bits
//5-desabilitada transmissão
//4-modo assincrono
//3-sync Break
//2-baixa velocidade
//1-Transmit Shift Register Status bit full
//0-não usado

RCSTA = 0b10010000;
//7-porta serial habilitada
//6-recepcao de 8bits
//5-nao usado
//4-recepcao habilitada
//3-desabilitada deteccao de endereco
//2-nao usado
//1-nao usado
//0-nao usado

BAUDCON = 0b00000000;
//7-AutoBAUD desabilitado EUSART
//6-não usado
//5-não usado
//4-não usado
//3-BAUD RATE em 8 bits
//2-não usado
//1-WAKE-UP (despertar) desabilitado,
//0-não usado


SPBRG = 0b10000001; // 129 em decimal para 9600bps


//configurações iniciais
PORTA = 0x00;//limpa as saídas
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
lcd_inicia(0x28, 0x0E, 0x06);// inicializa o Display LCD com quatro linha de dados

////////////////////////////////////////////////////////////////////////////////////
//      INICIANDO A LAVAGEM
////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("CONTROLE        ");
lcd_posicao(2,1);
imprime_string_lcd("MAQ DE LAVAR    ");
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg lcd_posicao(1,1);
imprime_string_lcd("COLOQUE         ");
lcd_posicao(2,1);
imprime_string_lcd("ROUPA E SABAO");
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg lcd_posicao(1,1);
imprime_string_lcd("SELECIONE       ");
lcd_posicao(2,1);
imprime_string_lcd("NIVEL DE AGUA");
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg lcd_posicao(1,1);
imprime_string_lcd("APERTE          ");
lcd_posicao(2,1);
imprime_string_lcd("PARTIDA         ");
/////////////////////////////////////////////////////////////////////////////////////
// 1)INICIO LAVAGEM
/////////////////////////////////////////////////////////////////////////////////////
while(PARTIDA == 1);
FASE = 1;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg AGUA = 1;
lcd_posicao(1,1);
imprime_string_lcd("ENCHENDO        ");
lcd_posicao(2,1);
imprime_string_lcd("DE AGUA         ");
while(PRESSOSTATO == 0)
{
Delay10KTCYx(125);
cont++;
}
AGUA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg////////////////////////////////////////////////////////////////////////////////////
// 2) BATER A ROUPA
////////////////////////////////////////////////////////////////////////////////////
TRAVA = 1;
lcd_posicao(1,1);
imprime_string_lcd("BATER A         ");
lcd_posicao(2,1);
imprime_string_lcd("ROUPA           ");

GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms
for(j=0; j<150 10="" j="" minutos="" p=""> {
agitar();
x=j;
escreve_dado();
}

GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms////////////////////////////////////////////////////////////////////////////////////
// 3) DESCANCO DE 10 MINUTOS
////////////////////////////////////////////////////////////////////////////////////

lcd_posicao(1,1);
imprime_string_lcd("DESCANCO        ");
lcd_posicao(2,1);
imprime_string_lcd("10 MINUTOS      ");

for(i=0; i<2400 i="" p=""> {
Delay10KTCYx(125); //tempo de 10 minutos
x=i;
escreve_dado();
}

////////////////////////////////////////////////////////////////////////////////////
// 4) SOLTAR A AGUA
////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("SOLTANDO        ");
lcd_posicao(2,1);
imprime_string_lcd("A AGUA          ");
BOMBA = 1; // liga a bomba dágua para sair a agua
cont=cont+40;
for(i=0; i
Delay10KTCYx(125); //tempo de enchimento + 10 segundos BOMBA = 0; // desliga a bomba dagua

////////////////////////////////////////////////////////////////////////////////////
// 5)  LAVAR
////////////////////////////////////////////////////////////////////////////////////
// 5.1)  enchendo de agua
//////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("OPERACAO        ");
lcd_posicao(2,1);
imprime_string_lcd("LAVAR           ");
AGUA = 1;
while(PRESSOSTATO == 0);
AGUA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg
// 5.2) bater roupa
///////////////////

for(j=0; j<75 5="" j="" minutos="" p=""> {
agitar();
x=j;
escreve_dado();
}



// 5.3) desligando motor e giro
//////////////////////
GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms

// 5.4) soltar a agua
////////////////////////////////////////////////////////////////////////////////////
BOMBA = 1; // liga a bomba dágua para sair a agua
lcd_posicao(1,1);
imprime_string_lcd("FINAL OPERACAO  ");
lcd_posicao(2,1);
imprime_string_lcd("LAVAR           ");
cont=cont+40;
for(i=0; i
Delay10KTCYx(125); //tempo de enchimento + 10s

///////////////////////////////////////////////////////////////////////////////////////
// 6) ENXAGUAR
///////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
    imprime_string_lcd("OPERACAO        ");
    lcd_posicao(2,1);
    imprime_string_lcd("ENXAGUAR        ");
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<40 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 10seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<1200 i="" p=""> {
Delay10KTCYx(125); //tempo de 5 min
x=i;
escreve_dado();

}

GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
lcd_posicao(1,1);
     imprime_string_lcd("FINALIZANDO     ");
     lcd_posicao(2,1);
     imprime_string_lcd("ENXAGUAR        ");
for(i=0; i<60 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 15 segundos BOMBA = 0;

////////////////////////////////////////////////////////////////////////////////////////
//  7) AMACIANTE
////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////
// 😎 CENTRIFUGAR
///////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
    imprime_string_lcd("OPERACAO        ");
     lcd_posicao(2,1);
     imprime_string_lcd("CENTRIFUGAR     ");
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; BOMBA = 1;
GIRO_DIR = 1;//liga motor
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg GIRO_DIR = 0;//desliga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg GIRO_DIR = 0;//desliga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
for(i=0; i<40 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 10seg GIRO_DIR = 0;//desliga motor
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
lcd_posicao(1,14);
for(i=0; i<1200 i="" p=""> {
Delay10KTCYx(125); //tempo de 5 min
x=i;
escreve_dado();
}
GIRO_DIR = 0;//desliga motor
    lcd_posicao(1,1);
    imprime_string_lcd("FINALIZANDO     ");
    lcd_posicao(2,1);
     imprime_string_lcd("CENTRIFUGAR     ");
for(i=0; i<60 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 15 segundos BOMBA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(500); //tempo de 2,5seg; FASE = 0;
TRAVA = 0;
lcd_posicao(1,1);
     imprime_string_lcd("FIM DA LAVAGEM  ");
     lcd_posicao(2,1);
     imprime_string_lcd("****************");
envia = 'F';
envia_caracter();
// FIM
while(1);
}

/////////////////////////////////////////////////////////////////////////////////////////
void agitar()
{

GIRO_DIR = 1;//giro_direita
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg GIRO_DIR = 0;//desliga motor
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg GIRO_ESQ = 1;// giro_esquerda
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg     GIRO_ESQ = 0; //desliga motor
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg
}

//////////////////////////////////////////////////////////////////////////////////////////

void escreve_dado()
{
int ch;

ch = (x / 1000) % 10;           // extract 0.1  digit
lcd_posicao(1,10);
lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

ch = (x / 100) % 10;           // extract 0.1  digit
lcd_posicao(1,11);
lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

    ch = (x / 10) % 10;            // extract 0.01  digit
lcd_posicao(1,12);
    lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

ch = x  % 10;                   // extract 0.001 volts digit
lcd_posicao(1,13);
    lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point


}

//////////////////////////////////////////////////////////////////////////////////////////
char recebe_caracter()
{
while(!PIR1bits.RCIF);// aguarda chegada de um novo byte
PIR1bits.RCIF = 0;
if(RCSTAbits.FERR)  // se houve erro de transmissao
{
RCSTAbits.CREN = 0;//sim, desabilita recepcao
return 'E'; //retorna 'E' de erro
}
else return RCREG; // nao, retorna dado

}
////////////////////////////////////////////////////////////////////////////////////////
char envia_caracter()
{
TXREG = envia;
while(!TXSTAbits.TRMT);//aguarda transmissao terminar

}
////////////////////////////////////////////////////////////////////////////////////////
void acao()
{

switch(RCREG)
{
case 'A':
lcd_limpa_tela();
lcd_posicao(1,1);
imprime_string_lcd("ROQUETTI        ");
// lcd_escreve_dado(RCREG);//mostra o conteudo do registrador RCREG
break;

default:
lcd_limpa_tela();
lcd_posicao(1,1);
// lcd_escreve_dado(RCREG);//mostra o conteudo do registrador RCREG
imprime_string_lcd("BLUETOOTH RC05  ");
Delay10KTCYx(500);
}

}os passos para lavar a roupa são:
1) ENCHER a cuba- roupa+água+sabão,
2) BATER a Roupa- 10min ou 20min ou 30min,
3) DESCANSAR por 10 min.
4) SOLTAR a água,
5) LAVAR - repetir os passos 1,2 e 3 em um tempo 5min (sem sabão),
6) ENXAGUAR - centrifugar jogando água (bomba ligada),
7) AMACIANTE- encher de água + amaciante a cuba agitar um pouco, descançar por 5 minutos e esvaziar,
😎 CENTRIFUGAR - girar para tirar toda água

FIM


//CONTROLANDO A MAQUINA DE LAVAR GE
///*
PLACA CLPIC_VOICE
PIC18F4550
CRISTAL-20MHZ

RA0-I/O-DIGITAL-ANALOGICO
RA1-I/O-DIGITAL-ANALOGICO
RA2-I/O-DIGITAL-ANALOGICO
RA3-I/O-DIGITAL-ANALOGICO
RA4-IN-DIGITAL-CONTADOR DE EVENTOS - INC TIMER0 e IN-DIGITAL-OPTO
RA5-IN-DIGITAL-OPTO

RB0-OUT-RS-LCD
RB1-OUT-EN-LCD
RB2-OUT-DZ-7SEG
RB3-OUT-UN-7SEG
RB4-OUT-DADOS-LCD-7SEG
RB5-OUT-DADOS-LCD-7SEG
RB6-OUT-DADOS-LCD-7SEG
RB7-OUT-DADOS-LCD-7SEG


RC0-IN-DIGITAL-OPTO
RC1-OUT-PWM2
RC2-OUT-PWM1
RC3-VUSB
RC4-IN-D- USB
RC5-IN-D+ USB
RC6-IN-USART e IN-DIGITAL-OPTO
RC7-IN-USART e IN-DIGITAL-OPTO

RD0-OUT-DIGITAL-RELÉ
RD1-OUT-DIGITAL-RELÉ
RD2-OUT-DIGITAL-RELÉ
RD3-OUT-DIGITAL-RELÉ
RD4-OUT-DIGITAL-RELÉ
RD5-OUT-DIGITAL-RELÉ
RD6-OUT-DIGITAL-RELÉ
RD7-OUT-DIGITAL-RELÉ

RE0-IN-DIGITAL-OPTO
RE1-IN-DIGITAL-OPTO
RE2-OUT-DIGITAL-RELÉ
*/

#include
#include
#include "CLPIC_VOICE_biblioteca_lcd_2x16.h"//inclui biblioteca do lcd

// Fosc = 20MHz
// Tciclo = 4/Fosc = 0,2us
#pragma config FOSC = HS //Para cristal de 20MHz
#pragma config CPUDIV = OSC1_PLL2//sem PLL
#pragma config USBDIV = 1//para USB sem PLL
#pragma config PLLDIV = 5//Para cristal de 20MHz divide por 5, sempre tem que dar 4MHz
#pragma config WDT = OFF//Desabilita o Watchdog Timer (WDT).
#pragma config PWRT = OFF//Habilita o Power-up Timer (PWRT).
#pragma config BOR = OFF//Brown-out Reset (BOR) habilitado somente no hardware.
#pragma config BORV = 3//tensão do BOR é 2,0V.
#pragma config PBADEN = OFF//RB0,1,2,3 e 4 configurado como I/O digital.
#pragma config LVP = OFF//Desabilita o Low Voltage Program.
#pragma config MCLRE = OFF//Desabilita o RESET

/////////////////////////////////////
//    ENTRADAS
////////////////////////////////////

#define PARTIDA PORTAbits.RA5
#define PRESSOSTATO PORTEbits.RE0
#define TAMPA PORTEbits.RE1

///////////////////////////////////
//     SAIDAS
///////////////////////////////////

#define  FASE PORTDbits.RD0
#define  GIRO_ESQ  PORTDbits.RD1
#define  GIRO_DIR PORTDbits.RD2
#define  BOMBA PORTDbits.RD3  
#define  AGUA PORTDbits.RD4
#define  AMACIANTE PORTDbits.RD5
#define  TRAVA PORTDbits.RD6

/////////////////////////////////////

//variaveis globais
int cont=0,x,y,z,i,j,ch;
char envia;

//prototipo de funcoes
void agitar();
void escreve_dado();
char recebe_caracter();
char envia_caracter();


void main() //funcao principal
{
//configura entradas e saida
TRISA = 0b111111;
TRISB = 0b00000000;
TRISC = 0b11110001;
TRISD = 0b00000000;
TRISE = 0b111;

//configura digitais
ADCON1 = 0b00001111;
//configura interrupcao
INTCON = 0b11000000;
//7-habilita chave geral
//6-habilita perifericos
PIE1bits.RCIE = 1;
//configura UART
TXSTA = 0b00000000;
//7-não usado - assincrono
//6-transmissão 8bits
//5-desabilitada transmissão
//4-modo assincrono
//3-sync Break
//2-baixa velocidade
//1-Transmit Shift Register Status bit full
//0-não usado

RCSTA = 0b10010000;
//7-porta serial habilitada
//6-recepcao de 8bits
//5-nao usado
//4-recepcao habilitada
//3-desabilitada deteccao de endereco
//2-nao usado
//1-nao usado
//0-nao usado

BAUDCON = 0b00000000;
//7-AutoBAUD desabilitado EUSART
//6-não usado
//5-não usado
//4-não usado
//3-BAUD RATE em 8 bits
//2-não usado
//1-WAKE-UP (despertar) desabilitado,
//0-não usado


SPBRG = 0b10000001; // 129 em decimal para 9600bps


//configurações iniciais
PORTA = 0x00;//limpa as saídas
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
lcd_inicia(0x28, 0x0E, 0x06);// inicializa o Display LCD com quatro linha de dados

////////////////////////////////////////////////////////////////////////////////////
//      INICIANDO A LAVAGEM
////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("CONTROLE        ");
lcd_posicao(2,1);
imprime_string_lcd("MAQ DE LAVAR    ");
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg lcd_posicao(1,1);
imprime_string_lcd("COLOQUE         ");
lcd_posicao(2,1);
imprime_string_lcd("ROUPA E SABAO");
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg lcd_posicao(1,1);
imprime_string_lcd("SELECIONE       ");
lcd_posicao(2,1);
imprime_string_lcd("NIVEL DE AGUA");
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg lcd_posicao(1,1);
imprime_string_lcd("APERTE          ");
lcd_posicao(2,1);
imprime_string_lcd("PARTIDA         ");
/////////////////////////////////////////////////////////////////////////////////////
// 1)INICIO LAVAGEM
/////////////////////////////////////////////////////////////////////////////////////
while(PARTIDA == 1);
FASE = 1;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg AGUA = 1;
lcd_posicao(1,1);
imprime_string_lcd("ENCHENDO        ");
lcd_posicao(2,1);
imprime_string_lcd("DE AGUA         ");
while(PRESSOSTATO == 0)
{
Delay10KTCYx(125);
cont++;
}
AGUA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg////////////////////////////////////////////////////////////////////////////////////
// 2) BATER A ROUPA
////////////////////////////////////////////////////////////////////////////////////
TRAVA = 1;
lcd_posicao(1,1);
imprime_string_lcd("BATER A         ");
lcd_posicao(2,1);
imprime_string_lcd("ROUPA           ");

GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms
for(j=0; j<150 10="" j="" minutos="" p=""> {
agitar();
x=j;
escreve_dado();
}

GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms////////////////////////////////////////////////////////////////////////////////////
// 3) DESCANCO DE 10 MINUTOS
////////////////////////////////////////////////////////////////////////////////////

lcd_posicao(1,1);
imprime_string_lcd("DESCANCO        ");
lcd_posicao(2,1);
imprime_string_lcd("10 MINUTOS      ");

for(i=0; i<2400 i="" p=""> {
Delay10KTCYx(125); //tempo de 10 minutos
x=i;
escreve_dado();
}

////////////////////////////////////////////////////////////////////////////////////
// 4) SOLTAR A AGUA
////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("SOLTANDO        ");
lcd_posicao(2,1);
imprime_string_lcd("A AGUA          ");
BOMBA = 1; // liga a bomba dágua para sair a agua
cont=cont+40;
for(i=0; i
Delay10KTCYx(125); //tempo de enchimento + 10 segundos BOMBA = 0; // desliga a bomba dagua

////////////////////////////////////////////////////////////////////////////////////
// 5)  LAVAR
////////////////////////////////////////////////////////////////////////////////////
// 5.1)  enchendo de agua
//////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("OPERACAO        ");
lcd_posicao(2,1);
imprime_string_lcd("LAVAR           ");
AGUA = 1;
while(PRESSOSTATO == 0);
AGUA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg
// 5.2) bater roupa
///////////////////

for(j=0; j<75 5="" j="" minutos="" p=""> {
agitar();
x=j;
escreve_dado();
}



// 5.3) desligando motor e giro
//////////////////////
GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms

// 5.4) soltar a agua
////////////////////////////////////////////////////////////////////////////////////
BOMBA = 1; // liga a bomba dágua para sair a agua
lcd_posicao(1,1);
imprime_string_lcd("FINAL OPERACAO  ");
lcd_posicao(2,1);
imprime_string_lcd("LAVAR           ");
cont=cont+40;
for(i=0; i
Delay10KTCYx(125); //tempo de enchimento + 10s

///////////////////////////////////////////////////////////////////////////////////////
// 6) ENXAGUAR
///////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
    imprime_string_lcd("OPERACAO        ");
    lcd_posicao(2,1);
    imprime_string_lcd("ENXAGUAR        ");
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<40 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 10seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<1200 i="" p=""> {
Delay10KTCYx(125); //tempo de 5 min
x=i;
escreve_dado();

}

GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
lcd_posicao(1,1);
     imprime_string_lcd("FINALIZANDO     ");
     lcd_posicao(2,1);
     imprime_string_lcd("ENXAGUAR        ");
for(i=0; i<60 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 15 segundos BOMBA = 0;

////////////////////////////////////////////////////////////////////////////////////////
//  7) AMACIANTE
////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////
// 😎 CENTRIFUGAR
///////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
    imprime_string_lcd("OPERACAO        ");
     lcd_posicao(2,1);
     imprime_string_lcd("CENTRIFUGAR     ");
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; BOMBA = 1;
GIRO_DIR = 1;//liga motor
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg GIRO_DIR = 0;//desliga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg GIRO_DIR = 0;//desliga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
for(i=0; i<40 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 10seg GIRO_DIR = 0;//desliga motor
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
lcd_posicao(1,14);
for(i=0; i<1200 i="" p=""> {
Delay10KTCYx(125); //tempo de 5 min
x=i;
escreve_dado();
}
GIRO_DIR = 0;//desliga motor
    lcd_posicao(1,1);
    imprime_string_lcd("FINALIZANDO     ");
    lcd_posicao(2,1);
     imprime_string_lcd("CENTRIFUGAR     ");
for(i=0; i<60 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 15 segundos BOMBA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(500); //tempo de 2,5seg; FASE = 0;
TRAVA = 0;
lcd_posicao(1,1);
     imprime_string_lcd("FIM DA LAVAGEM  ");
     lcd_posicao(2,1);
     imprime_string_lcd("****************");
envia = 'F';
envia_caracter();
// FIM
while(1);
}

/////////////////////////////////////////////////////////////////////////////////////////
void agitar()
{

GIRO_DIR = 1;//giro_direita
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg GIRO_DIR = 0;//desliga motor
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg GIRO_ESQ = 1;// giro_esquerda
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg     GIRO_ESQ = 0; //desliga motor
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg
}

//////////////////////////////////////////////////////////////////////////////////////////

void escreve_dado()
{
int ch;

ch = (x / 1000) % 10;           // extract 0.1  digit
lcd_posicao(1,10);
lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

ch = (x / 100) % 10;           // extract 0.1  digit
lcd_posicao(1,11);
lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

    ch = (x / 10) % 10;            // extract 0.01  digit
lcd_posicao(1,12);
    lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

ch = x  % 10;                   // extract 0.001 volts digit
lcd_posicao(1,13);
    lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point


}

//////////////////////////////////////////////////////////////////////////////////////////
char recebe_caracter()
{
while(!PIR1bits.RCIF);// aguarda chegada de um novo byte
PIR1bits.RCIF = 0;
if(RCSTAbits.FERR)  // se houve erro de transmissao
{
RCSTAbits.CREN = 0;//sim, desabilita recepcao
return 'E'; //retorna 'E' de erro
}
else return RCREG; // nao, retorna dado

}
////////////////////////////////////////////////////////////////////////////////////////
char envia_caracter()
{
TXREG = envia;
while(!TXSTAbits.TRMT);//aguarda transmissao terminar

}
////////////////////////////////////////////////////////////////////////////////////////
void acao()
{

switch(RCREG)
{
case 'A':
lcd_limpa_tela();
lcd_posicao(1,1);
imprime_string_lcd("ROQUETTI        ");
// lcd_escreve_dado(RCREG);//mostra o conteudo do registrador RCREG
break;

default:
lcd_limpa_tela();
lcd_posicao(1,1);
// lcd_escreve_dado(RCREG);//mostra o conteudo do registrador RCREG
imprime_string_lcd("BLUETOOTH RC05  ");
Delay10KTCYx(500);
}

 

  • Obrigado 1
Link para o post
Compartilhar em outros sites

@Daniel Martins Pereira    essa linguagem  c  , é para usar em microcontroladores tipo pic 16F676 ou outro , e o mais comum é usar a linguagem c mesmo ,  e creio que tanto faz usar c ou c++ , igual é no computador se você fizer um código em linguagem c , ele funciona em c e em c++. e nesse caso não precisa converter esse código  para outra  linguagem , não .

Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!