Pic16f877a calculadora

Páginas: 7 (1562 palabras) Publicado: 27 de junio de 2011
#1 · ▲
calculadora con pic877 en microcode
Hola amigos, he estado andando entre los foros y se me ocurrio hacer una calcu, aunq no es nada nuevo quisiera me ayuden a desarrollarla desde lo basico asi que aqui les dejo el codigo que aun noi esta terminado pero espero pronto poder reducir el espacio para mayor capacidad de memoria y agilidad en tiempo de ejecucion, asi q si me pueden ayudar lesagradeceria muchisimo, o si tal vez ahi entre sus haberes tienen otras mejor, asi haremos una mezcla de ideas a ver q sale..... saludos a manolo, lordlafebre, redpic, felixis, ariel palacezi, navaismo y morfeus.... ustedes son los culpables de mi adiccion a los microcontroladores!!!!
 
CODIGO DE MICROCODE:
ADCON1=7        ;DIGITALIZA EL PUERTO A
TRISA=%00000000
TRISB=%00000000TRISC=%11110000
TRISD=%00000000
TRISE=%00000000
;////////////////////////////////////////////////////////////////
A VAR PORTB.0       ;nombres para los pines de las filas
B VAR PORTB.1
C VAR PORTB.2
D VAR PORTB.3
UNO VAR PORTC.4     ;nombres para los pines de las columnas
DOS VAR PORTC.5
TRES VAR PORTC.6
CUATRO VAR PORTC.7
BIP VAR PORTA.3     
LED VAR PORTA.5;////////////////////////////////////////////////////////////////
D1 VAR WORD
D2 VAR WORD
D3 VAR WORD

COUN1 VAR BYTE
OP VAR BYTE
U VAR BYTE
V VAR BYTE
W VAR BYTE
X VAR WORD
Y VAR BYTE
Z VAR BYTE
Q VAR BYTE
M VAR BYTE
N VAR BYTE
O VAR BYTE
E VAR BYTE
F VAR BYTE
G VAR BYTE
H VAR BYTE
I VAR BYTE
P VAR BYTE
L VAR WORD
J VAR WORD
K VAR WORD
NUMERO VAR BYTE     ;variable numero para almacenar la tecla pulsada;////////////////////////////////////////////////////////////////
Define LCD_BITS 8       ;DEFINE COMUNICACION A 8 BITS CON LCD
Define LCD_LINES 2      ;DEFINE UN LCD DE 2 LINEAS
Define LCD_DREG PORTB   ;DEFINE PINES DEL LCD B0 a B7
Define LCD_DBIT 0       ;EMPIEZA por B.0 ,B.1, B.2 --> B.7
Define LCD_RSREG PORTA  ;DEFINE EL PÙERTO A PARA CONECTAR EL bit RS
Define LCD_RSBIT 0      ;RS en elpuerto A.0
Define LCD_EREG PORTA   ;DEFINE EL PÙERTO B PARA CONECTAR EL bit E
Define LCD_EBIT 2       ;E en el puerto A.2
Define LCD_RWREG PORTA   ;DEFINE EL PÙERTO A PARA CONECTAR EL bit RW
Define LCD_RWBIT 1       ;RW en el puerto A.1
Define  LCD_COMMANDUS 2000  
Define  LCD_DATAUS 100  
Define  LCD_INITMS 100
;////////////////////////////////////////////////////////////////'                            PROGRAMA PRINCIPAL
;////////////////////////////////////////////////////////////////
'------------------------------------------------------------------------- -------

START:
GOSUB PRESENT
GOSUB SKT:GOSUB SKT
GOSUB SKT:GOSUB SKT
lcdout $FE,1
'GOSUB LOAD:GOSUB LOAD
'GOSUB LOAD:GOSUB LOAD

CALCULADORA:
lcdout $FE,$80,"0             "
GOSUB BARRIDO :GOSUB TECLA
GOTO NUM1

NUM1:IF NUMERO = "=" THEN VISUAL
lcdout $FE,$80,DEC NUMERO
LCDIN $80,[U]
X=U-48
IF X=0 THEN CERO
IF X = "." THEN FRAC1
GOTO QSTTEC1

CERO:
GOSUB BARRIDO :GOSUB TECLA
IF NUMERO = 0 THEN CERO
IF NUMERO = "." THEN FRAC1
IF NUMERO = "=" THEN CERO
GOTO NUM1

FRAC1:
LCDOUT $FE,1,DEC X,"."
GOSUB BARRIDO :GOSUB TECLA
IF NUMERO = "." THEN FRAC1
IF NUMERO = "=" THEN FRAC1
LCDOUT$FE,$82,DEC NUMERO
LCDIN $82,[E]
E=E-48
e=E*10
GOTO FRAC2

FRAC2:
GOSUB BARRIDO :GOSUB TECLA
IF NUMERO = "." THEN FRAC2
IF NUMERO = "=" THEN NUMERO = 0
LCDOUT $FE,$83,DEC NUMERO
LCDIN $83,[F]
F=F-48
M=E+F
K=(X*100)+M
GOTO VISUALD1

NUM2:
IF NUMERO = "." THEN FRAC3
lcdout $FE,$81,DEC NUMERO
LCDIN $81,[V]
X=X*10
V=V-48
X=X+V
GOTO QSTTEC2

FRAC3:
LCDOUT $FE,1,DEC X, "."
GOSUBBARRIDO :GOSUB TECLA
IF NUMERO = "." THEN FRAC3
IF NUMERO = "=" THEN VISUALD2
LCDOUT $FE,$82,DEC NUMERO
LCDIN $82,[G]
G=G-48
G=G*10
GOTO FRAC4

FRAC4:
GOSUB BARRIDO :GOSUB TECLA
IF NUMERO = "." THEN FRAC4
IF NUMERO = "=" THEN VISUALD2
LCDOUT $FE,$83,DEC NUMERO
LCDIN $83,[H]
H=H-48
N=G+H
L=X*100+N
GOTO VISUALD2

NUM3:
IF NUMERO = "." THEN FRAC5
IF NUMERO = "=" THEN...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Calculadora bianrio pic16f877
  • Pic16f877a
  • pic16f877a
  • Pic16f877a
  • pic16f877a
  • Curso De Pic16F877
  • Interrupciones PIC16F877A
  • Pic16f877a mikroc

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS