;------------------------------------------------------------
; Código assembler generado por Niple V6.6.2
; Proyecto: 
; Autor: SANCHEZ SANCHEZ AARON
; Fecha: 27/09/2023
; PIC: 16F628A
; Velocidad de reloj: Int 4 Mhz
; Descripcion: 
;------------------------------------------------------------


 LIST    P=PIC16F628A


_INCRC_OSC_NOCLKOUT   equ  0x3FFC
_WDT_OFF              equ  0x3FFB
_PWRTE_ON             equ  0x3FF7
_MCLRE_OFF            equ  0x3FDF
_BODEN_OFF            equ  0x3FBF
_LVP_OFF              equ  0x3F7F
_CPD_OFF              equ  0x3F7F
_CP_OFF               equ  0x3FFF

 __config _INCRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  0x0000
pcl                   equ  0x0002
status                equ  0x0003
fsr                   equ  0x0004
porta                 equ  0x0005
portb                 equ  0x0006
pclath                equ  0x000a
cmcon                 equ  0x001f
_np_temp1             equ  0x0024
_np_resultado         equ  0x0025
_np_indice            equ  0x0026
digito                equ  0x0027
opcion                equ  0x0081
trisa                 equ  0x0085
trisb                 equ  0x0086


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
c                     equ  0   ;-
psa                   equ  3   ;-
rp0                   equ  5   ;-
rp1                   equ  6   ;-
to                    equ  4   ;-
z                     equ  2   ;-


;------------------------------------------------------------
;               Declaración de Registros EEPROM
;------------------------------------------------------------


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

   org 0x00
   bsf status,rp0                   ;cambiar a banco 1
   bcf opcion,psa
   goto paso2


tabla_7_seg

   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   movf _np_indice,0
   clrf _np_resultado
   sublw .9
   btfss status,c
   goto tabla_7_seg_s
   movf _np_indice,0
   movwf _np_temp1
   movlw low tabla_7_seg_tbl
   addwf _np_temp1,1
   movlw high tabla_7_seg_tbl
   btfsc status,c
   addlw .1
   movwf pclath
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   movf _np_indice,0
   call tabla_7_seg_tbl
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   movwf _np_resultado
tabla_7_seg_s
   return
tabla_7_seg_tbl
   addwf pcl,1
   retlw b'00111111'                ; 0
   retlw b'00000110'                ; 1
   retlw b'01011011'                ; 2
   retlw b'01001111'                ; 3
   retlw b'01100110'                ; 4
   retlw b'01101101'                ; 5
   retlw b'01111101'                ; 6
   retlw b'00000111'                ; 7
   retlw b'01111111'                ; 8
   retlw b'01100111'                ; 9



;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   clrf _np_temp1
   clrf _np_resultado
   clrf _np_indice
   clrf digito
   clrf porta
   movlw b'11111111'                ;configurar el puerto a como eeeeeeee
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisa
   movlw b'00000111'                ;puerto a = e/s digital
   bcf status,rp0                   ;cambiar a banco 0
   movwf cmcon
   clrf portb
   movlw b'00000000'                ;configurar el puerto b como ssssssss
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisb
inicio
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   ;leer un dato del puerto a
   movf porta,w
   movwf digito
   movf digito,w                    ;consultar la tablatabla_7_seg
   movwf _np_indice
   call tabla_7_seg                 ;llamada a rutina tabla_7_seg
   movf _np_resultado,w
   movwf digito
   ;escribir en el puerto b
   movf digito,w
   movwf portb
   goto inicio
   goto inicio


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------


;------------------------------------------------------------
;                  DATOS EN MEMORIA EEPROM
;------------------------------------------------------------
   org  0x2100
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff

 End