TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: microcom en 04 de Mayo de 2006, 18:43:24

Título: programa para iniciadores.
Publicado por: microcom en 04 de Mayo de 2006, 18:43:24
programa con teclado matricial para realizar operaciones matematicas solo con dos digitos
+ - * potencia de dos. resultado negativo y visualizacion  en display 7 segmento. teclado 4*4
LIST P=16F84A
      #INCLUDE<P16F84A.INC>
   
;DECLARACION DE VARIABLES
MEMORIA   EQU   10
REG1   EQU   11
REG2   EQU   12
REG3   EQU   13
VALOR1   EQU   14
VALOR2   EQU   15
RESULT   EQU   16
DECENAS   EQU   17
UNIDAD   EQU   18
RESTA   EQU   19
PORTA   EQU   05
PORTB   EQU   06
STATUS   EQU   03
POT   EQU   20
REG7   EQU   21   
BEN   EQU   22
PUNTO   EQU   23
NAL   EQU   24

   ORG   00
   GOTO   INICIO

RETARDO   return
   MOVLW   .9
   MOVWF   REG1
DEC3   MOVLW   .9
   MOVWF   REG2
DEC2   MOVLW   .5
   MOVWF   REG3
DEC1   DECFSZ   REG3,1
   GOTO   DEC1
   DECFSZ   REG2,1
   GOTO   DEC2
   DECFSZ   REG1,1
   GOTO   DEC3
   RETURN
   
TABLA   RETURN
   ADDWF   PCL,1
   RETLW   B'11000000'
   RETLW   B'11111001'
   RETLW   B'10100100'
   RETLW   B'10110000'
   RETLW   B'10011001'
   RETLW   B'10010010'
   RETLW   B'10000010'
   RETLW   B'11111000'
   RETLW   B'10000000'
   RETLW   B'10011000'
   RETLW   B'10111111'
   RETLW   B'11111111'

;CONFIGURACION DE PUERTOS

INICIO   
   BSF   STATUS,5
   MOVLW   0F
   MOVWF   PORTA
   CLRF   PORTB
   BCF   STATUS,5
   CLRF   PORTA
   CLRF   PORTB
   CLRF   UNIDAD
   CLRF   DECENAS
   MOVLW   .5
   MOVWF   NAL

CAPTURA   
   CALL   COLUMNA
   MOVWF   VALOR1
   CLRF   DECENAS
   MOVWF   UNIDAD

POR   BSF   PORTB,3
   BTFSC   PORTA,0      ;POR   *
   GOTO    VAL2
   BSF   PORTB,0      ;SUMA   LETRAA
   BTFSC   PORTA,3
   GOTO    VAL3
   BSF   PORTB,1      ;RESTA   LETRAB
   BTFSC   PORTA,3
   GOTO   VAL4
   BSF   PORTB,2
   BTFSC   PORTA,3      ;CUADRADO LETRAC   
   GOTO   VAL5
   BSF   PORTB,3
   BTFSC   PORTA,3      ;EMPEZAR LETRAD   
   GOTO   EMPE
   CALL   VISUALIZACION
   GOTO   POR
VAL2   CALL   COLUMNA
   MOVWF   VALOR2
   MOVWF   UNIDAD
            

IGUA   BSF     PORTB,3
        BTFSC   PORTA,2
        GOTO    MULTIPLICACION
        CALL    VISUALIZACION
        GOTO    IGUA

MULTIPLICACION
   CLRF   RESULT
   MOVF   VALOR2,W
   XORLW    00
   BTFSC   STATUS,2
   GOTO   CEROS
SUMA   MOVF   VALOR1,W
   ADDWF   RESULT,1
   DECFSZ   VALOR2,1
   GOTO   SUMA
   GOTO    DECODIFICAR

CEROS   CLRF   RESULT
   GOTO   DECODIFICAR


 
INCREME   INCF   DECENAS,1
   GOTO   RE

DECODIFICAR
   MOVF   RESULT,W
   MOVWF   RESTA
   CLRF   DECENAS
   MOVLW   .10
RE   SUBWF   RESTA,1
   BTFSC   STATUS,0
   GOTO   INCREME
   ADDWF   RESTA,1
   MOVF   RESTA,W
   MOVWF   UNIDAD
   CALL   VISUALIZACION
   MOVLW   .5
   MOVWF   NAL
   GOTO   CAPTURA

