Pesquisar neste blog

10/03/2023

Comunicação serial com PIC 16F628A e 18F4550

Código feito em CCS C Compiler

Arquivo: 16F628A.c

#include <16F628A.h>
#fuses INTRC, NOWDT, NOMCLR
#use delay(clock = 4MHz)

#use rs232(baud= 9600, xmit= PIN_B2, rcv= PIN_B1)

void main(){
   
   int1 btn1, btn2, btn3;
   
   while(true){
      btn1 = input(PIN_A0);
      btn2 = input(PIN_A1);
      btn3 = input(PIN_A2);
      
      if( btn1 == 1 && btn2 == 0 && btn3 == 0 ){
         printf("#AUTO");
         
      }else if( btn1 == 0 && btn2 == 1 && btn3 == 0 ){
         printf("#ECONOMICO");
         
      }else if( btn1 == 0 && btn2 == 0 && btn3 == 1 ){
         printf("#DESEMPENHO");
         
      }
      
      delay_ms(1000);
   }
}


Arquivo: 18F4550.c

#include <18F4550.h>
#fuses INTRC, NOWDT, NOMCLR
#use delay(clock = 4MHz)

#use rs232(baud = 9600, xmit= PIN_C6, rcv= PIN_C7)
#include <lcd.c>

#INT_RDA
void serial_init(){
   char temp;
   
   while( kbhit() ){ // verificar se tem dados no banco
      temp = getc();
      if( temp == '#'){
         printf( LCD_PUTC, "\f");
      }else {
         printf(LCD_PUTC, "%c", temp);
      }
   }
}

void main(){
   
   lcd_init();
   
   enable_interrupts( GLOBAL );
   enable_interrupts( INT_RDA);
   
   printf( LCD_PUTC, "\fINICIANDO ...");
   delay_ms(1000);
   
   while(TRUE){
      
   }
}

Saída gerada no Proteus







Nenhum comentário: