Buenas,
lo primero gracias por intentar ayudarme
Hemos tenido que hacer mediante un contador el reloj y el calendario ayudandonos por unas tablas para sacar por pantalla los meses y los dias de la semana usando las 3 primeras letras. hasta ahi todo bien. pero en realidad lo que queremos hacer es un despertador que podamos cambiar la hora y la fecha. para ello usaremos una tecla, que nos cambiara al modo cambiar hora y otra tecla para cambiar la fecha. usamos maquinas de estado y evento porque es lo que nos han aconsejado, pero nos hemos liado haciendolo, y no funciona. aqui te dejo nuestra maquina de estados, haber si te ayuda a entenderlo
;********************************************************
;MAQUINA DE ESTADO
MAQESTADO:
MOVWF evento
MOVF estado,W ;se busca el evento introducido
CLRF PCLATH ;ajuste del registro
BSF PCLATH,1 ;PCLATH
ADDWF PCL,F ;Salto a la rutina asociada al evento
GOTO MAQVISUALIZAR ;visualiza reloj
GOTO MAQMODIFICAR ;modificar fecha y hora
RETURN
RETURN
;******************************************************************************************************
;MOSTRAR RELOJ
MAQVISUALIZAR:
MOVF evento,W ;se busca el evento introducido
CLRF PCLATH ;ajuste del registro
BSF PCLATH,1 ;PCLATH
ADDWF PCL,F ;Salto a la rutina asociada al evento
GOTO MOSTRAR
RETURN
RETURN
RETURN
MOSTRAR:
CALL MOSTRARRELOJ ;mostramos el reloj
CALL MOSTRARFECHA ;mostramos la fecha
RETURN
RETURN
;MODIFICAR
MAQMODIFICAR:
MOVF evento_dato,W ;se busca el evento introducido
CLRF PCLATH ;ajuste del registro
BSF PCLATH,1 ;PCLATH
ADDWF PCL,F ;Salto a la rutina asociada al evento
RETURN
GOTO CAMHORA ;cambiar hora
; GOTO CAMFECHA ;cambiar fecha
; GOTO ALARMA ;alarmas
RETURN
RETURN
CAMHORA:
MOVF evento_dato,W ;se busca el evento introducido
CLRF PCLATH ;ajuste del registro
BSF PCLATH,1 ;PCLATH
ADDWF PCL,F ;Salto a la rutina asociada al evento
GOTO DHMO ;modificar decimas hora
GOTO UHMO ;nodificar unidades hora
GOTO DMMO ;modificar decimas minuto
GOTO UMMO ;modificar unidades minuto
DHMO:
MOVLW 1
XORWF evento_dato,W
BTFSS STATUS,Z
RETURN
CALL ACCION1
RETURN
ACCION1:
MOVLW cur_hm ;CURSOR PRIMERA LINEA
CALL LCDIWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'E'
CALL LCDDWR
MOVLW 'C'
CALL LCDDWR
MOVLW 'E'
CALL LCDDWR
MOVLW 'N'
CALL LCDDWR
MOVLW 'A'
CALL LCDDWR
MOVLW 'S'
CALL LCDDWR
MOVLW ' '
CALL LCDDWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'E'
CALL LCDDWR
MOVLW ' '
CALL LCDDWR
MOVLW 'H'
CALL LCDDWR
MOVLW 'O'
CALL LCDDWR
MOVLW 'R'
CALL LCDDWR
MOVLW 'A'
CALL LCDDWR
MOVLW ':'
CALL LCDDWR
MOVLW cur_l2 ;SALTO DE LINEA
CALL LCDIWR
CALL LEETECLADO
CALL ELIMREB
CALL REPORTT
MOVWF DHM
MOVLW 2
MOVWF evento_dato
MOVF DHM,W
ADDLW A'0'
CALL LCDDWR
RETURN
UHMO:
MOVLW 2
XORWF evento_dato,W
BTFSS STATUS,Z
RETURN
CALL ACCION2
RETURN
ACCION2:
MOVLW cur_hm ;CURSOR PRIMERA LINEA
CALL LCDIWR
MOVLW 'U'
CALL LCDDWR
MOVLW 'N'
CALL LCDDWR
MOVLW 'I'
CALL LCDDWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'A'
CALL LCDDWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'S'
CALL LCDDWR
MOVLW ' '
CALL LCDDWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'E'
CALL LCDDWR
MOVLW ' '
CALL LCDDWR
MOVLW 'H'
CALL LCDDWR
MOVLW 'O'
CALL LCDDWR
MOVLW 'R'
CALL LCDDWR
MOVLW 'A'
CALL LCDDWR
MOVLW ':'
CALL LCDDWR
MOVLW cur_l2 ;SALTO DE LINEA
CALL LCDIWR
CALL LEETECLADO
CALL ELIMREB
CALL REPORTT
MOVWF UHM
MOVLW 3
MOVWF evento_dato
MOVF UHM,W
ADDLW A'0'
CALL LCDDWR
RETURN
DMMO:
MOVLW 3
XORWF evento_dato,W
BTFSS STATUS,Z
RETURN
CALL ACCION3
RETURN
ACCION3:
MOVLW cur_hm ;CURSOR PRIMERA LINEA
CALL LCDIWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'E'
CALL LCDDWR
MOVLW 'C'
CALL LCDDWR
MOVLW 'E'
CALL LCDDWR
MOVLW 'N'
CALL LCDDWR
MOVLW 'A'
CALL LCDDWR
MOVLW 'S'
CALL LCDDWR
MOVLW ' '
CALL LCDDWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'E'
CALL LCDDWR
MOVLW ' '
CALL LCDDWR
MOVLW 'M'
CALL LCDDWR
MOVLW 'I'
CALL LCDDWR
MOVLW 'N'
CALL LCDDWR
MOVLW 'S'
CALL LCDDWR
MOVLW ':'
CALL LCDDWR
MOVLW cur_l2 ;SALTO DE LINEA
CALL LCDIWR
CALL LEETECLADO
CALL ELIMREB
CALL REPORTT
MOVWF DMM
MOVLW 4
MOVWF evento_dato
MOVF DMM,W
ADDLW A'0'
CALL LCDDWR
RETURN
UMMO:
MOVLW 4
XORWF evento_dato,W
BTFSS STATUS,Z
RETURN
CALL ACCION4
RETURN
ACCION4:
MOVLW cur_hm ;CURSOR PRIMERA LINEA
CALL LCDIWR
MOVLW 'U'
CALL LCDDWR
MOVLW 'N'
CALL LCDDWR
MOVLW 'I'
CALL LCDDWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'A'
CALL LCDDWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'S'
CALL LCDDWR
MOVLW ' '
CALL LCDDWR
MOVLW 'D'
CALL LCDDWR
MOVLW 'E'
CALL LCDDWR
MOVLW ' '
CALL LCDDWR
MOVLW 'M'
CALL LCDDWR
MOVLW 'I'
CALL LCDDWR
MOVLW 'N'
CALL LCDDWR
MOVLW 'S'
CALL LCDDWR
MOVLW ':'
CALL LCDDWR
MOVLW cur_l2 ;SALTO DE LINEA
CALL LCDIWR
CALL LEETECLADO
CALL ELIMREB
CALL REPORTT
MOVWF UMM
MOVLW 1
MOVWF evento_dato
MOVF UMM,W
ADDLW A'0'
CALL LCDDWR
RETURN
;************************************************************
muchas gracias de todas formas