Hola Gracias x la ayuda aqui dejo lo que tengo, no quise poner todo el codigo para que no sea muy pesado
en un lcd de 16x2 en la primera linea veo la lectura de minutos y segundos
y en la segunda veo la medicion de temperatura y nivel de agua con un mpx 2010
el archivo "int.bas" lo pondre mas abajo, a mas de uno le pude ser de utilidad para tener un reloj en segundo plano, lo baje una vez de una pagina inglesa
para compilar tengo el pic basic pro 2.60
lo que necesito es poder tener un chip con mas de 8k como el 16877 ya que quiero mostrar distintos mensajes y eso me ocupa mucha memoria, ademas quiero hacer pruebas con una matriz grafica de 128x64, todo esto lo hago como autodidacta asi que perdonen mi ignorancia
INCLUDE "int.bas"
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 3
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 2
DEFINE LCD_BITS 4
DEFINE OSC 4
define ADC_BITS 8
define ADC_CLOCK 3
define ADC_SAMPLES 50
ADCON0 =%11000001
ADCON1 =%00000101 ; puerto an0 an1 analogico an3 +vref 2.5 volt
pause 1000
temp1 var byte
nivel var byte
inicio:
adcin 0,temp1 ; lectura analogica
adcin 1,nivel
LCDOut " tiempo: ",dec2 i_minu," :",dec2 i_sec,"gr "," "
LCDOut $Fe,$C0
LCDOut " temp ",dec2 temp1," nivel",dec2 nivel
goto inicio
aqui pondre el int.bas
DEFINE INTHAND rollover
wsave var BYTE $020 SYSTEM
wsave1 var BYTE $0a0 SYSTEM
wsave2 var BYTE $120 SYSTEM
wsave3 var BYTE $1a0 SYSTEM
ssave var BYTE BANK0 SYSTEM
psave var BYTE BANK0 SYSTEM
i_hour var BYTE
i_minu var BYTE
i_sec var BYTE
i_tic var BYTE
GOTO AFTERINT 'Jump past interrupthandler
asm
rollover
;*****************************************************************************************
;*****************************************************************************************
;
; If you are using a PIC with 2K or less,
; you MUST unremarke the lines that follow.
;
; movwf wsave ;only for PICs with 2k or less
; swapf STATUS,w ;only for PICs with 2k or less
; clrf STATUS ;only for PICs with 2k or less
; movwf ssave ;only for PICs with 2k or less
; movf PCLATH,w ;only for PICs with 2k or less
; movwf psave ;only for PICs with 2k or less
;
;*****************************************************************************************
;*****************************************************************************************
; interrupcode follows here
movlw 0x58
movwf TMR1L
movlw 0x9e ;restart timer from ffff - 9e58 => 5Hz if using 4MHz
movwf TMR1H
decfsz _i_tic,f
goto slutint
incf _i_sec,f
movlw 5 ;5 = 1Hz if using 4MHz (change to 10 for 8MHz and so on)
movwf _i_tic
movf _i_sec,w
sublw 60
btfss STATUS,Z ;check for 60 sec
goto slutint ;no
clrf _i_sec ;yes
incf _i_minu,f
movf _i_minu,w
sublw 60
btfss STATUS,Z ;check for 60 minutes
goto slutint ;no
clrf _i_minu ;yes
incf _i_hour
movf _i_hour,w
sublw 24
btfss STATUS,Z ;check for 24 hours
goto slutint ;no
clrf _i_hour ;yes
slutint
bcf PIR1,0 ;zero tmr1 interrupt flag
;end of interruptcode
; restorecode follows here
movf psave,w ;restore
movwf PCLATH
swapf ssave,w
movwf STATUS
swapf wsave,f
swapf wsave,w
retfie
endasm
AFTERINT:
INTCON = %00000000 'all interrupts off
PIR1 = %00000000 'zero tmr1 interrupt flag
PIE1 = %00000001 'enable timer1 interrupt
TMR1L = $58
TMR1H = $9e
i_hour = 0
i_minu = 0
i_sec = 0
i_tic = 5 'this value should be the same as the value of line 8 in the ISR
T1CON = %00110001 'timer1 on, prescaler=1/8
INTCON = %11000000 'interrupt on