;------------------------------------------------------------
; gLCD Test v1.0
; Author: planeri
; Date: 11/11/2019
; PIC: 18F4620
; Osc: 20 Mhz
;------------------------------------------------------------


 LIST    P=PIC18F4620


_FOSC_HS              equ  0xF2
_FCMEN_OFF            equ  0xBF
_IESO_OFF             equ  0x7F
_PWRT_ON              equ  0xFE
_BOR_OFF              equ  0xF9
_BORV_0               equ  0xE7
_WDT_OFF              equ  0xFE
_WDTPS_1              equ  0xE1
_MCLRE_OFF            equ  0x7F
_LPT1OSC_OFF          equ  0xFB
_PBADEN_OFF           equ  0xFD
_CCP2MX_OFF           equ  0xFF
_LPT1OSC_OFF          equ  0xFB
_STVREN_OFF           equ  0xFE
_LVP_OFF              equ  0xFB
_XINST_OFF            equ  0xBF
_DEBUG_OFF            equ  0xFF
_CP0_OFF              equ  0xFF
_CP1_OFF              equ  0xFF
_CP2_OFF              equ  0xFF
_CP3_OFF              equ  0xFF
_CPB_OFF              equ  0xFF
_CPD_OFF              equ  0xFF
_WRT0_OFF             equ  0xFF
_WRT1_OFF             equ  0xFF
_WRT2_OFF             equ  0xFF
_WRT3_OFF             equ  0xFF
_WRTB_OFF             equ  0xFF
_WRTC_OFF             equ  0xFF
_WRTD_OFF             equ  0xFF
_EBTR0_OFF            equ  0xFF
_EBTR1_OFF            equ  0xFF
_EBTR2_OFF            equ  0xFF
_EBTR3_OFF            equ  0xFF
_EBTRB_OFF            equ  0xFF
_config1l             equ  0x300000
_config1h             equ  0x300001
_config2l             equ  0x300002
_config2h             equ  0x300003
_config3h             equ  0x300005
_config4l             equ  0x300006
_config5l             equ  0x300008
_config5h             equ  0x300009
_config6l             equ  0x30000a
_config6h             equ  0x30000b
_config7l             equ  0x30000c
_config7h             equ  0x30000d

 __config _config1h, _FOSC_HS & _FCMEN_OFF & _IESO_OFF
 __config _config2l, _PWRT_ON & _BOR_OFF & _BORV_0
 __config _config2h, _WDT_OFF & _WDTPS_1
 __config _config3h, _MCLRE_OFF & _LPT1OSC_OFF & _PBADEN_OFF & _CCP2MX_OFF
 __config _config4l, _STVREN_OFF & _LVP_OFF & _XINST_OFF & _DEBUG_OFF
 __config _config5l, _CP0_OFF & _CP1_OFF & _CP2_OFF & _CP3_OFF
 __config _config5h, _CPB_OFF & _CPD_OFF
 __config _config6l, _WRT0_OFF & _WRT1_OFF & _WRT2_OFF & _WRT3_OFF
 __config _config6h, _WRTB_OFF & _WRTC_OFF & _WRTD_OFF
 __config _config7l, _EBTR0_OFF & _EBTR1_OFF & _EBTR2_OFF & _EBTR3_OFF
 __config _config7h, _EBTRB_OFF


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  0x0000
_np_w                 equ  0x0000
cont_rebote           equ  0x0002
t_int_msx10           equ  0x0003
cont_seg              equ  0x0004
flags                 equ  0x0005
t_int_seg             equ  0x0006
seg                   equ  0x0007
min                   equ  0x0008
number                equ  0x000c
_np_temp5             equ  0x000d
_np_banderas2         equ  0x000e
_np_glcd_x            equ  0x0017
_np_glcd_y            equ  0x0018
_np_lcd_1             equ  0x0019
_np_msj_act           equ  0x001a
_np_nro_msj           equ  0x001b
_np_status            equ  0x001c
_np_t1_bak            equ  0x001d
_np_t1_cint1_h        equ  0x001e
_np_t1_cint1_l        equ  0x001f
_np_t1_cint_h         equ  0x0020
_np_t1_cint_l         equ  0x0021
_np_t1h_ini           equ  0x0022
_np_t1l_ini           equ  0x0023
_np_t2_bak            equ  0x0024
_np_t3_bak            equ  0x0025
_np_t_bak             equ  0x0026
_np_temp1             equ  0x0027
_np_temp2             equ  0x002f
_np_temp3             equ  0x0030
_np_temp4             equ  0x0031
_np_tiempo            equ  0x0037
_np_tiempo1           equ  0x0038
_np_tiempo2           equ  0x0039
_np_tiempo3           equ  0x003a
_np_timers            equ  0x003b
porta                 equ  0x0f80
portb                 equ  0x0f81
portc                 equ  0x0f82
portd                 equ  0x0f83
porte                 equ  0x0f84
lata                  equ  0x0f89
latb                  equ  0x0f8a
latc                  equ  0x0f8b
latd                  equ  0x0f8c
late                  equ  0x0f8d
trisa                 equ  0x0f92
trisb                 equ  0x0f93
trisc                 equ  0x0f94
trisd                 equ  0x0f95
trise                 equ  0x0f96
pie1                  equ  0x0f9d
pir1                  equ  0x0f9e
adcon2                equ  0x0fc0
adcon1                equ  0x0fc1
adcon0                equ  0x0fc2
t1con                 equ  0x0fcd
tmr1l                 equ  0x0fce
tmr1h                 equ  0x0fcf
rcon                  equ  0x0fd0
status                equ  0x0fd8
bsr                   equ  0x0fe0
intcon                equ  0x0ff2
pcl                   equ  0x0ff9
pclath                equ  0x0ffa


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
adon                  equ  0   ;
c                     equ  0   ;
gie                   equ  7   ;
ipen                  equ  7   ;
peie                  equ  6   ;
rd7                   equ  7   ;
t1ckps0               equ  4   ;
t1ckps1               equ  5   ;
t1sync                equ  2   ;
tmr1cs                equ  1   ;
tmr1ie                equ  0   ;
tmr1if                equ  0   ;
tmr1on                equ  0   ;
to                    equ  3   ;
vcfg0                 equ  4   ;
vcfg1                 equ  5   ;
z                     equ  2   ;
flag_1_seg            equ  7   ;
seg_pulsos            equ  6   ;
sub_inte              equ  0   ;bandera de subrrutina cancelada por interrupcion.
tiempo_t1             equ  1   ;bandera de temporizacion por tmr1


