practica3 reloj de tiempo real
;----- DESCRIPCIÓN: -----
;----- EL PROGRAMA MOSTRARÁ EN FORMATO MILITAR -----
;----- LA HORA ACTUAL EN EL DISPLAY LCD, EMPEZANDO EN -----
;----- 00:00:00 AL INICIAR EL SISTEMA Y AUMENTANDO CADA -----
;----- SEGUNDO. -----
;--------------------------------------------------------------------;******************************************************************
list p=16f877A;
#include
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF;
;-------------------------------------------------------------------------
; Definicion de variables de programa en RAM
CBLOCK 0x20; Las variables se posicionan a partir deesta dirección en RAM
segundos
minutos
horas
var_aux
banderas
posicion
caracter_mostrar
ENDC
;-----------------------------------------------------------------------------
;----- Definición de constantes
unidades equ 0x0F;
decenas equ 0x0F;
pos_uni_seg equ 0x0B;
pos_dec_seg equ 0x0A;
pos_uni_min equ 0x08;
pos_dec_min equ 0x07;
pos_uni_hor equ 0x05;
pos_dec_hor equ0x04;
mod_uni equ 0xF0;
mod_dec equ 0x0F;
Borra_unidades equ 0xF0;
Borra_decenas equ 0x0F;
;---------------------------------------------------------------------------
;Comandos
Transmision equ b'00111000'; Controla los bits del comando de modo de transmision de la LCD
Funcion equ b'00000110'; Modo de funcion: El display no se mueve El control de dirección se incrementa
Comonoffequ b'00001100'; Control: Seenciende el LCD, No parpadea el puntero, activa el cursor
Displclr equ b'00000001'; Borra el display
;---------------------------------------------------------------------------
;Definicion de puertos I/O
;Puerto A
E equ .0;
RS equ .1;
Sin_usoRA2 equ .2;
Sin_UsoRA3 equ .3;
Sin_UsoRA4 equ .4;
Sin_usoRA5 equ .5;
progAequ B'111100'; definicion de la configuracion de los bits
;Puerto B
Sin_usoRB0 equ .0;
Sin_usoRB1 equ .1;
Sin_usoRB2 equ .2;
Sin_usoRB3 equ .3;
Sin_usoRB4 equ .4;
Sin_usoRB5 equ .5;
Sin_usoRB6 equ .6;
Sin_usoRB7 equ .7;
progB equ B'11111111'; definicion de la configuracion de los bits
;Puerto C
Display1 equ .0;
Display2 equ .1;
Display3 equ .2;Display4 equ .3;
Display5 equ .4;
Display6 equ .5;
Display7 equ .6;
Display8 equ .7;
progC equ B'00000000'; definicion de la configuracion de los bits
;Puerto D
Sin_UsoRD0 equ .0;
Sin_usoRD1 equ .1;
Sin_usoRD2 equ .2;
Sin_UsoRD3 equ .3;
Sin_usoRD4 equ .4;
Sin_usoRD5 equ .5;
Sin_usoRD6 equ .6;
Sin_usoRD7equ .7;
progD equ B'11111111'; definicion de la configuracion de los bits
;Puerto E
Sin_usoRE0 equ .0;
Sin_usoRE1 equ .1;
Sin_usoRE2 equ .2;
progE equ B'111'; definicion de la configuracion de los bits
;--------------------------------------------------------------------------
; Def. de las banderas
timer0 equ .0;
SinUso1 equ .1;
SinUso2 equ.2;
SinUso3 equ .3;
SinUso4 equ .4;
SinUso5 equ .5;
SinUso6 equ .6;
SinUso7 equ .7;
;---------------------------------------------------------------------------
;VECTOR DE RESET
vector_reset org 0000h
clrf PCLATH;
goto prog_prin;
;---------------------------------------------------------------------------
; Subrutina deinterrupciones
org 0004h;
vect_int movwf resp_w; respaldamos variables al entrar a la interrupción
movf PCLATH,w
movwf resp_pclath
btfsc INTCON,T0IF; revisamos estado de bandera de interrupción de tmr0
call int_tmr0; Vamos a la subrutina de interrupción del tmr0
movf resp_pclath,w ;regresamos el valor de las variables respaldadas
movwf PCLATH
movf...
Regístrate para leer el documento completo.