VISUALIZACION  RETURN
   MOVF   UNIDAD,W
   CALL   TABLA
   BCF   PORTA,4
   MOVWF   PORTB
   CALL   RETARDO
   BSF   PORTA,4
   MOVF   DECENAS,W
   CALL   TABLA
   MOVWF   PORTB
   BCF   PORTB,7
   CALL   RETARDO
   BSF   PORTB,7   
   RETURN
SUCRE   

COLUMNA   
   CLRF   PORTB
   BSF   PORTB,0
   BTFSC   PORTA,0
   GOTO   UNO
   BTFSC   PORTA,1
   GOTO   DOS
   BTFSC   PORTA,2
   GOTO    TRES
   CLRF   PORTB
   BSF   PORTB,1
   BTFSC   PORTA,0
   GOTO   CUATRO
   BTFSC   PORTA,1
   GOTO   CINCO
   BTFSC   PORTA,2
   GOTO   SEIS
   CLRF   PORTB
   BSF   PORTB,2
   BTFSC   PORTA,0
   GOTO   SIETE
   BTFSC   PORTA,1
   GOTO   OCHO
   BTFSC   PORTA,2
   GOTO   NUEVE
   CLRF   PORTB
   BSF   PORTB,3      
   BTFSC   PORTA,1
   GOTO   CERO
   BTFSC   PORTA,3
   GOTO   EMPE
   CALL    VISUALIZACION
   DECFSZ   NAL,1
   GOTO   ESPERA
   GOTO   APAGAR
   GOTO   COLUMNA
ESPERA   CALL   RETARDO
   GOTO   COLUMNA
APAGAR   MOVLW   .11
   MOVWF   DECENAS
   MOVWF   UNIDAD
   CALL   VISUALIZACION
   GOTO   EMPE   

      

UNO   MOVLW   01
   CALL   MOSTRAR
   RETLW   01
CUATRO   MOVLW   04
   CALL   MOSTRAR
   RETLW   04
SIETE   MOVLW   07
   CALL   MOSTRAR
   RETLW   07
DOS   MOVLW   02
   CALL   MOSTRAR
   RETLW   02
CINCO   MOVLW   05
   CALL   MOSTRAR
   RETLW   05
OCHO   MOVLW   08
   CALL   MOSTRAR
   RETLW   08
CERO   MOVLW   0
   CALL   MOSTRAR
   RETLW   0
TRES   MOVLW   03
   CALL   MOSTRAR
   RETLW   03
SEIS   MOVLW   06
   CALL   MOSTRAR
   RETLW   06
NUEVE   MOVLW   09
   CALL   MOSTRAR
   RETLW   09

MOSTRAR   CALL   TABLA
   MOVWF   PORTB
   MOVWF   MEMORIA
   BCF   PORTA,4
   CALL   RETARDO
   RETURN



VAL3   CALL   COLUMNA
   MOVWF   VALOR2
   MOVWF   UNIDAD
SUM   BSF   PORTB,3
        BTFSC   PORTA,2
        GOTO   PROCESO
        CALL    VISUALIZACION
        GOTO    SUM

PROCESO   MOVF   VALOR2,0
   ADDWF   VALOR1,0
   MOVWF   RESULT
   GOTO    DECODIFICAR   

VAL4   CALL      COLUMNA
   MOVWF   VALOR2
   MOVWF   UNIDAD
SER   BSF   PORTB,3
   BTFSC   PORTA,2
   GOTO   CHORY
   CALL   VISUALIZACION
    GOTO   SER
CHORY   MOVF   VALOR2,0
   XORWF   VALOR1,0
   BTFSS   STATUS,2
   GOTO   FEME
   CLRF   UNIDAD
   CLRF   DECENAS
   CALL   VISUALIZACION
   GOTO   CAPTURA
      
FEME   MOVF   VALOR2,0
   SUBWF   VALOR1,0
   MOVWF   UNIDAD
   BTFSS   STATUS,0
   GOTO   BLADY
   MOVLW   UNIDAD
   CALL   VISUALIZACION
   GOTO   CAPTURA
BLADY   COMF   UNIDAD,1
   INCF   UNIDAD,1
   MOVLW   .10
   MOVWF   DECENAS
   CALL   VISUALIZACION
   GOTO    CAPTURA
VAL5   CLRF   POT
   MOVF   VALOR1,0
MAR   ADDWF   POT,1
   DECFSZ   VALOR1,1
   GOTO   MAR
   MOVF   POT,0
   MOVWF   RESULT
   CALL   DECODIFICAR
   GOTO   CAPTURA


   END