;------------------------------------------------------------
;               Declaración de Registros EEPROM
;------------------------------------------------------------
isp_alta_h_m1         equ  0x0010
isp_alta_l_m1         equ  0x0011
isp_baja_h_m1         equ  0x0012
isp_baja_l_m1         equ  0x0013
eu_freq_m1            equ  0x0014
periodo_eu_m1         equ  0x0015
tet_freq_m1           equ  0x0016
periodo_tet_m1        equ  0x0017
config_menu           equ  0x0000
isp_alta_h_m2         equ  0x0020
isp_alta_l_m2         equ  0x0021
isp_baja_h_m2         equ  0x0022
isp_baja_l_m2         equ  0x0023
eu_freq_m2            equ  0x0024
periodo_eu_m2         equ  0x0025
tet_freq_m2           equ  0x0026
periodo_tet_m2        equ  0x0027
isp_alta_h_m3         equ  0x0030
isp_alta_l_m3         equ  0x0031
isp_baja_h_m3         equ  0x0032
isp_baja_l_m3         equ  0x0033
eu_freq_m3            equ  0x0034
periodo_eu_m3         equ  0x0035
tet_freq_m3           equ  0x0036
periodo_tet_m3        equ  0x0037
modo_m1               equ  0x000f
modo_m2               equ  0x001f
modo_m3               equ  0x002f
w_b10_m1              equ  0x0018
w_b10_m2              equ  0x0028
w_b10_m3              equ  0x0038
conf_umb_imp          equ  0x0001


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

   org 0x00
   goto paso2
   org 0x08
   movwf _np_w,1
   swapf _np_w,1,1
   movf status,w,0

   movwf _np_status,1
   movf _np_tiempo,w,1
   movwf _np_t_bak,1
   movf _np_tiempo1,w,1
   movwf _np_t1_bak,1
   movf _np_tiempo2,w,1
   movwf _np_t2_bak,1
   movf _np_tiempo3,w,1
   movwf _np_t3_bak,1
   btfsc pir1,tmr1if,0
   goto inte_t1
salir__intes
   bsf _np_banderas2,sub_inte,1     ;activar la bandera de rutina cancelada por interrupcion
   movf _np_t_bak,w,1
   movwf _np_tiempo,1
   movf _np_t1_bak,w,1
   movwf _np_tiempo1,1
   movf _np_t2_bak,w,1
   movwf _np_tiempo2,1
   movf _np_t3_bak,w,1
   movwf _np_tiempo3,1
   movf _np_status,w ,1
   movwf status,0
   swapf _np_w,w ,1
   retfie


   ;------------------------------------------------------------
   ;                      inicio de la interrupción por tmr1
   ;------------------------------------------------------------
inte_t1_salir
   bcf pir1,tmr1if,0
   goto salir__intes
inte_t1
   movf _np_t1h_ini,w,1
   movwf tmr1h,0
   movf _np_t1l_ini,w,1
   movwf tmr1l,0
   bcf _np_timers,tiempo_t1,1
   decfsz _np_t1_cint_l,1,1
   goto inte_t12_no
   movf _np_t1_cint_h,w,1
   btfsc status,z,0
   goto inte_t12_si
   decf _np_t1_cint_h,1,1
   goto inte_t12_no
inte_t12_si
   bsf _np_timers,tiempo_t1,1
   movf _np_t1_cint1_l,w,1
   movwf _np_t1_cint_l,1
   movf _np_t1_cint1_h,w,1
   movwf _np_t1_cint_h,1
inte_t12_no
   call rutusr_002                  ;llamada a rutina usr_base_t
inte_t14
   goto inte_t1_salir

