// calculadora.c - Criado pelo studio UNO 2.3
// 2 September 2016 5:31:34 pm
#include <uno.h>
// Declaracao das Variaveis
unsigned char Operacao;
long Resultado;
unsigned char Valor1;
unsigned char Valor2;
// Prototipos
void Operação(void);
void Digito 2(void);
void Digito 1(void);
void Resultado(void);
//Funcoes do Usuario
void Operação(void)
{
while(TRUE) {
__lcd_goto(0x7f, 4);
if ((Operacao == 1)) {
__lcd_puts("+");
}
if ((Operacao == 2)) {
__lcd_puts("-");
}
if ((Operacao == 3)) {
__lcd_puts("x");
}
if ((Operacao == 4)) {
__lcd_puts(":");
}
if (__UP_KEY) {
if ((Operacao == 4)) {
Operacao = 1;
}
else {
Operacao++;
}
__delay_us(50); while (__UP_KEY) { }; __delay_us(50);
}
if (__BOTTOM_KEY) {
if ((Operacao == 1)) {
Operacao = 4;
}
else {
Operacao--;
}
__delay_us(50); while (__BOTTOM_KEY) { }; __delay_us(50);
}
if (__RIGHT_KEY) {
__delay_us(50); while (__RIGHT_KEY) { }; __delay_us(50);
Digito 2();
}
if (__LEFT_KEY) {
__delay_us(50); while (__LEFT_KEY) { }; __delay_us(50);
return;
}
}
}
void Digito 2(void)
{
while(TRUE) {
if (__UP_KEY) {
if ((Valor2 == 255)) {
Valor2 = 0;
}
else {
Valor2++;
}
__delay_us(50); while (__UP_KEY) { }; __delay_us(50);
}
if (__BOTTOM_KEY) {
if ((Valor2 == 0)) {
Valor2 = 255;
}
else {
Valor2--;
}
__delay_us(50); while (__BOTTOM_KEY) { }; __delay_us(50);
}
__lcd_goto(0x7f, 5);
__lcd_puts("%c", Valor2);
if (__ENTER_KEY) {
__delay_us(50); while (__ENTER_KEY) { }; __delay_us(50);
Resultado();
}
if (__LEFT_KEY) {
__delay_us(50); while (__LEFT_KEY) { }; __delay_us(50);
return;
}
}
}
void Digito 1(void)
{
while(TRUE) {
if (__UP_KEY) {
if ((Valor1 == 255)) {
Valor1 = 0;
}
else {
Valor1++;
}
__delay_us(50); while (__UP_KEY) { }; __delay_us(50);
}
if (__BOTTOM_KEY) {
if ((Valor1 == 0)) {
Valor1 = 255;
}
else {
Valor1--;
}
__delay_us(50); while (__BOTTOM_KEY) { }; __delay_us(50);
}
__lcd_goto(0x7f, 1);
__lcd_puts("%c", Valor1);
if (__RIGHT_KEY) {
__delay_us(50); while (__RIGHT_KEY) { }; __delay_us(50);
Operação();
}
}
}
void Resultado(void)
{
__lcd_goto(0xbf, 1);
if ((Operacao == 1)) {
Resultado = (Valor1 + Valor2);
}
if ((Operacao == 2)) {
Resultado = (Valor1 - Valor2);
}
if ((Operacao == 3)) {
Resultado = (Valor1 * Valor2);
}
if ((Operacao == 3)) {
Resultado = (Valor1 * Valor2);
}
if ((Operacao == 4)) {
Resultado = (Valor1 / Valor2);
}
__lcd_puts("%g", Resultado);
while(!__ENTER_KEY) { __delay(10); }
while(1) {}
}
//Funcao Principal
void main(void)
{
__inicializa;
Operacao = 1;
Valor1 = 0;
Valor2 = 0;
__backlight(__ON);
__lcd_goto(0x7f, 1);
__lcd_puts("000+000=");
Digito 1();
while(TRUE) { }
}