UTILIZO A ORDEN BANKSEL Y AL COMPILAR NO SALA NUNCA DE BANCO 0
QUE CONFIGURCION HAY QUE UTILIZAR EJ:
ESTE EJEMPLO LA SAQUE DE UN LIBRO
;LEER Y ESCRIBIR LA EEPROM
LIST P=16F676
#INCLUDE "P16F676.INC"
CBLOCK 0X20
CONTA, TECLA, LOOPS, LOOPS1, LOOPS2, LOOPS3
UNIDAD,DECENAS, PRIMERO, SEGUNDO, DATO
ENDC
;-------------------------------------
ORG 00
CALL 3FFH
BANKSEL OSCCAL
MOVWF OSCCAL
GOTO INICIO
ORG 05
;------------------------------------
; SECCION PARA LAS SUBRUTINAS
;------------------------------------
VER CALL MOSTRAR
RETARDO MOVLW D"250"
MOVWF LOOPS
TOP1 MOVLW D"10"
MOVWF LOOPS1
TOP NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ LOOPS1
GOTO TOP
DECFSZ LOOPS
GOTO TOP1
DECFSZ CONTA,1
GOTO VER
RETLW 00
RET1 MOVLW D"1" ;RETARDO DE UN SEGUNDO PARA LA
MOVWF LOOPS2 ;MULTIPEXACION DE LA VISUALIZACION
TOP3 MOVLW D"110"
MOVWF LOOPS3
TOP2 NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ LOOPS3
GOTO TOP2
DECFSZ LOOPS2
GOTO TOP3
RETLW 00
MOSTRAR MOVF SEGUNDO,W ;RUTINA PARA MOSTRAR EL
MOVWF PORTC ;SEGUNDO NUMEROS
BSF PORTC,4
CALL RET1
BCF PORTC,4
MOVF PRIMERO,W ;RUTINA PARA MOSTRAR EL
MOVWF PORTC ;PRIMER NUMERO
BSF PORTC,5
CALL RET1
BCF PORTC,5
RETURN
BINBCD CLRF DECENAS ;RUTINA PARA PASAR DE
CLRF UNIDAD ;BINARIO A BCD
MOVLW .10
REPITE SUBWF DATO,1
BTFSS STATUS,0
GOTO SUM
INCF DECENAS
GOTO REPITE
SUM ADDWF DATO,0
MOVWF UNIDAD
RETURN
LEER BSF EECON1,0 ;RUTINA DE LEER EN LA MEMORIA
MOVF EEDATA,W ;EEPROM DE DATOS
BANKSEL PORTA
RETURN
ESCRIBIR BSF EECON1,2 ;RUTINA DE ESCRIBIR EN LA MEMORIA
BANKSEL PIR1 ;EEPROM DE DATOS
BSF PIR1,EEIF
BANKSEL EECON2
MOVLW 055
MOVWF EECON2
MOVLW 0AAH
MOVWF EECON2
BSF EECON1,2
ESPERA
BANKSEL PIR1
BTFSS PIR1,EEIF
GOTO ESPERA
BCF PIR1,EEIF
BANKSEL EECON1
BCF EECON1,2
BANKSEL PORTA
RETLW 00
INICIO ;INICIO DEL PROGRAMA PRINCIPAL
BANKSEL PORTA
MOVLW D"7" ;DESABILITO LOS COMPARADORES Y DEJO
MOVWF CMCON ;LOS PINES DEL PUERTO A COMO I/O
BANKSEL TRISA ;DIGITALES
CLRF ANSEL ;DESTIVO LOS CONVERSORES
MOVLW B"111111" ;CONFIGURO EL PUERTO A COMO ENTRADA
MOVWF TRISA
CLRF TRISC ;CONFIGURO PUERTO C COMO SALIDA
BANKSEL PORTA
START MOVF PORTA,W ;LEO EL PUERTO A
MOVWF DATO ;LLEVO LO LEIDO EN A AL REGISTRO DATO
CALL BINBCD ;CONVIERTO DE BINARIO A BCD EN
MOVF UNIDAD,W ;LOS REGISTROS UNIDAD Y DECENAS
BANKSEL EEDATA ;CAMBIO A BANCO DE EEDATA
MOVWF EEDATA ;CARGO W EN EEDATA, ESTE ES EL
MOVLW D"8" ;DATO QUE SE ESCRIBIRA EN LA POCISION
MOVWF EEADR ;8 DE LA MEMORIA DE DATOS
CALL ESCRIBIR
MOVF DECENAS,W ;ESCRIBO TAMBIEN EL CONTENIDO DE RE-
BANKSEL EEDATA ;GISTRO DECENAS EN LA POCISION 09
MOVWF EEDATA ;DE LA MEMORIA DE DATOS CARGANDOLO
MOVLW D"9" ;PREVIAMENTE EN E REGISTRO EEDATA
MOVWF EEADR
CALL ESCRIBIR
MOVLW D"8" ;LEO LOS DATOS QUE ESCRIBI EN LAS
BANKSEL EEADR ;POSICIONES 8 Y 9 DE LA MEMORIA
MOVWF EEADR ;DE DATOS PARA MOSTRAROS
CALL LEER
MOVWF PRIMERO
BANKSEL EEADR
MOVLW D"9"
MOVWF EEADR
CALL LEER
MOVWF SEGUNDO
CALL MOSTRAR
BANKSEL PORTA
MOVLW D"40"
MOVWF CONTA
CALL RETARDO
GOTO START
END