;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   clrf _np_w,1
   clrf cont_rebote,1
   clrf t_int_msx10,1
   clrf cont_seg,1
   clrf flags,1
   clrf t_int_seg,1
   clrf seg,1
   clrf min,1
   clrf number,1
   clrf _np_temp5,1
   clrf _np_banderas2,1
   clrf _np_glcd_x,1
   clrf _np_glcd_y,1
   clrf _np_lcd_1,1
   clrf _np_msj_act,1
   clrf _np_nro_msj,1
   clrf _np_status,1
   clrf _np_t1_bak,1
   clrf _np_t1_cint1_h,1
   clrf _np_t1_cint1_l,1
   clrf _np_t1_cint_h,1
   clrf _np_t1_cint_l,1
   clrf _np_t1h_ini,1
   clrf _np_t1l_ini,1
   clrf _np_t2_bak,1
   clrf _np_t3_bak,1
   clrf _np_t_bak,1
   clrf _np_temp1,1
   clrf _np_temp2,1
   clrf _np_temp3,1
   clrf _np_temp4,1
   clrf _np_tiempo,1
   clrf _np_tiempo1,1
   clrf _np_tiempo2,1
   clrf _np_tiempo3,1
   clrf _np_timers,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf _np_w,1
   clrf porta,0
   clrf porte,0
   movlw b'00000111'                ;configurar el puerto e como xxxxxaaa
   movwf trise,0
   movlw b'00111111'                ;configurar el puerto a como xxaeaaaa
   movwf trisa,0
   movlw b'00000111'                ;configuracion a/d = aaaaaaaa
   movwf adcon1,0

   bsf adcon0,adon,0                ;activar activar el módulo de conv a/d
   clrf portb,0
   movlw b'00000111'                ;configurar el puerto b como sssssaae
   movwf trisb,0

   bsf adcon0,adon,0                ;activar activar el módulo de conv a/d
   movlw b'00000000'                ;configurar el puerto c como ssssssss
   movwf trisc,0
   movlw b'00000000'                ;configurar el puerto d como ssssssss
   movwf trisd,0
   call glcd_inicio                 ;llamada a rutina glcd_inicio
   call glcd_inicio                 ;llamada a rutina glcd_inicio
   call glcd_inicio                 ;llamada a rutina glcd_inicio
   call rutusr_005                  ;llamada a rutina usr_glcd_bienvenida
   movlw .10                        ;temporizador 2 seg
   call tmp_1_mgc                   ;llamada a rutina tmp_1_mgc
   call rutusr_006                  ;llamada a rutina usr_glcd_menu
   movlw .2
   movwf _np_glcd_y,1
   movlw .19
   movwf _np_glcd_x,1
   call rutusr_007                  ;llamada a rutina usr_iglcd_option1
   movlw .4
   movwf _np_glcd_y,1
   movlw .19
   movwf _np_glcd_x,1
   call rutusr_008                  ;llamada a rutina usr_iglcd_option2
   movlw .6
   movwf _np_glcd_y,1
   movlw .19
   movwf _np_glcd_x,1
   call rutusr_009                  ;llamada a rutina usr_iglcd_count
   bcf t1con,tmr1cs,0               ;origen de la señal de reloj de tmr1
   bsf t1con,t1ckps0,0              ;tmr1 - configurar preescalado a 8
   bsf t1con,t1ckps1,0
   movlw b'11100111'
   movwf tmr1h,0
   movwf _np_t1h_ini,1
   movlw b'10011010'
   movwf tmr1l,0
   movwf _np_t1l_ini,1
   movlw .1
   movwf _np_t1_cint_l,1
   movwf _np_t1_cint1_l,1
   clrf _np_t1_cint_h,1
   clrf _np_t1_cint1_h,1

   bcf rcon,ipen,0                  ;desactivar bit de habilitacion de prioridades de interrupciones.
   bcf pir1,tmr1if,0                ;limpiar la bandera antes de activarla
   bsf pie1,tmr1ie,0                ;activar interrupción por tmr1.
   bsf intcon,peie,0                ;activar habilitador general de interrupciones por perifericos.
   bsf intcon,gie,0                 ;activar habilitador general de interrupciones.

   bsf t1con,tmr1on,0               ;activar el tmr1
paso19
loop
   btfss flags,flag_1_seg,1         ;si el -bit, flag_1_seg = 10
   goto paso19
   bsf portd,rd7,0
   movlw .50                        ;temporizador 100 us
   call tmp_10_uc                   ;llamada a rutina tmp_10_uc
   bcf portd,rd7,0
   incf number,1,1

   movf number,w,1                  ;si -reg(08), number  = d'10', 
   xorlw d'10'
   btfss status,z,0
   goto paso27
   clrf number,1
paso27
   ;enviar variables
   movlw .190
   movwf _np_temp3,1
   movlw .113
   movwf _np_temp4,1
   movf number,w,1
   movwf _np_temp5,1
   call glcd_fnt_02                 ;llamada a rutina glcd_fnt_02
   bcf flags,flag_1_seg,1
   goto loop


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

; usr_base_t
rutusr_002
rebote

   movf cont_rebote,w,1             ;si -reg(08), cont_rebote = d'0', 
   xorlw d'0'
   btfss status,z,0
   goto rutusr_002_26
rutusr_002_4
cont_ms

   movf t_int_msx10,w,1             ;si -reg(08), t_int_msx10 = d'0', 
   xorlw d'0'
   btfss status,z,0
   goto rutusr_002_25
rutusr_002_6
cont_segundos

   movf cont_seg,w,1                ;si -reg(08), cont_seg = d'100', 
   xorlw d'100'
   btfss status,z,0
   goto rutusr_002_24
   incf seg,1,1
   bsf flags,flag_1_seg,1
   btfss flags,seg_pulsos,1         ;si el -bit, seg_pulsos = 0
   goto rutusr_002_23
   bcf flags,seg_pulsos,1
