Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

Informe Calculadora PIC

Nombre: Miguel Arguello

Diagrama de flujo
Programa PIC C

#include <16F877A.h>

//#fuses XT,NOWDT,NOPROTECT,NOLVP

#use delay(clock= 4000000)

#include "lcd.c"

#include "kbd_LIB.c"

#include <string.h>

#INCLUDE <stdlib.h>

#INCLUDE <math.h>

float suma(float num1,float num2);

float resta(float num1,float num2);

float multi(float num1,float num2);

float divi(float num1,float num2);

char xoper();

void main()

lcd_init();
kbd_init();

port_b_pullups(TRUE);

char nume[10];

char actual=0;

char operador;

int i=0;

float num1;

float num2;

//set_tris_b(0x00);

set_tris_c(0xff);

//output_b(0x00);

//output_c(0x00);

while(true)

inicio:

while(actual!='+' && actual!='-' && actual!='*' && actual!='/' &&actual!= '^' && actual!='t')

if(actual=='.')

lcd_putc('\f');

operador=0;

strcpy(nume, "");

actual=0;

i=0;

goto inicio;

actual=getch;

lcd_putc(actual);

nume[i]=actual;
i++;

operador=actual;

num1=atoi(nume);

if (operador == '^'||operador == 't')

goto operar;

strcpy(nume, "");

actual=0;

i=0;

//while(actual!='+' && actual!='-' && actual!='*' && actual!='/')

while(actual!='=')

if(actual=='.')

lcd_putc('\f');

operador=0;

strcpy(nume, "");

actual=0;

i=0;

goto inicio;

actual=getch;

lcd_putc(actual);

nume[i]=actual;

i++;

//prfloatf(lcd_putc,"!%s",nume);

num2=atoi(nume);

float valor;
operar:

switch(operador)

case '+':

valor=suma(num1,num2);

printf(lcd_putc,"%f",valor);

break;

case '-':

valor=resta(num1,num2);

printf(lcd_putc,"%f",valor);

break;

case '*':

valor=multi(num1,num2);

printf(lcd_putc,"%f",valor);

break;

case '/':

valor=divi(num1,num2);

printf(lcd_putc,"%f",valor);

break;

case '^':

valor=(num1*num1);

printf(lcd_putc,"\f%f^2=%f",num1,valor);

break;

case 't':

valor=(tan(num1));

printf(lcd_putc,"\ftan(%f)=%f",num1,valor);

break;

delay_ms(5000);

num1=0;
num2=0;

lcd_putc('\f');

operador=0;

strcpy(nume, "");

actual=0;

i=0;

char xoper()

if(input(PIN_C0)==1)

return '^';

if(input(PIN_C1)==1)

return 't';

return '0';

float suma(float num1,float num2)

return (num1+num2);

float resta(float num1,float num2)

return (num1-num2);

}
float multi(float num1,float num2)

return (num1*num2);

float divi(float num1, float num2)

if(num2==0)

return 0;

else

return (num1/num2);

Circuito Proteus

Conclusiones

Se concluye que para obtener el resultado es un lenguaje de 0 y 1 que el programa lo


interpreta y crea las secuencias correctas.

También podría gustarte