- Realice el diseño y la codificacion en lenguaje C para un programa que realice lo siguiente:
Todo va a depeder del compilador que uses. Asi que vas a tener que decir cual es.
Se desea implementar un reloj que muestre HORA y MINUTO contanto en binario. La HORA sacarla por el PUERTO C y el MINUTO por el PUERTO D. La hora se deberá manejar de 0 a 23
Esto facilita las cosas, lo hace mucho mas facil. Solo necesitas mantener 3 variables que serian segundos, minutos y horas.
--La medición de tiempo se realizará mediante una señal externa de 60 Hz que se conecta a la pata INT2 del microcontrolador. El microcontrolador detecta los cambios usando interrupciones en transición negativa.
Esto te dice que no necesitas usar un timer, sino que con una interrupcion externa, contas cuando pasen 60 de esos, y aumentas 1 segundo. luego corregis los segundos si es que sea pasaron. algo muy simple de hacer.
--Se dispone un interruptor (botón momentaneo), conectado a RA0 para poner el reloj a tiempo. El ajuste es de un minuto por cada opresión del botón. Si el botón se deja oprimido no debe de seguir cambiando el valor. Cada vez que los minutos se reciclan (pasan de 29 a 0), la hora se incrementa.
Un poco mas complejo por el hecho de que si o si necesitas poner una comprobacion de que si se presiono por mucho tiempo no aumente. Pero es bastante simple de implementar en el while, ya que no va a haber otro codigo dentro.
Asi que tenes que realizar:
Una funcion que es la interrupcion. Con un contador, que cuando cuente 60, se ponga a 0 el contador y aumente 1 segundo. tambien que corriga los segundos , minutos y horas luego de aumentar el segundo. ademas actualizara las salidas
El main, el cual en el while va a solamente leer el boton, y podes usar los segundos para que cuando se presione por mas de 1 segundo no haga nada. y si es menos entonces auemnte. Ademas agregas el codigo de corregir los minutos de 59 a 0 aca tambien.
Si ya con eso no lo haces realmente te tendria que dar el codigo completo, por que es demasiado simple.
Otra cosa que no se nombro es el PIC que van a utilizar., Pero asumi que INT2 tiene asociado una interrupcion externa al dar el flanco.
Tambien hay otra forma que no usas interrupciones y que se puede hacer todo en el while. Pero es un poco mas complejo de realizar, pero es posible