Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Universidad Tecnológica de Querétaro Alum. Rodríguez Del Castillo Kevin Martin Micro-Controladores Practica 3.- Reloj Programación // Practica 3.- Reloj //Se utiliza la técnica de multiplexar //Autor: Kevin Martin Rodriguez Del Castillo // declarar variables int display[10]= {0X3F,0X06,0x5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F}; int minutos, horas, segundos; // declara funciones void imprimir(void); // estructura de interrupciónon void interrupt() { // Preguntar quien hizo la interrupción if(INTCON.TMR0IF == 1) // el timer se desvordó? { // Indica la frecuencia en la que se imprime en una pantalla PORTC.F0 = ~PORTC.F0; segundos++; if(segundos>59) { segundos = 0; minutos++; if(minutos>59) { minutos = 0; horas++; if(horas>23) { horas = 0; } } } } INTCON.TMR0IF = 0; // limpiar la bandera TMR0H = 0X67; TMR0L = 0X6A; } void main() { TRISB = 0X00; // Puerto B como salida ADCON1= 0x0F; // Puerto B como digital PORTB = 0X00; // Limpiar puerto B TRISD = 0X00; // Puerto D como salida PORTD = 0X00; // Limpiar puerto D trisc=0; portc=0; // Valores iniciales horas = 23; minutos = 58; segundos = 0; // Interrupcion INTCON = 0B11100000; // 1-Habilita Interrupciones (bit 7) // 2-Habilita Interrupciones periféricas (bit 6) // 3-Habilita Interrupcion por Timer (bit 5) // Timer0 T0CON = 0B10000110; // 1-Habilita el timer (bit 7) // 2-Configurado a 16 bits (bit 6) // 3-Preescaladro (bit 3 al bit 0) while(1) { imprimir(); } } // estructura de funciones void imprimir(void) { PORTD = 0B00000010; // Prende las decenasde los segundos PORTB = display[segundos/10]; delay_ms(500); PORTD = 0B00000001; // Prende las unidades de los segundos PORTB = display[segundos%10]; delay_ms(500); PORTD = 0B00001000; // Prende las decenas de los minutos PORTB = display[minutos/10]; delay_ms(500); PORTD = 0B00000100; // Prende las unidades de los minutos PORTB = display[minutos%10]; delay_ms(500); PORTD = 0B00100000; // Prende las decenas de las horas PORTB = display[horas/10]; delay_ms(500); PORTD = 0B00010000; // Prende las unidades de las horas PORTB = display[horas%10]; delay_ms(500); } Simulación
Compartir