rutusr_002_12
   clrf cont_seg,1

   movf t_int_seg,w,1               ;si -reg(08), t_int_seg = d'0', 
   xorlw d'0'
   btfss status,z,0
   goto rutusr_002_22
rutusr_002_14
cont_minutos

   movf seg,w,1                     ;si -reg(08), seg = d'60', 
   xorlw d'60'
   btfss status,z,0
   goto rutusr_002_18
   incf min,1,1
   clrf seg,1
rutusr_002_18
eventos_min

   movf min,w,1                     ;si -reg(08), min = d'60', 
   xorlw d'60'
   btfss status,z,0
   goto rutusr_002_salir
   clrf min,1                       ;aca se puede agregar código para autopoweroff, etc
   goto rutusr_002_salir
   goto eventos_min
rutusr_002_22
   movf t_int_seg,w,1
   btfss status,z,0
   decf t_int_seg,1,1
   movf t_int_seg,w,1
   goto cont_minutos
rutusr_002_23
   bsf flags,seg_pulsos,1
   goto rutusr_002_12               ;cierra el ciclo
rutusr_002_24
   incf cont_seg,1,1
   goto cont_minutos
rutusr_002_25
   movf t_int_msx10,w,1
   btfss status,z,0
   decf t_int_msx10,1,1
   movf t_int_msx10,w,1
   goto cont_segundos
rutusr_002_26
   movf cont_rebote,w,1
   btfss status,z,0
   decf cont_rebote,1,1
   movf cont_rebote,w,1
   goto cont_ms
rutusr_002_salir

   return


; usr_iglcd_blanco
rutusr_003

   movf _np_glcd_y,w,1
   addlw .184
   movwf _np_temp3,1
   movf _np_glcd_x,w,1
   movwf _np_temp4,1
   sublw .64
   btfsc status,c,0
   goto rutusr_003_2_a0
   bsf _np_temp4,7,1
   goto rutusr_003_2_b0
rutusr_003_2_a0
   movlw .64
   addwf _np_temp4,1,1
rutusr_003_2_b0
   call glcd_cursor                 ;llamada a rutina glcd_cursor
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
rutusr_003_3
   goto rutusr_003_salir
rutusr_003_salir

   return


; usr_iglcd_clr_logo
rutusr_004

   movf _np_glcd_y,w,1
   addlw .184
   movwf _np_temp3,1
   movf _np_glcd_x,w,1
   movwf _np_temp4,1
   sublw .64
   btfsc status,c,0
   goto rutusr_004_2_a0
   bsf _np_temp4,7,1
   goto rutusr_004_2_b0
rutusr_004_2_a0
   movlw .64
   addwf _np_temp4,1,1
rutusr_004_2_b0
   call glcd_cursor                 ;llamada a rutina glcd_cursor
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
rutusr_004_3
   goto rutusr_004_salir
rutusr_004_salir

   return


