Teste PIC microcontrolador
Por: testerue • 7/5/2015 • Resenha • 1.050 Palavras (5 Páginas) • 402 Visualizações
// Conexoes LCD do kit PICGenios com 18F
sbit LCD_RS at RE2_bit;
sbit LCD_EN at RE1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISE2_bit;
sbit LCD_EN_Direction at TRISE1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// Fim das conexoes do LCD
int valor1 = -99, valor2= -99, operacao = -99, resultado = 0;
char resultado_str;
void LCD(char texto[16])
{
Lcd_Cmd(_LCD_CLEAR); //limpa o Display
Lcd_Out(1,1,texto);
}
void calcula_resultado () {
if(operacao == 1) { //Se a operação for de soma
resultado = valor1 + valor2;
} else if (operacao == 2){ //Se a operação for de subtração
resultado = valor1 - valor2;
}
valor1 = -99; //Zera o valor1
valor2 = -99; //Zera o valor2
operacao = -99; //Zera operação
resultado_str = 'F'; //Zera Resultado
LCD("Resultado: "); //Mostra a palavra Resultado
VDelay_ms(900); //Espera um tempo
IntToStr(resultado, resultado_str); //Transforma Inteiro p/ string
LCD(resultado_str); //Mostra Resultado
resultado = 0;
}
void atribui_valor(int v_parm) {
char aux[10];
if(valor1 == -99){ //Se o valor 1 estiver zerado, atribui nele
valor1 = v_parm;
VDelay_ms(1000);
} else { //Senão atribui o valor 2 e já chama a função do resultado.
valor2 = v_parm;
IntToStr(v_parm, aux);
LCD(aux);
VDelay_ms(1000);
calcula_resultado();
}
}
void define_operacao(int op){ //Faz as validações.
if(valor1 == -99) {
LCD("Ins. valor 1");
VDelay_ms(900);
} else if (valor1 != -99 && operacao == -99){
operacao = op;
VDelay_ms(900);
} else {
LCD("Opcao Invalida");
}
}
void main(){
ADCON1 = 0x0F;
trisd = 0x0F;
portb = 0xFF;
trisb = 0xF8;
Lcd_Init(); //Inicializa o Display
Lcd_Cmd(_LCD_CLEAR); //limpa o Display
Lcd_Cmd(_LCD_CURSOR_OFF); //Desabilita o cursor
do
{
portb.rb0 = 0; //habilita primeira coluna do teclado
if (portd.rd0 == 0){
LCD("+"); //Mostra na tela
define_operacao(1); //Define
...