Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Ticker_HelloWorld by
main.cpp
00001 /* mbed Program: Proyecto Cronometro mediante multiplexado de D7S */ 00002 #include "mbed.h"//Libreria para elementos básicos de mbed-OS 00003 #include "constantes.h"//Libreria de cabecera para almacenamiento de constantes 00004 #include "fnc_usuario.h"//Libreria para declaración de funciones de usuario 00005 00006 /******************************************************************************/ 00007 //Declaración para la utilización de hardware del sistema 00008 Ticker imp_d7s; //Interrupción temporizada para impresión en D7S multiplexados 00009 Ticker temp_cronometro; //Interrupción temporizada para cuantificación del tiempo del sistema 00010 DigitalOut led1(PTD5); //TEstigo led Verde 00011 DigitalOut led2(PTE29); //Testigo Led Rojo 00012 DigitalIn sw_arranque(PTD4); //Entrada digital para iniciar la cuantificacion de tiempo del sistema 00013 DigitalIn sw_paro(PTD2); //Entrada digital para parar la cuantificación de tiempo del sistema 00014 DigitalIn sw_reset(PTA13); //Entrada digital para reseteo de variables del sistema 00015 BusOut pines_disp7S(PTA17, PTB9, PTA7,PTA6,PTA14,PTA16,PTA15,PTC16); //Pines reservados para la impresión de información en los segmentos de los display 00016 BusOut pines_transist(PTC9,PTC8,PTA5,PTA4,PTA12,PTD3); //pines reservados para el control de transistores para conmutar displays 00017 00018 /******************************************************************************/ 00019 //Variables utilizadas para la logica del sistma 00020 int contador_digitos; //Contador para la impresión de datos en los displays 00021 int contador_ms; //Contador para cuantificacion de milisegundos 00022 int contador_decms; //Contador para cuantificacion de decenas de milisegundos 00023 int contador_seg; //Contador para cuantificacion de segundos 00024 int contador_min; //Contador para cuantificacion de minutos 00025 int impresion_d7s[6]; //Vector para almacenar información de los digitos a imprimir en D7S 00026 bool band_arranque; //Bandera para arranque del sistema 00027 00028 00029 /******************************************************************************/ 00030 //Tablas para control de grupos de pines, D7S y multiplexado 00031 int cod_disp7s[DIGITOS_D7S_ANODO]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //Codigo para vizualización de D7S de anodo comun 00032 int codigo_transist[MUX_D7S]={0x01,0x02,0x04,0x08,0x10,0x20}; //Tabla para despliegue del digito 0 al 5 00033 int codigo_transist_2[MUX_D7S]={0x20,0x10,0x08,0x04,0x02,0x01}; //Tabla para despliegue del digito 5 al 0 00034 00035 00036 /******************************************************************************/ 00037 //Rutina de Atención a la Interrupción para realizar la impresión de datos en el multiplexado de los D7S 00038 void impres_d7s() {//inicio ISR para impresión de D7S 00039 pines_disp7S=cod_disp7s[(impresion_d7s[contador_digitos])]; //Asignación de codigos para despliegue de datos en pines de segmentos de D7S 00040 pines_transist=codigo_transist_2[contador_digitos]; //Asignación de codigo para la conmutación de D7S 00041 contador_digitos--; //Contador decremental para variable de control de conmutación de D7S 00042 if(contador_digitos<0) //Condición para numeros menores a cero, reset de variable contadora 00043 contador_digitos=5; //Reset de variable contadora para inicio en D7S #5 00044 }//fin ISR para impresión de D7S 00045 00046 00047 /******************************************************************************/ 00048 //Rutina de Atención a la Interrupción para la cuantificación del tiempo del sistema 00049 void conteo_tiempo(){//inicio ISR para cuantificación de tiempos 00050 if(band_arranque==VERDADERO){ //Condición de arranque de la cuantificación del sistema 00051 contador_ms++;} //Variable contadora para cuantificacion de milisegundos del sistema 00052 led1 = !led1; //luz testigo para indicación de trabajo en el MCU 00053 00054 }//fin ISR para cuantificación de tiempos 00055 00056 /******************************************************************************/ 00057 int main() {//inicio funcion principal 00058 /*----------------------------------------------------------------------------*/ 00059 //Inicialización de variables y vinculacion de ISR a los servicios de interrupción 00060 imp_d7s.attach(&impres_d7s, 0.001); //viculación de la función de interrupción a la ISR para la vinculación de la impresión de datos en el D/S 00061 temp_cronometro.attach(&conteo_tiempo,0.001); //viculación de la función de interrupción a la ISR para la cuantificación de tiempo 00062 contador_digitos=5; //Inicialización de la variable contadora para impresión de los displays 00063 band_arranque=FALSO; //Inicialización de variable para el control de inicio de operación del sistema 00064 00065 /*----------------------------------------------------------------------------*/ 00066 //Inicio looop de trabajo iterativo 00067 00068 while(1) {//inicio loop de trabajo 00069 00070 if(sw_arranque==VERDADERO){//Inicio if-1 //Pregunta por el estado del boton arranque 00071 band_arranque=VERDADERO; //Habilitación de la bandera de arranque del sistema 00072 wait_ms(50); //Retardo de tiempo para la eliminación del rebote en el interruptor 00073 }//fin if-1 00074 00075 if(sw_paro==VERDADERO){//Inicio if-2 //Pregunta por el estado del boton paro 00076 band_arranque=FALSO; //Deshabilitación de la bandera de arranque del sistema 00077 wait_ms(50); //Retardo de tiempo para la eliminación del rebote en el interruptor 00078 } 00079 if(sw_reset==VERDADERO){//Inicio if-3 //Pregunta por el estado del boton paro 00080 band_arranque=FALSO; //Deshabilitación de la bandera de arranque del sistema 00081 contador_ms=0; //Reset contador de milisegundos 00082 contador_decms=0; //Reset contador de decenas de milisegundos 00083 contador_seg=0; //Reset contador de segundos 00084 contador_min=0; //Reset contador de minutos 00085 00086 for(int i=0;i<6;i++){ //Loop para reseteo de variable para impresion de información en D7S 00087 impresion_d7s[i]=0; //Limpieza de dato para D7S 00088 } 00089 wait_ms(50); //Retardo de tiempo para la eliminación del rebote en el interruptor 00090 }//fin if-3 00091 00092 //Sección de cuantificación de decenas de milisegundo 00093 if(contador_ms>DECENAS_MS){//inicio if-4 //condicion para el incremento de decenas de milisegundos 00094 contador_decms++; //Incremento de variable contadora de decenas de milisegundos 00095 num2dig(contador_decms,&impresion_d7s[0],&impresion_d7s[1]); //Transformación del contador de decenas de milisegundos a digitos y almacenaje para despliegue en D7S 00096 contador_ms=0; //Reset contador de milisegundos 00097 }//fin if-4 00098 //Sección de cuantificación de segundos 00099 if(contador_decms==MS2SEG){//inicio if-5 //condicion para el incremento de segundos 00100 contador_seg++; //Incremento de variable contadora de segundos 00101 num2dig(contador_seg,&impresion_d7s[2],&impresion_d7s[3]); //Transformación del contador de segundos a digitos y almacenaje para despliegue en D7S 00102 contador_decms=0; //Reset contador de decenas de milisegundos 00103 }//fin if-5 00104 //Sección de cuantificación de minutos 00105 if(contador_seg==SEG2MIN){//inicio if-6 //condicion para el incremento de minutos 00106 contador_min++; //Incremento de variable contadora de minutos 00107 num2dig(contador_min,&impresion_d7s[4],&impresion_d7s[5]); //Transformación del contador de minutos a digitos y almacenaje para despliegue en D7S 00108 contador_seg=0; //Reset contador de decenas de segundos 00109 }//fin if-6 00110 //Candado para la cuantificación de minutos 00111 if(contador_min==MIN){//inicio if-7 //Condicion para el reset de minutos 00112 contador_min=0; //Reset de la variable contadora de minutos 00113 }//fin if-7 00114 00115 }//fin loop de trabajo 00116 00117 }//Fin función principal
Generated on Fri Jul 22 2022 23:52:03 by
1.7.2