; usr_glcd_bienvenida
rutusr_005

   call glcd_seg_01                 ;llamada a rutina glcd_seg_01
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_01_s                   ;llamada a rutina glcd_01_s
   call glcd_seg_02                 ;llamada a rutina glcd_seg_02
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_seg_03                 ;llamada a rutina glcd_seg_03
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .5
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_80_s                   ;llamada a rutina glcd_80_s
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_80_s                   ;llamada a rutina glcd_80_s
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_80_s                   ;llamada a rutina glcd_80_s
   movlw .19
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_80_s                   ;llamada a rutina glcd_80_s
   movlw .14
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_seg_04                 ;llamada a rutina glcd_seg_04
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .5
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .4
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_80                     ;llamada a rutina glcd_80
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_e0                     ;llamada a rutina glcd_e0
   movlw .6
   movwf _np_temp2,1
   call glcd_f0_s                   ;llamada a rutina glcd_f0_s
   call glcd_e0                     ;llamada a rutina glcd_e0
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_80                     ;llamada a rutina glcd_80
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .4
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_80                     ;llamada a rutina glcd_80
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_e0                     ;llamada a rutina glcd_e0
   movlw .6
   movwf _np_temp2,1
   call glcd_f0_s                   ;llamada a rutina glcd_f0_s
   call glcd_e0                     ;llamada a rutina glcd_e0
   call glcd_seg_05                 ;llamada a rutina glcd_seg_05
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .5
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_7f                     ;llamada a rutina glcd_7f
   movlw .4
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .3
   movwf _np_temp2,1
   call glcd_e0_s                   ;llamada a rutina glcd_e0_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .2
   movwf _np_temp2,1
   call glcd_e0_s                   ;llamada a rutina glcd_e0_s
   movlw .4
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   call glcd_7f                     ;llamada a rutina glcd_7f
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_3f                     ;llamada a rutina glcd_3f
   call glcd_7f                     ;llamada a rutina glcd_7f
   movlw .3
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw 0xe1
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .2
   movwf _np_temp2,1
   movlw 0xcc
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0xed
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0xcf
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .4
   movwf _np_temp2,1
   call glcd_0f_s                   ;llamada a rutina glcd_0f_s
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_3f                     ;llamada a rutina glcd_3f
   call glcd_7f                     ;llamada a rutina glcd_7f
   movlw .3
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw 0xf3
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .2
   movwf _np_temp2,1
   movlw 0xe1
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw .2
   movwf _np_temp2,1
   movlw 0xf3
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0xfb
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   call glcd_seg_06                 ;llamada a rutina glcd_seg_06
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .6
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .2
   movwf _np_temp2,1
   call glcd_01_s                   ;llamada a rutina glcd_01_s
   movlw .5
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .2
   movwf _np_temp2,1
   call glcd_01_s                   ;llamada a rutina glcd_01_s
   call glcd_00                     ;llamada a rutina glcd_00
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .5
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .2
   movwf _np_temp2,1
   call glcd_01_s                   ;llamada a rutina glcd_01_s
   movlw .7
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .6
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .5
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .6
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .6
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   call glcd_03                     ;llamada a rutina glcd_03
   call glcd_seg_07                 ;llamada a rutina glcd_seg_07
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_seg_08                 ;llamada a rutina glcd_seg_08
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_80_s                   ;llamada a rutina glcd_80_s
   call glcd_seg_09                 ;llamada a rutina glcd_seg_09
   movlw .63
   movwf _np_temp2,1
   call glcd_01_s                   ;llamada a rutina glcd_01_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_10                 ;llamada a rutina glcd_seg_10
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_11                 ;llamada a rutina glcd_seg_11
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_12                 ;llamada a rutina glcd_seg_12
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_80                     ;llamada a rutina glcd_80
   movlw .4
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_80                     ;llamada a rutina glcd_80
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_e0                     ;llamada a rutina glcd_e0
   movlw .6
   movwf _np_temp2,1
   call glcd_f0_s                   ;llamada a rutina glcd_f0_s
   call glcd_e0                     ;llamada a rutina glcd_e0
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_80                     ;llamada a rutina glcd_80
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_80                     ;llamada a rutina glcd_80
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_e0                     ;llamada a rutina glcd_e0
   movlw .5
   movwf _np_temp2,1
   call glcd_f0_s                   ;llamada a rutina glcd_f0_s
   call glcd_e0                     ;llamada a rutina glcd_e0
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_e0                     ;llamada a rutina glcd_e0
   movlw .5
   movwf _np_temp2,1
   call glcd_f0_s                   ;llamada a rutina glcd_f0_s
   call glcd_e0                     ;llamada a rutina glcd_e0
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_80                     ;llamada a rutina glcd_80
   movlw .4
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_80                     ;llamada a rutina glcd_80
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_e0                     ;llamada a rutina glcd_e0
   movlw .6
   movwf _np_temp2,1
   call glcd_f0_s                   ;llamada a rutina glcd_f0_s
   call glcd_e0                     ;llamada a rutina glcd_e0
   call glcd_c0                     ;llamada a rutina glcd_c0
   call glcd_80                     ;llamada a rutina glcd_80
   movlw .7
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_13                 ;llamada a rutina glcd_seg_13
   movlw 0xfb
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x7b
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x1b
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_3f                     ;llamada a rutina glcd_3f
   call glcd_7f                     ;llamada a rutina glcd_7f
   movlw .3
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw 0xf3
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .2
   movwf _np_temp2,1
   movlw 0xe1
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0xf3
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .3
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   call glcd_7f                     ;llamada a rutina glcd_7f
   call glcd_3f                     ;llamada a rutina glcd_3f
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .2
   movwf _np_temp2,1
   call glcd_01_s                   ;llamada a rutina glcd_01_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .2
   movwf _np_temp2,1
   call glcd_01_s                   ;llamada a rutina glcd_01_s
   movlw .5
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_3f                     ;llamada a rutina glcd_3f
   call glcd_7f                     ;llamada a rutina glcd_7f
   movlw .3
   movwf _np_temp2,1
   call glcd_ff_s                   ;llamada a rutina glcd_ff_s
   movlw 0xe1
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .2
   movwf _np_temp2,1
   movlw 0xcc
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0xed
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0xcf
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .4
   movwf _np_temp2,1
   call glcd_0f_s                   ;llamada a rutina glcd_0f_s
   movlw .6
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_14                 ;llamada a rutina glcd_seg_14
   movlw .8
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .6
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .5
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .5
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .6
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .6
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .9
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_15                 ;llamada a rutina glcd_seg_15
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_16                 ;llamada a rutina glcd_seg_16
   movlw .63
   movwf _np_temp2,1
   call glcd_80_s                   ;llamada a rutina glcd_80_s
   call glcd_7f                     ;llamada a rutina glcd_7f
rutusr_005_3
   goto rutusr_005_salir
rutusr_005_salir

   return


