NORMATIVA DEL LABORATORIO DE DISEÑO DE SISTEMAS DIGITALES by olliegoblue26

VIEWS: 0 PAGES: 4

									                LABORATORIO DE
DISEÑO DE SISTEMAS DIGITALES
    Ingeniería de Telecomunicación



        Guía de programación


                  Sebastián de la Torre Fazio
                 Dpto. Tecnología Electrónica
                       Universidad de Málaga
                            Curso 2006-2007




            1
INTRODUCCIÓN a la Programación del Microcontrolador ADuC842

A continuación, se presenta un programa ejemplo en el que se incluyen detalles para programar el ADuC842.
Para ello, se hace uso de un pseudocódigo que explica la estructura del programa principal y las funciones
más importantes




Programa principal
//Incluir las librerías necesarias
//Asociar la dirección de memoria adecuada al LED rojo de la placa
//Cabeceras de las funciones que se van a emplear en el programa
//Declaración de variables necesarias
//Definición de las funciones de interrupción necesarias
//Definición de la función main del programa

void main (void){

//Configuración inicial del modo de funcionamiento del ADuC842, en concreto sus velocidad
//Configuración inicial de puerto serie
//Sacar por pantalla del PC un encabezamiento de prueba para verificar la conexión

     while (1){
     //Presentar el menú con todas las opciones necesarias, en concreto,
     //1.- Realizar Suma.
     //2.- Parpadeo del LED rojo
     //3.- Espera Controlada por Timer.
     //4.- Conversiones AD-DA mediante LDR y LED.
     //5.- Empleo de un contador de pulsaciones.
     //== Introduzca la opción adecuada ==

     //Obtener el número de la opción deseada

     //Expresión if o equivalente que permita llamar al subprograma adecuado para cada
     posible opción.

       Opción   1:   sumar();
       Opción   2:   parpadeo();
       Opción   3:   esperar();
       Opción   4:   conversion();
       Opción   5:   contador();

     //Si la opción no es una de las anteriores, sacar por pantalla un mensaje de error y
     volver a pedir una opción
     }
}




                                                    2
Suma
void sumar (void) {
// Pedir por pantalla los sumandos
// Guardar los valores de los sumandos en variables adecuadas
// Sacar por pantalla el resultado
}



Parpadeo de LED rojo
void parpadeo (void) {
// Encender el LED de la placa
// Esperar un intervalo de tiempo de duración adecuada. Usar delay()
// Repetir los pasos anteriores tantas veces como resulte adecuado.
}



Espera Controlada por timer
void esperar (void){

//   Pedir por pantalla el numero de segundos que se desea esperar.
//   Encender el LED para demostrar el inicio de la cuenta
//   Llamar a la función espera() con el argumento adecuado
//   Apagar el LED para demostrar el final de la cuenta
}



Conversiones AD-DA usando LDR y LED
void conversion (void) {

//   Elegir el contador de trabajo. El contador 3 se usa para el puerto serie
//   Configurar y habilitar interrupciones
//   Configurar el registro de control de conversión DA
//   Configurar los registros de control de conversión AD
//   Mientras no se presione un pulsador (que generará una interrupción externa)volcar los //
//   datos convertidos en el conversor AD en el conversor DA.
}

Se modificarán y escalarán los valores convertidos cuando sea necesario para barrer todo el espectro de
iluminación posible del LED de la placa


Contador de pulsaciones
void contador (void){
// Elegir el contador con el que se va a trabajar.
// Configurar y habilitar interrupciones
// Configurar el modo de operación del contador
// Cargar el contador con los valores adecuados para llevar la cuenta
// Mientras no acabe la cuenta de todas las pulsaciones programadas:
       //Activar las interrupciones.
       //Esperar la llegada de una interrupción debida al pulsador.
       //Desactivar las interrupciones.
       // Forzar a que ocurra el evento que es contabilizado por el contador
// Desactivar las interrupciones necesarias
}

Si se emplean interrupciones activadas por nivel, eliminar mediante software aquellas interrupciones
indeseadas o repetidas que se puedan presentar.




                                                  3
Timer
Esta función cuenta un determinado espacio de tiempo empleando los timers, y teniendo en cuenta que el
timer 3, que sería el más apropiado, no se puede usar porque lo usa la comunicación serie con el PC.
void espera(int segs){

//   Definir variables internas si es necesario
//   Configurar las interrupciones
//   Configurar el timer
//   Cargar en el registro el valor necesario para iniciar la cuenta.
//   Bajar la velocidad del reloj interno del micro para que haya que contar menos.
//   Ajustar de forma adecuada para que el timer se ejecute el número de veces necesario
     hasta completar el número de segundos que se le ha pasado a la función.
//   Emplear un bucle while para ejecutar el temporizador el número de veces adecuado.
//   Anidar otro bucle while que simplemente espere al final de cada temporización.
//   Desactivar las interrupciones que no sean necesarias.
//   Reconfigurar el procesador para que vaya más rápido.
}



Delay
Es un contador software

void delay(int length){
// Hacer cualquier cosa repetidamente, como contar desde 0 hasta el valor length
}




                                                  4

								
To top