Micros

Solo disponible en BuenasTareas
  • Páginas : 37 (9115 palabras )
  • Descarga(s) : 0
  • Publicado : 26 de agosto de 2010
Leer documento completo
Vista previa del texto
Programación en C para microcontroladores. Introducción.
C es un lenguaje bastante conciso y en ocasiones desconcertante. Considerado ampliamente como un lenguaje de alto nivel, posee muchas características importantes, tales como: programación estructurada, un método definido para llamada a funciones y para paso de parámetros, potentes estructuras de control, etc. Sin embargo gran parte de lapotencia de C reside en su habilidad para combinar comandos simples de bajo nivel, en complicadas funciones de alto nivel, y en permitir el acceso a los bytes y words del procesador. En cierto modo, C puede considerarse como una clase de lenguaje ensamblador universal. La mayor parte de los programadores familiarizados con C, lo han utilizado para programar grandes máquinas que corren Unix, MS-DOS,e incluso Windows (programación de drivers). En estas máquinas el tamaño del programa no es importante, y el interface con el mundo real se realiza a través de llamadas a funciones o mediante interrupciones DOS. Así el programador en C sólo debe preocuparse en la manipulación de variables, cadenas, matrices, etc. Con los modernos microcontroladores de 8 bits, la situación es algo distinta.Tomando como ejemplo el 8051, el tamaño total del programa debe ser inferior a los 4 u 8K (dependiendo del tamaño de la EEPROM), y debe usarse menos de 128 o 256 bytes de RAM. Idealmente, los dispositivos reales y los registros de funciones especiales deben ser direccionados desde C. Las interrupciones, que requieren vectores en direcciones absolutas también deben ser atendidas desde C. Además, se debetener un cuidado especial con las rutinas de ubicación de datos para evitar la sobre escritura de datos existentes. Uno de los fundamentos de C es que los parámetros (variables de entrada) se pasan a las funciones (subrutinas) en la pila, y los resultados se devuelven también en la pila. Así las funciones pueden ser llamadas desde las interrupciones y desde el programa principal sin temor a quelas variables locales sean sobre escritas. Una seria restricción de la familia 8051 es la carencia de una verdadera pila. En un procesador como el 8086, el apuntador de la pila tiene al menos 16 bits. Además del apuntador de pila, hay otros registros que pueden actuar como apuntadores a datos en la pila, tal como el BP (Base Pointer). En C, la habilidad para acceder a los datos en la pila escrucial. Como ya ha sido indicado, la familia 8051 está dotada de una pila que realmente sólo es capaz de manejar direcciones de retorno. Con 256 bytes disponibles, como máximo, para la pila no se pueden pasar muchos parámetros y realizar llamadas a muchas funciones. De todo ello, puede pensarse que la implementación de un lenguaje que como C haga un uso intensivo de la pila, es imposible en un 8051.Hasta hace poco así ha sido. El 8051, hace tiempo que dispone de compiladores C, que en su mayor parte han sido adaptados de micros más potentes, tal como el 68000. Por ello la aproximación al problema de la pila se ha realizado creando pilas artificiales por software. Típicamente se ha apartado un área de RAM externa para que funcione como una pila, con la ayuda de rutinas que manejan la pila cadavez que se realizan llamadas a funciones. Este método funciona y proporciona capacidad de repetir variables locales a distintos niveles sin sobre escritura, pero a costa de hacer los programas muy lentos. Por lo tanto, con la familia 8051, la programación en lenguaje ensamblador ha sido la única alternativa real para el desarrollo de pequeños sistemas en los que el tiempo es un factor crítico. Sinembargo, en 1980, Intel proporcionó una solución parcial al problema al permitir la programación del 8051 en un lenguaje de alto nivel llamado PLM51. Este compilador no era perfecto, había sido adaptado del PLM85 (8085), pero Intel fue lo suficientemente realista para evitar el uso de un lenguaje totalmente dependiente del uso de la pila. La solución adoptada fue sencillamente pasar los...
tracking img