; usr_glcd_menu
rutusr_006

   call glcd_seg_01                 ;llamada a rutina glcd_seg_01
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .3
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .44
   movwf _np_temp2,1
   movlw 0xc3
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw .3
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw 0xf3
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x63
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x83
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   call glcd_03                     ;llamada a rutina glcd_03
   movlw 0x83
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x63
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0xf3
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .2
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw 0x83
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .3
   movwf _np_temp2,1
   movlw 0x43
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   call glcd_seg_02                 ;llamada a rutina glcd_seg_02
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .44
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_0f                     ;llamada a rutina glcd_0f
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_03                     ;llamada a rutina glcd_03
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_0f                     ;llamada a rutina glcd_0f
   movlw .2
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_07                     ;llamada a rutina glcd_07
   movlw .3
   movwf _np_temp2,1
   movlw 0x09
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   call glcd_seg_03                 ;llamada a rutina glcd_seg_03
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_seg_04                 ;llamada a rutina glcd_seg_04
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_seg_05                 ;llamada a rutina glcd_seg_05
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_seg_06                 ;llamada a rutina glcd_seg_06
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_seg_07                 ;llamada a rutina glcd_seg_07
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_seg_08                 ;llamada a rutina glcd_seg_08
   call glcd_ff                     ;llamada a rutina glcd_ff
   movlw .63
   movwf _np_temp2,1
   call glcd_c0_s                   ;llamada a rutina glcd_c0_s
   call glcd_seg_09                 ;llamada a rutina glcd_seg_09
   movlw 0x83
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   call glcd_03                     ;llamada a rutina glcd_03
   movlw 0x83
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .3
   movwf _np_temp2,1
   movlw 0x43
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0x83
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   call glcd_03                     ;llamada a rutina glcd_03
   movlw 0xc3
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .3
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw 0xc3
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw .3
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .44
   movwf _np_temp2,1
   movlw 0xc3
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw .3
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_10                 ;llamada a rutina glcd_seg_10
   movlw 0x05
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   call glcd_00                     ;llamada a rutina glcd_00
   call glcd_0f                     ;llamada a rutina glcd_0f
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_0f                     ;llamada a rutina glcd_0f
   call glcd_00                     ;llamada a rutina glcd_00
   call glcd_07                     ;llamada a rutina glcd_07
   movlw .2
   movwf _np_temp2,1
   movlw 0x08
   movwf _np_temp1,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0x04
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   call glcd_0f                     ;llamada a rutina glcd_0f
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   movlw .44
   movwf _np_temp2,1
   call glcd_03_s                   ;llamada a rutina glcd_03_s
   movlw .3
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_11                 ;llamada a rutina glcd_seg_11
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_12                 ;llamada a rutina glcd_seg_12
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_13                 ;llamada a rutina glcd_seg_13
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_14                 ;llamada a rutina glcd_seg_14
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_15                 ;llamada a rutina glcd_seg_15
   movlw .63
   movwf _np_temp2,1
   call glcd_00_s                   ;llamada a rutina glcd_00_s
   call glcd_ff                     ;llamada a rutina glcd_ff
   call glcd_seg_16                 ;llamada a rutina glcd_seg_16
   movlw .63
   movwf _np_temp2,1
   call glcd_c0_s                   ;llamada a rutina glcd_c0_s
   call glcd_7f                     ;llamada a rutina glcd_7f
rutusr_006_3
   goto rutusr_006_salir
rutusr_006_salir

   return


; usr_iglcd_option1
rutusr_007

   movf _np_glcd_y,w,1
   addlw .184
   movwf _np_temp3,1
   movf _np_glcd_x,w,1
   movwf _np_temp4,1
   sublw .64
   btfsc status,c,0
   goto rutusr_007_2_a0
   bsf _np_temp4,7,1
   goto rutusr_007_2_b0
rutusr_007_2_a0
   movlw .64
   addwf _np_temp4,1,1
rutusr_007_2_b0
   call glcd_cursor                 ;llamada a rutina glcd_cursor
   movlw b'00111110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'11111100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111101'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000010'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111111'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
rutusr_007_3
   goto rutusr_007_salir
rutusr_007_salir

   return


; usr_iglcd_option2
rutusr_008

   movf _np_glcd_y,w,1
   addlw .184
   movwf _np_temp3,1
   movf _np_glcd_x,w,1
   movwf _np_temp4,1
   sublw .64
   btfsc status,c,0
   goto rutusr_008_2_a0
   bsf _np_temp4,7,1
   goto rutusr_008_2_b0
rutusr_008_2_a0
   movlw .64
   addwf _np_temp4,1,1
rutusr_008_2_b0
   call glcd_cursor                 ;llamada a rutina glcd_cursor
   movlw b'00111110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'11111100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111101'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000010'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01100001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01011001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
rutusr_008_3
   goto rutusr_008_salir
rutusr_008_salir

   return


; usr_iglcd_count
rutusr_009

   movf _np_glcd_y,w,1
   addlw .184
   movwf _np_temp3,1
   movf _np_glcd_x,w,1
   movwf _np_temp4,1
   sublw .64
   btfsc status,c,0
   goto rutusr_009_2_a0
   bsf _np_temp4,7,1
   goto rutusr_009_2_b0
rutusr_009_2_a0
   movlw .64
   addwf _np_temp4,1,1
rutusr_009_2_b0
   call glcd_cursor                 ;llamada a rutina glcd_cursor
   movlw b'00111110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000001'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00100010'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00111100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01111110'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'01000100'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw b'00000000'
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
rutusr_009_3
   goto rutusr_009_salir
rutusr_009_salir

   return


glcd_inicio
   clrf _np_lcd_1,1
   clrf _np_nro_msj,1
   movlw .25                        ;temporizador 50 ms
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   bsf portd,1,0
   bsf portd,0,0
   movlw b'00111111'
   movwf _np_temp1,1
   call glcd_comando                ;llamada a rutina glcd_comando
   bcf portd,1,0
   bcf portd,0,0
   return
glcd_cursor
   btfsc _np_temp4,7,1
   goto glcd_cursor_2
