Ir para conteúdo
Fórum Script Brasil
  • 0

Comunicação Usart


luanvelasco

Pergunta

Pessoal, boa tarde.

Estou desenvolvendo um código para um projeto de Tranca Eletrônica.  A ideia é que com uma senha fixa de 6 dígitos eu ative uma saída do PIC que irá acionar a minha trava elétrica. Tentei atribuir a senha com (valor = 201010), mas está dando erros. Será que alguém consegue me ajudar?

 

// configura os pinos
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;

char valor[7];//variavel q recebe um valor da serial

#define tranca PORTB.F1
void main()
{
TRISB = 0x00;

   uart1_init(9600);//inicia o modulo UART com velocidade de 9600bps
   delay_ms(10);//espere 10ms para estabilizar
   lcd_init();//inicia o LCD
   Lcd_Out(1, 1, "Inicializando");
   delay_ms(2000);
   Lcd_Out(1, 1, "Cofre Eletroinco");
   delay_ms(1000);
   Lcd_Out(2, 1, "Senha: ");
   while(1)
   {
        if(uart1_data_ready())//se algum dado foi recebido
        {
         uart1_read_text(*valor, "\r", 7);//caso o ultimo caracter recebido for ENTER
         //salva o dado na variavel "valor" e executa essas duas linhas abaixo
         lcd_out(2,8,*valor);//exibe a string
        }

        if( *valor = 201010)
         {
          Lcd_Cmd(_LCD_CLEAR);
          delay_ms(10);
          Lcd_Out(2, 1, "Senha correta ");
          PORTB.F1 = 1;
         }

       else
         {
          Lcd_Out(2, 1, "Senha incorreta ");
          PORTB.F1= 0;
          Lcd_Cmd(_LCD_CLEAR);
          delay_ms(100);
          Lcd_Out(1, 1, "Tente outra vez");
          delay_ms(1000);
          Lcd_Out(1, 1, "Cofre Eletroinco");
          Lcd_Out(2, 1, "Senha: ");
         }
      }
}

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Boa noite.

observe o seguinte código.

if( *valor = 201010)

Você declarou a variável valor como um vetor de char com set posições, no entanto, está fazendo uma atribuição de inteiro nele.

Atribuição conforme o código abaixo.

char senhaPadrao[]="201010";
//um igual é atribuição, comparação são dois iguais.

Para fazer uma comparação, observe o seguinte código.

	if(strcmp (valor, "201010")==0){
		printf("Correto.");
	}else{
		printf("Errado.");
	}

//strcmp precisa que dê o #include <string.h>

você declarou um vetor e não um ponteiro explicito, por isso não precisa do seguinte código.

uart1_read_text(*valor, "\r", 7);

não conheço a função uart1_read_text(), mas sei que para usar um vetor de char base chamá-lo diretamente.

exemplo.

uart1_read_text(valor, "\r", 7);

 

até mais.

Link para o comentário
Compartilhar em outros sites

  • 0
35 minutos atrás, rickayron disse:

Boa noite.

observe o seguinte código.


if( *valor = 201010)

Você declarou a variável valor como um vetor de char com set posições, no entanto, está fazendo uma atribuição de inteiro nele.

Atribuição conforme o código abaixo.


char senhaPadrao[]="201010";
//um igual é atribuição, comparação são dois iguais.

Para fazer uma comparação, observe o seguinte código.


	if(strcmp (valor, "201010")==0){
		printf("Correto.");
	}else{
		printf("Errado.");
	}

//strcmp precisa que dê o #include <string.h>

você declarou um vetor e não um ponteiro explicito, por isso não precisa do seguinte código.


uart1_read_text(*valor, "\r", 7);

não conheço a função uart1_read_text(), mas sei que para usar um vetor de char base chamá-lo diretamente.

exemplo.


uart1_read_text(valor, "\r", 7);

 

até mais.

Valeu meu camarada...resolveu aqui

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...