Les comparto el codigo para una calculadora de un solo digito, este programa utiliza la libreria que ya les comparti.
#include <18f4550.h>
#fuses XT,WDT,NOPROTECT,NOPUT, NOPBADEN
#use delay(clock= 20000000)
#BUILD(reset=0x2000,interrupt=0x2008)
#ORG 0x0000,0x1fff {}
#define use_portb_kbd true
#define use_portd_lcd true
#include <lcd.c>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <kbd4x4_1.c>
#use standard_io(b)
void saludo (){
lcd_gotoxy (1,1);
printf (lcd_putc,"Electronica");
lcd_gotoxy (1,2);
printf (lcd_putc,"Calculadora");
delay_ms (7000);
printf (lcd_putc,"\f");
delay_ms (2000);
}
void main()
{
float k=0,op;
float res;
float a=0, b=0;
lcd_init ();
Kbd_init ();
saludo();
port_b_pullups (TRUE);
for(;;){
k=kbd_getc();
if (k!=0&&k!='#'&&k!='A'&&k!='B'&&k!='C'&&k!='D'&&k!='*'){ ///# es igual A es mas B es menos C es multiplicar D es divicion
lcd_gotoxy (1,1);
lcd_putc (k);
a=k-48;
}
if (k=='A'){
lcd_gotoxy (1,1);
lcd_putc (k);
op=k;
b+=a;
lcd_gotoxy (1,2);
printf(lcd_putc,"%f",b);
}
if (k=='B'){
lcd_gotoxy (1,1);
lcd_putc (k);
op=k;
b-=a;
lcd_gotoxy (1,2);
printf(lcd_putc,"%f",b);
}
if (k=='C'){
lcd_gotoxy (1,1);
lcd_putc (k);
op=k;
b*=a;
lcd_gotoxy (1,2);
printf(lcd_putc,"%f",b);
}
if (k=='D'){
lcd_gotoxy (1,1);
lcd_putc (k);
op=k;
b/=a;
lcd_gotoxy (1,2);
printf(lcd_putc,"%f",b);
}
if (k=='#'&&op=='A'){
printf(lcd_putc,"\f");
delay_ms(1);
b=b+a;
res=(char)b;
lcd_gotoxy (1,2);
printf(lcd_putc,"%f",b);
}
if (k=='#'&&op=='B'){
printf(lcd_putc,"\f");
b=b-a;
res=(char)b;
lcd_gotoxy (1,2);
printf(lcd_putc,"%f",b);
}
if (k=='#'&&op=='C'){
printf(lcd_putc,"\f");
b=b*a;
res=(char)b;
lcd_gotoxy (1,2);
printf(lcd_putc,"%f",b);
}
if (k=='#'&&op=='D'){
printf(lcd_putc,"\f");
b=b/a;
res=(char)b;
lcd_gotoxy (1,2);
printf(lcd_putc,"%f",b) ;
}
if (k=='*'){
lcd_gotoxy (1,1);
b=a;
}
}
}
El programa es muy sencillo, si tienen alguna implementación o algún comentario por favor compartanlo.
Funciona,se muestra la bienvenida en el lcd pero parece que hay un error porque no se digitan la mayoria de numeros ni signos matematicos,el dos no mas se digite y cada vez que lo presiono aumenta o baja de cantidad,además que el equipo simulado demora casi un minuto en estar operativo
ResponderBorrar