glcd_cursor_1
   bsf portd,1,0
   bcf portd,0,0
   goto glcd_ubicar
glcd_cursor_2
   bcf portd,1,0
   bsf portd,0,0
glcd_ubicar
   movf _np_temp3,w,1
   movwf _np_temp1,1
   call glcd_comando                ;llamada a rutina glcd_comando
   movf _np_temp4,w,1
   movwf _np_temp1,1
   bcf _np_temp1,7,1
   call glcd_comando                ;llamada a rutina glcd_comando
   movlw 0xc0
   movwf _np_temp1,1
   call glcd_comando                ;llamada a rutina glcd_comando
   return
glcd_act_cs1
   bsf portd,1,0
   return
glcd_desact_cs1
   bcf portd,1,0
   return
glcd_act_cs2
   bsf portd,0,0
   return
glcd_desact_cs2
   bcf portd,0,0
   return
glcd_datos_s
   movf _np_temp1,w,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   decfsz _np_temp2,1,1
   goto glcd_datos_s
   return
glcd_00_s
   clrf _np_temp1,1
   goto glcd_datos_s
glcd_ff_s
   movlw 0xff
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_e0_s
   movlw 0xe0
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_c0_s
   movlw 0xc0
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_03_s
   movlw 0x03
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_01_s
   movlw 0x01
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_0f_s
   movlw 0x0f
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_80_s
   movlw 0x80
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_f8_s
   movlw 0xf8
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_7f_s
   movlw 0x7f
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_07_s
   movlw 0x07
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_f0_s
   movlw 0xf0
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_fc_s
   movlw 0xfc
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_1f_s
   movlw 0x1f
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_fe_s
   movlw 0xfe
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_3f_s
   movlw 0x3f
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_60_s
   movlw 0x60
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_18_s
   movlw 0x18
   movwf _np_temp1,1
   goto glcd_datos_s
glcd_ff
   movlw 0xff
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_00
   clrf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_e0
   movlw 0xe0
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_c0
   movlw 0xc0
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_03
   movlw 0x03
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_01
   movlw 0x01
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_0f
   movlw 0x0f
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_80
   movlw 0x80
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_f8
   movlw 0xf8
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_7f
   movlw 0x7f
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_07
   movlw 0x07
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_f0
   movlw 0xf0
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fc
   movlw 0xfc
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_1f
   movlw 0x1f
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fe
   movlw 0xfe
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_3f
   movlw 0x3f
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_60
   movlw 0x60
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_18
   movlw 0x18
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_ini_seg
   movlw 0x40
   movwf _np_temp1,1
   call glcd_comando                ;llamada a rutina glcd_comando
   movlw 0xc0
   movwf _np_temp1,1
   call glcd_comando                ;llamada a rutina glcd_comando
   return
glcd_seg_01
   movlw 0xb8
   goto glcd_seg_ch1
glcd_seg_02
   movlw 0xb9
   goto glcd_seg_ch1
glcd_seg_03
   movlw 0xba
   goto glcd_seg_ch1
glcd_seg_04
   movlw 0xbb
   goto glcd_seg_ch1
glcd_seg_05
   movlw 0xbc
   goto glcd_seg_ch1
glcd_seg_06
   movlw 0xbd
   goto glcd_seg_ch1
glcd_seg_07
   movlw 0xbe
   goto glcd_seg_ch1
glcd_seg_08
   movlw 0xbf
   goto glcd_seg_ch1
glcd_seg_09
   movlw 0xb8
   goto glcd_seg_ch2
glcd_seg_10
   movlw 0xb9
   goto glcd_seg_ch2
glcd_seg_11
   movlw 0xba
   goto glcd_seg_ch2
glcd_seg_12
   movlw 0xbb
   goto glcd_seg_ch2
glcd_seg_13
   movlw 0xbc
   goto glcd_seg_ch2
glcd_seg_14
   movlw 0xbd
   goto glcd_seg_ch2
glcd_seg_15
   movlw 0xbe
   goto glcd_seg_ch2
glcd_seg_16
   movlw 0xbf
   goto glcd_seg_ch2
glcd_seg_ch1
   bsf portd,1,0
   bcf portd,0,0
   movwf _np_temp1,1
   call glcd_comando                ;llamada a rutina glcd_comando
   call glcd_ini_seg                ;llamada a rutina glcd_ini_seg
   return
glcd_seg_ch2
   bcf portd,1,0
   bsf portd,0,0
   movwf _np_temp1,1
   call glcd_comando                ;llamada a rutina glcd_comando
   call glcd_ini_seg                ;llamada a rutina glcd_ini_seg
   return
glcd_busy
   movlw .5                         ;temporizador 10 us
   call tmp_10_uc                   ;llamada a rutina tmp_10_uc

   return
glcd_comando
   bcf portb,7,0
   bcf portd,3,0
   goto glcd_enviar
glcd_dato
   bcf portb,7,0
   bsf portd,3,0
