En hora buena amiga,
Aqui tienes un ejemplo recien hecho, no solo resta, suma,multiplica y divide, no esta optimizado ni hecho en tu modelo y tampoco trabaja para numeros de mas de 4 cifras(o 5???? eso lo aprenderas), esto no es restriccion, solo es la base para que trabajes, ya que parte de todo esto es que aprendas y no solo COPIES codigo sin saber el por que, asi que esos detalles fueron dejados especialmnte para que eso no suceda. corregirlo es muy sencillo, pero solo si estudias un poco iras corrigiendo estas restricciones .El codigo trabaja, pero con esas condiciones(ademas de tener unos errorsillos por ahi faciles de corregir
), conforme vayas estudiando podras ir modificando facilmente y a tu antojo(como puedes ver tampoco tiene explicacion, las dudas que te vayan surgiendo y no puedas contestarlas con lo aprendido en el manual, DataSheet "DS"y Ensamblador se podran ir contestando por todos los amigos del foro) lo que no quieras o lo que requieras. sinecesitas el diseño para simular me avizas y te lo envio.Repito es bueno que solo se copie y pegue codigo si no lo entiendes, en este INIGUALABLE foro encontraras TODA la ayuda que puedas necesitar,pero AYUDA, no programas completos a la orden, espero que no lo tomes a mal, reviza los post anteriores de mis panas para entender como se tomo la peticion, ademas lo importante es que se aprenda.
DEVICE=16F628
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTA.5
DECLARE LCD_RSPIN PORTA.4
ALL_DIGITAL=TRUE
PORTB_PULLUPS=ON
DIM BAND AS DWORD
DIM DISM AS FLOAT
DIM CALCULO2 AS FLOAT
DIM TOTAL1 AS FLOAT
DIM CALCULO1 AS FLOAT
DIM CALC2 AS DWORD
DIM CALC1 AS DWORD
DIM ARRAY[14] AS BYTE
DIM XX AS BYTE
DIM KEY AS BYTE
DIM VAR1 as BYTE
DIM STORE AS FLOAT
DIM SUMA AS BIT
DIM RESTA AS BIT
DIM MULT AS BIT
DIM CO AS BYTE
DIM DIV AS BIT
DIM SALIR AS BYTE
DIM DD AS BYTE
DIM RESX AS DWORD
DIM RESX1 AS DWORD
DIM RESX2 AS DWORD
DIM DD2 AS BYTE
DIM STOREBIT AS BIT
DIM DD1 AS BYTE
CLEAR DD
CLEAR STORE
CLEAR STOREBIT
clear xx
CLEAR DD1
CLEAR DD2
CLEAR DIV
CLEAR MULT
CLEAR RESTA
CLEAR SUMA
CLEAR CALCULO1
CLEAR CALCULO2
CLEAR CALC1
CLEAR CALC2
CLEAR RESX2
CLEAR RESX1
RESX=100000000
CLS
INICIO:
VAR1 = INKEY
DELAYMS 50
KEY = LOOKUP VAR1, [7,8,9,"/",4,5,6,"X",1,2,3,"-","C","Z",50,"+"]
IF KEY="C" THEN
CLEAR STOREBIT
CLEAR XX
CLS
END IF
IF KEY=50 THEN
DD2=DD+7
RESX2=RESX
CLEAR RESX
CLEAR DD
IF STOREBIT=0 THEN
BAND =1
CO=0
LOOP3: IF CO <> DD1 THEN
IF ARRAY[CO]>0 THEN
BAND=BAND*10
CALC1=ARRAY[CO]*100000000
CALCULO1=CALCULO1 + CALC1/BAND
ELSE
END IF
INC CO
GOTO LOOP3
ELSE
CALCULO1=CALCULO1/RESX1
END IF
ELSE
CALCULO1=STORE
END IF
CO=7
BAND=1
LOOP4: IF CO <> DD2 THEN
IF ARRAY[CO]>0 THEN
BAND=BAND*10
CALC2=ARRAY[CO]*100000000
CALCULO2=CALCULO2 + CALC2/BAND
ELSE
END IF
INC CO
GOTO LOOP4
ELSE
CALCULO2=CALCULO2/RESX2
END IF
CLS
IF SUMA=1 THEN
TOTAL1= CALCULO1+CALCULO2
STORE=TOTAL1
STOREBIT=1
PRINT DEC8 TOTAL1
ENDIF
IF RESTA=1 THEN
TOTAL1= CALCULO1 - CALCULO2
STORE=TOTAL1
STOREBIT=1
PRINT DEC8 TOTAL1
END IF
IF MULT=1 THEN
TOTAL1=CALCULO1 * CALCULO2
STORE=TOTAL1
STOREBIT=1
PRINT DEC8 TOTAL1
END IF
IF DIV=1 THEN
TOTAL1=CALCULO1/CALCULO2
STORE=TOTAL1
STOREBIT=1
PRINT DEC8 TOTAL1
DELAYMS 500
END IF
CLEAR CALC1
CLEAR CALC2
CLEAR CALCULO1
CLEAR CALCULO2
CLEAR RESX
CLEAR RESX1
CLEAR RESX2
RESX=100000000
CLEAR SUMA
CLEAR RESTA
CLEAR MULT
CLEAR DIV
CLEAR DD
CLEAR DD1
CLEAR DD2
CLEAR KEY
CLEAR XX
END IF
IF KEY="+" THEN
DD1=DD
RESX1=RESX
RESX=100000000
CLEAR DD
SET SUMA
PRINT KEY
DELAYMS 100
XX=7
CLEAR KEY
END IF
IF KEY="-" THEN
DD1=DD
RESX1=RESX
RESX=100000000
CLEAR DD
SET RESTA
PRINT KEY
DELAYMS 100
XX=7
CLEAR KEY
END IF
IF KEY="X" THEN
DD1=DD
RESX1=RESX
RESX=100000000
CLEAR DD
SET MULT
PRINT KEY
DELAYMS 100
XX=7
CLEAR KEY
END IF
IF KEY="/" THEN
DD1=DD
RESX1=RESX
RESX=100000000
CLEAR DD
SET DIV
PRINT KEY
DELAYMS 100
XX=7
CLEAR KEY
END IF
IF KEY>0 AND KEY<10 THEN
PRINT @KEY
ARRAY[XX]=KEY
DELAYMS 100
RESX=RESX /10
INC XX
INC DD
CLEAR KEY
END IF
IF KEY="Z" THEN
PRINT @0
ARRAY[XX]=0
DELAYMS 100
RESX=RESX /10
INC XX
INC DD
CLEAR KEY
END IF
GOTO INICIO
Nota: Esta es solo una forma de hacer lo que necesitas(con el plus de hacer mas operaciones, claro esta), como te dije, no esta optimizada ni filtrada , despues de esto puees hacer tu codigo, mucho mas ligero, y mucho mas eficiente, y con mas posiblidades, pero este ejemplo siento que es el mejor para entender como manipular operaciones estilo calculadora y demas, si lo simplificara no entenderias muchas de las instancias que se ven claramente con el exceso de codigo.
Salu2