glcd_enviar
   bcf portc,0,0
   bcf portc,1,0
   bcf portc,2,0
   bcf portc,3,0
   bcf portc,4,0
   bcf portc,5,0
   bcf portc,6,0
   bcf portc,7,0
   btfsc _np_temp1,0,1
   bsf portc,0,0
   btfsc _np_temp1,1,1
   bsf portc,1,0
   btfsc _np_temp1,2,1
   bsf portc,2,0
   btfsc _np_temp1,3,1
   bsf portc,3,0
   btfsc _np_temp1,4,1
   bsf portc,4,0
   btfsc _np_temp1,5,1
   bsf portc,5,0
   btfsc _np_temp1,6,1
   bsf portc,6,0
   btfsc _np_temp1,7,1
   bsf portc,7,0
   bsf portd,2,0
   call glcd_busy                   ;llamada a rutina glcd_busy
   bcf portd,2,0
   return
glcd_mensaje_actual
glcd_1
   clrf _np_msj_act,1
   movf _np_nro_msj,w,1
   xorwf _np_lcd_1,w,1
   btfss status,z,0
   bsf _np_msj_act,0,1
   movf _np_nro_msj,w,1
   movwf _np_lcd_1,1
   return

tmp_1_mgc
   movwf _np_tiempo,1
   goto tmp_1_mgc_1
tmp_1_mgc_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tmp_1_mgc_1
   movlw .10
   movwf _np_tiempo1,1
tmp_1_mgc_bucle1
   nop
   nop
   movlw .99
   movwf _np_tiempo2,1
tmp_1_mgc_bucle0
   nop
   nop
   nop
   movlw .200
   movwf _np_tiempo3,1
tmp_1_mgc_bucle
   nop
   nop
   decfsz _np_tiempo3,1,1
   goto tmp_1_mgc_bucle
   nop
   nop
   nop
   decfsz _np_tiempo2,1,1
   goto tmp_1_mgc_bucle0
   nop
   nop
   nop
   decfsz _np_tiempo1,1,1
   goto tmp_1_mgc_bucle1
   decfsz _np_tiempo,1,1
   goto tmp_1_mgc_bucle2
   return


glcd_fnt_02
   call glcd_cursor                 ;llamada a rutina glcd_cursor
   movf _np_temp5,w,1
   btfsc status,z,0
   goto glcd_fnt_02_0
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_1
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_2
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_3
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_4
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_5
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_6
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_7
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_8
   decf _np_temp5,1,1
   btfsc status,z,0
   goto glcd_fnt_02_9
   return
glcd_fnt_02_0
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x7c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x82
   movwf _np_temp1,1
   movlw .2
   movwf _np_temp2,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0x7c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fnt_02_1
   call glcd_00                     ;llamada a rutina glcd_00
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x04
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   call glcd_fe                     ;llamada a rutina glcd_fe
   call glcd_00                     ;llamada a rutina glcd_00
   return
glcd_fnt_02_2
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0xc4
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0xa2
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x92
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x8c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fnt_02_3
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x44
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x82
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x92
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x6c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fnt_02_4
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x30
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x2c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   call glcd_fe                     ;llamada a rutina glcd_fe
   movlw 0x20
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fnt_02_5
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x5e
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x8a
   movwf _np_temp1,1
   movlw .2
   movwf _np_temp2,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0x72
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fnt_02_6
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x7c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x92
   movwf _np_temp1,1
   movlw .2
   movwf _np_temp2,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0x64
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fnt_02_7
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x02
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0xe2
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x1a
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x06
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fnt_02_8
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x6c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x92
   movwf _np_temp1,1
   movlw .2
   movwf _np_temp2,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0x6c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return
glcd_fnt_02_9
   call glcd_00                     ;llamada a rutina glcd_00
   movlw 0x4c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   movlw 0x92
   movwf _np_temp1,1
   movlw .2
   movwf _np_temp2,1
   call glcd_datos_s                ;llamada a rutina glcd_datos_s
   movlw 0x7c
   movwf _np_temp1,1
   call glcd_dato                   ;llamada a rutina glcd_dato
   return

tmp_10_uc
   movwf _np_tiempo,1
   goto tmp_10_uc_10
tmp_10_uc_bucle
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tmp_10_uc_10
   decfsz _np_tiempo,1,1
   goto tmp_10_uc_bucle
   return


tmp_100_mc
   movwf _np_tiempo,1
   goto tmp_100_mc_1
tmp_100_mc_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tmp_100_mc_1
   movlw .22
   movwf _np_tiempo1,1
tmp_100_mc_bucle1
   movlw .150
   movwf _np_tiempo2,1
tmp_100_mc_bucle
   decfsz _np_tiempo2,1,1
   goto tmp_100_mc_bucle
   decfsz _np_tiempo1,1,1
   goto tmp_100_mc_bucle1
   nop
   decfsz _np_tiempo,1,1
   goto tmp_100_mc_bucle2
   return



;------------------------------------------------------------
;                  DATOS EN MEMORIA EEPROM
;------------------------------------------------------------
   org  0xf00000
   data   b'00001100'
   data   d'5'
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   b'00000001'
   data   d'00'
   data   d'20'
   data   d'00'
   data   d'200'
   data   d'2'
   data   d'50'
   data   d'50'
   data   d'2'
   data   d'10'
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   b'00000001'
   data   d'00'
   data   d'20'
   data   d'00'
   data   d'200'
   data   d'2'
   data   d'50'
   data   d'50'
   data   d'2'
   data   d'10'
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0x1
   data   0x0
   data   0x14
   data   d'00'
   data   d'200'
   data   d'2'
   data   d'50'
   data   d'50'
   data   d'2'
   data   d'10'
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff
   data   0xffff

 End