Embedded C Programming and the Microchip PIC
2
Embedded C Programming and the Microchip PIC
3
Embedded C Programming and the Microchip PIC
Publisher no garantiza ni garantiza ninguno de los productos descritos en este documento ni realiza ningún análisis independiente en conexión con cualquiera de la información del producto contenida aquí. Publisher no asume y rechaza expresamente cualquier obligación de obtener e incluir información distinta de la proporcionada por el fabricante. Se advierte expresamente al lector que considere y adopte todas las precauciones de seguridad que puedan ser indicadas por las actividades y evitar todos los peligros potenciales. Siguiendo las instrucciones contenidas en este documento, el lector asume riesgos relacionados con dichas instrucciones. El editor no hace ninguna representación o garantías de ningún tipo, incluyendo pero no limitado a, las garantías de aptitud para propósito particular o comerciabilidad, y tampoco se incluyen tales representaciones con respecto al material y el editor no asume ninguna responsabilidad con respecto a dicho material. El editor no será responsable de ninguna especiales, consecuentes o ejemplares resultantes, en su totalidad o en parte, del uso o confianza de los materiales.
4
Embedded C Programming and the Microchip PIC
5
Embedded C Programming and the Microchip PIC
6
Embedded C Programming and the Microchip PIC
7
Embedded C Programming and the Microchip PIC
8
Embedded C Programming and the Microchip PIC
9
Embedded C Programming and the Microchip PIC
10
Embedded C Programming and the Microchip PIC
11
Embedded C Programming and the Microchip PIC
12
Embedded C Programming and the Microchip PIC
La programación C incorporada y el PIC Microchip está diseñado para enseñar tanto el lenguaje C la programación, ya que se aplica a los microcontroladores integrados y para en la aplicación de la familia Microchip® de microcontroladores P I C ® RISC. AUDIENCIA PREVISTA Este libro está diseñado para servir a dos públicos diferentes:
Estudiantes de Ingeniería Eléctrica y Computacional, Ingeniería Electrónica, Ingeniería Eléctrica y Tecnología de la Ingeniería. Dos escenarios para los estudiantes encajan muy bien en el libro: •
Estudiantes principiantes principiantes que todavía no han tenido un curso de programación C: El libro sirve una secuencia de dos o cuatro trimestres en la que los aprender la programación en lenguaje C y cómo aplicar C a un microcontrolador integrado. En la misma secuencia pueden avanzar hacia las sofisticadas aplicaciones integradas, que pueden ejecutarse en un microcontrolador con muy poco conocimiento de hardware requerido. Después Capítulo I, Tutorial del lenguaje C incorporado, se completa, servirá como referencia de programación para el balance de los cursos. •
• Los estudiantes que ya han tomado un curso de programación en C pueden usar el libro para un
curso de un semestre o dos cuartos en microcontroladores integrados. En este caso, los estudiantes estudian sólo aquellas partes del Capítulo I que se relacionan con la programación para el entorno integrado y se mueven los conceptos avanzados de hardware. El Capítulo I está organizado (como todos los capítulos en el libro) para proporcionar una referencia útil para la información necesaria en otros cursos. • Practicar ingenieros, tecnólogos y técnicos que deseen agregar un nuevo microcontrolador a sus
áreas de especialización: el capítulo I se puede utilizar según sea necesario (dependiendo del nivel de experiencia de programación del usuario) ya sea para aprender conceptos necesarios o como referencia. Capítulo 2 en el que el Microchip PIC hardware del microcontrolador se discute conducirá 13
Embedded C Programming and the Microchip PIC
a un individuo a través de los pasos de aprender un nuevo microcontrolador y servir de referencia para futuros proyectos. PREREQUISITOS
Se requiere cierto conocimiento de sistemas digitales, sistemas numéricos y diseño lógico. Preliminar versiones del Capítulo 1, Tutorial del lenguaje C incorporado, se han utilizado con éxito en microcontroladores (clase de segundo año-sin programación previa) dos semestres de cursos básicos de lógica digital. Este libro de texto también ha demostrado ser excelente para un curso electivo avanzado de microcontroladores. En muchos casos, los estudiantes tienen elegido para mantener el libro y utilizarlo como una referencia a través de sus cursos superiores de diseño de proyectos, y lo han llevado consigo a la industria como una referencia útil.
ORGANIZACIÓN
El texto está organizado en unidades de tema lógico para que los instructores puedan seguir la organización del texto, comenzando con el lenguaje C y avanzando a través del hardware P I C y en temas más avanzados, o pueden elegir el orden de los temas para adaptarse a su particular necesariamente. Los temas se mantienen separados e identificados para una fácil selección. Los ejercicios de capítulo y los ejercicios de laboratorio también están separados por tema para facilitar la selección de los que se aplican en cualquier caso particular. RESUMEN Y CONTENIDO DEL CAPITULO
Capítulo I, Tutorial del lenguaje C incorporado El lenguaje C está cubierto en detalle en un método paso a paso a medida que se aplica a programación de microcontroladores integrados. Uno o más programas de ejemplo acompañan cada concepto de programación para para ilustrar su uso. A la conclusión conclusión del del capítulo, los estudiantes estudiantes serán capaces capaces de crear crear programas de lenguaje lenguaje C para resolver problemas. El capítulo capítulo I presenta el compilador compilador CCS-PICC C como modelo para la compilación C como se aplica al PIC de Microchip, pero la base de lo que se demuestra se aplica a otros compiladores PIC C también. Capítulo 2, Hardware del microcontrolador PIC Los procesadores PIC RISC están cubiertos desde la arquitectura básica hasta el uso de todos los dispositivos periféricos estándar incluidos en los microcontroladores. Ejemplo los programas se utilizan para demostrar usos comunes para cada uno de los periféricos. Al finalizar los Capítulos I y 2, los estudiantes podrán aplicar PIC RISC procesadores para resolver problemas. Capítulo 3, Directivas de E / S Estándar y Preprocesador El capítulo 3 presenta a los estudiantes las funciones integradas disponibles en C y su uso. Nuevamente, se utilizan programas de ejemplo para ilustrar cómo usar en funciones. Acabado El capítulo 3 prepara a los estudiantes para usar las funciones incorporadas para acelerar su programación y esfuerzos en la resolución resolución de problemas. 14
Embedded C Programming and the Microchip PIC
Capítulo 4, El compilador CCS-PICC C y IDE Este capítulo puede usarse como un manual para usar el compilador CCS-PICC C y su entorno de desarrollo integrado (IDE). Los estudiantes pueden aprender a utilizar el PICC y su IDE con eficacia para crear y depurar programas C utilizando la edición de evaluación del compilador que se incluye en el CD, así como el entorno de depuración de MPLAB de Microchip disponible en Sitio web de Microchip: http://www http://www.microchip.com. .microchip.com. Capítulo 5, Desarrollo de proyectos Este capítulo se centra en el desarrollo ordenado de un proyecto utilizando microcontroladores. Un scooter electrónico se desarrolla en su totalidad para ilustrar el proceso. Los estudiantes aprenden a desarrollar proyectos de manera eficiente para maximizar sus éxitos. Apéndices:
Apéndice A, Referencia de funciones de la biblioteca. Una referencia completa a las funciones de biblioteca disponibles en el momento de la publicación. Apéndice B, Programación de los microcontroladores PIC.Ésta es una guía para programación del área de memoria FLASH de los dispositivos PIC, para que entender la función de programación. Apéndice C, Programador / Depurador en serie ICS-S de ICS-S de CCS. introducción a la herramienta de programación y depuración CCS ICD-S. Apéndice D, Microchip ICD-II Serial en el Sistema Programador / Depurador. introducción a la herramienta de programación y depuración de Microchip ICD-II. Apéndice E. La "FlashPIC-Dev" Development Board.This es una introducción a la tarjeta de desarrollo de FlashPIC-Dev por Progressive Resources LLC. Apéndice F, Tabla ASCII. Apéndice G, PIC 16F877 Resumen del conjunto de instrucciones. Una instrucción de código de ensamblaje y resumen para su uso con los ejemplos de programación de código de ensamblaje PIC 16F877. Apéndice H, PIC 18F458 Resumen del conjunto de instrucciones. Una instrucción del código de ensamblaje y resumen como referencia. Apéndice I, Respuestas a preguntas seleccionadas (por capítulo).
FUNDAMENTOS La tecnología que avanza alrededor de los microcontroladores continúa proporcionando mayores cantidades de funcionalidad y velocidad. Los aumentos de la demanda han aumentado hasta el nivel casi universal uso de lenguajes tales como C o incluso - criticas cr iticas tareas que solían utilizarse requieren programas de de lenguaje lenguaje ensamblador ensamblador para lograr. Simultáneamente, Simultáneamente, los los microcontroladores microcontroladores se vuelven más fáciles y fáciles de aplicar, lo que supone excelentes vehículos para uso educativo. Las escuelas madres han adoptado vehículos de microcontroladores como dispositivos dispositivos de destino para sus cursos.
15
Embedded C Programming and the Microchip PIC
Además, el precio de las tarjetas de desarrollo de los microcontroladores ha bajado hasta el nivel en el que se encuentra número de escuelas que los estudiantes compran el tablero como parte de su "kit " kit de piezas" para que todos los estudiantes tienen su propio consejo de desarrollo. Algunos de estos cursos requieren la programación C como un prerrequisito, y otros enseñan la programación en lenguaje C y la aplicación de microcontroladores de forma integrada. La programación C incorporada incorporada y el PIC Microchip es una respuesta respuesta a la necesidad de de un libro se puede puede utilizar en cursos con y sin un curso previo de lenguaje C y que se pueden utilizar como una referencia útil en el trabajo posterior del curso. El CD-ROM incluido con este libro contiene un "Estudiante Edición" compilador y otro software para que los estudiantes con su propio desarrollo las juntas tienen todo lo que necesitan para trabajar fuera de la clase, así como en los laboratorios de la escuela. HARDWARE UTILIZADO
La mayoría de los ejemplos de aplicaciones de programación de este manual se 'FlashPIC-Dev' proporcionado por por Progressive Resources, LLC LLC (consulte el Apéndice Apéndice E para especificaciones). Este Este tablero es particularmente adecuado para el uso educativo y es un buen general tablero del desarrollo del propósito. Sin embargo, los microcontroladores Microchip PIC son muy fáciles para usar y se puede ejecutar perfectamente perfectamente bien simplemente conectándolos en un tablero de prototipo, agregando agregando el cristal del oscilador, junto con dos condensadores, y conectando cuatro alambres para la programación. Los estudiantes han tenido mucho éxito con cualquiera de los dos métodos. Los microcontroladores PIC16F877 y PIC18F458 se han utilizado para elaborar los ejemplos para el texto. Una de las principales ventajas ventajas de los microcontroladores PIC es que paralelo en su su arquitectura y el enfoque de programación para los dispositivos. Esto significa que los ejemplos mostrados funcionarán en virtualmente cualquier microcontrolador PIC, siempre que contenga los periféricos y otros recursos para realizar el trabajo, no es necesario hacer cambios para usar el código para otros miembros de la familia PIC. En consecuencia, el texto es útil con otros miembros de la familia PIC. Los periféricos más comunes se cubren en este libro de texto, y el código se puede utilizar como un plantilla para aplicar a los periféricos más exóticos en algunos de los otros miembros de la familia PIC. CD-ROM CONTENIDO Y SOFTWARE UTILIZADO EN EL LIBRO DE TEXTO
El software utilizado con el libro de texto incluye el Microchip MPLAB® (que es gratuito por accediendo a http://www.microchip.com/) http://www.microchip.com/) y el compilador CCS PICC de Custom Computer Services Inc. (http://www.ccsinfo.com/). El CD-ROM incluido con este libro contiene el código fuente de todos los ejemplos de software del texto. Pueden utilizarse como referencias o como puntos de partida para asignaciones específicas. Todos los programas del libro de texto pueden ser compilados utilizando la versión de evaluación de CCS PICC que se incluye en el CD adjunto. La versión de evaluación incluida se limita a dos tipos de procesadores, el PIC16F877 y el PIC18F458, y producirá un máximo de 2K de código de salida. Consulte la lista de Información del sitio Web para obtener la última versión del compilador. Más información sobre la compra de la versión completa se puede encontrar en http://www.prl http://www.prllc.com/. lc.com/.
16
Embedded C Programming and the Microchip PIC
EXPRESIONES DE GRATITUD
El material contenido en este libro de texto no es sólo una recopilación de años de la información disponible de Microchip Technology, Inc., Custom Computer Services, S ervices, Inc. y Progressive P rogressive Resources LLC.
Los autores y Delmar Learning desean expresar e xpresar su agradecimiento a los siguientes revisores:
17
Embedded C Programming and the Microchip PIC
AGRADECIMIENTOS ESPECÍFICOS DEL AUTOR El apoyo de mi familia, Gay, Laura y April, ha hecho de este libro un placer trabajar y una alegría para completar. También es importante reconocer la motivación motivación proporcionada proporcionada por Larry O'Cull y el placer fantástico de trabajar trabajar con Larry y Sarah en este proyecto. Richard H. Barnett, PE, Ph.D. Septiembre 2003 Fue un gran placer trabajar en este proyecto con el Dr. Barnett, maestro y mentor, y Sarah Cox, socio y coautor. Ellos mantuvieron este proyecto emocionante. Este trabajo no habría sido posible sin la paciencia y el apoyo de mi esposa, Anna, y los niños, James, Heather, Max, Ma x, y Alan, que han estado dispuestos a renunciar a algunas cosas ahora para construir más grande y mejor futuros. Larry D. O'Cull Septiembre 2003 Este libro ha sido un esfuerzo desafiante y emocionante. Tengo una tremenda cantidad de respeto por Larry O'Cull y el Dr. Barnett y han considerado un gran privilegio trabajar con ellos. Debo agradecer específicamente a Larry por tener la visión para este proyecto. También quiero agradecer a gradecer mi esposo, Greg, y su hija, Meredith, por su apoyo durante todo el proceso. Sarah A. Cox Septiembre 2003
18
Embedded C Programming and the Microchip PIC
AUTORES El libro de texto de T h i s es, sin duda, un libro de colaboración entre los tres autores. Esta sección fue en gran parte por un autor y que ha sido revisado críticamente por los otros dos, para volver a escribir trozos cuando sea necesario. No es posible delinear quién es responsable de ninguna parte particular de el libro. Los autores: autores: R i c h a r d H. Barnett, P E, P h. D. Profesor de Ingeniería Eléctrica Tecnología Universidad de Purdue Dr . Barnett ha estado enseñando en el área de microcontroladores integrados para el pasado e i g h teen años, comenzando con el número 8 0 8 5, avanzando hacia varios miembros del grupo 8 0 5 1 f a m i l de microcontroladores integrados, y n o w enseñanza Advanced E m b e d d e d Microcontroladores usando los dispositivos A tm e l A V R. Durante sus veranos y durante los períodos sabáticos, fue ampliamente con los sistemas embebidos con múltiples procesadores, aplicando el sistema de procesamiento múltiple, aplicando los sistemas embebidos con múltiples procesadores, aplicaciones. aplicaciones. Además, consulta activamente activamente en el campo. campo. P r i o r a su permanencia permanencia en Purdue Universidad, pasó muchos años como ingeniero en la industria de la electrónica aeroespacial. En términos de enseñanza, D r. Barnett cuenta con varios premios de enseñanza, entre ellos el de Charles B. M u r p h a A w a r d, como uno de los mejores maestros de la Universidad de Purdue. También aparece en la lista de Libro de la Universidad de Purdue de los Maestros de G r e a, una lista de los 2 2 5 profesores más importantes sobre toda la historia de Purdue. T h i s es su libro de texto. Se puede contactar con las sugerencias y comentarios de Purdue (7 6 5) 4 9 4 - 7 4 97 o por correo electrónico a
[email protected].
L a r r y D. Oh ll Maestro mayor de edad Recursos progresivos L L C Señor . O 'C u l l Recibí una Licenciatura en Ciencias de la Escuela de Ingeniería Eléctrica Tecnología en la Universidad de Purdue. H i s carrera profesional iniciada en el diseño de software y control sistemas para máquinas herramientas controladas numéricas (C N C). F r o m allí se trasladó a otras oportunidades en ingeniería electrónica y desarrollo de software para sistemas de visión, máquinasherramientas robotizadas con láser, equipos de diagnóstico médico y productos comerciales y de consumo productos, y ha sido incluido en la lista de numerosas patentes. Señor . O 'C u l l inició los Recursos Progresivos en 1995 después de varios años de trabajo y ingeniería de software y gestión de ingeniería. Recursos progresivos L LC (http://www.prllc.com) se especializa en productos innovadores comerciales, industriales y de consumo desarrollo. Progressive Resources ha sido miembro asesor de M i c r o c h ip desde 1995. Se puede contactar con las sugerencias y comentarios por e - mail en
[email protected].
[email protected].
19
Embedded C Programming and the Microchip PIC
20
Embedded C Programming and the Microchip PIC
Un microcontrolador integrado es un microordenador que contiene la mayoría de sus periféricos y la memoria necesaria dentro de un solo circuito integrado junto con la CPU. Eso es en realidad "un microordenador en un chip". Los microcontroladores integrados han uso por más de tres décadas. La serie Intel 8051 fue uno de los primeros microcontroladores para integrar la memoria, la E / S, la unidad lógica aritmética (ALU), el programa ROM, así como algunos otros periféricos en un solo paquete muy limpio. Estas procesadores todavía están siendo diseñados en nuevos productos. Otras empresas que siguieron El liderazgo de Intel en el ámbito de los microcontroladores integrados son General Instruments, National Semiconductor, Motorola, Philips / Signética, Zilog, AMD, Hitachi, Toshiba, Microchip Technology, y Atmel, entre otros. En la última década, Microchip Technology se ha convertido en un líder mundial en el desarrollo de una arquitectura de núcleo de cálculo de instrucción reducida (RISC) que proporciona para soluciones de muy bajo costo, pero asombrosas. La familia de procesadores PIC® se ha basado en la EEPROM y, más recientemente, en la tecnología de memoria FLASH. Tecnología FLASH es una memoria no volátil, pero reprogramable que se utiliza a menudo en productos como digital cámaras, dispositivos de audio portátiles y placas base de PC. Esta tecnología de memoria ha permitido a Microchip avanzar en la industria de los microcontrolador microcontroladores es proporcionando en el sistema de solución programable. El siguiente gran paso en esta evolución de alta tecnología fue la implementación de idioma compiladores que están dirigidos específicamente para su uso con estos nuevos microprocesadores. La generación de código y la optimización de los compiladores es bastante impresionante. El lenguaje de programación C, con su forma libre, "haz tus propias reglas" estructura se presta a esta aplicación por su capacidad c apacidad de adaptarse a un objetivo particular sistema, mientras que todavía permite que el código sea portable a otros sistemas. El principal beneficio de una lengua como ésta es que crea grupos de propiedad intelectual que pueden ser dibujado de una y otra vez. Esto reduce los costos de desarrollo de manera continua, acortando el ciclo de desarrollo con cada diseño posterior.
21
Embedded C Programming and the Microchip PIC
Una de las mejores herramientas en lenguaje C desarrolladas hasta la fecha para la familia de procesadores PIC Microchip es PIC-C. Creado por Custom Computer Services, Inc., este desarrollo totalmente integrado (IDE) permite la edición, compilación, programación de piezas y depuración para se puede realizar desde una aplicación PC Windows®. La motivación que ha llevado a la desarrollo de este libro es la creciente popularidad del PIC y otros microcontroladores RISC, el creciente nivel de integración (más en un chip y menos chips en un circuito ) y la necesidad de un "pensamiento sintonizado" cuando se trata de desarrollar productos que utilicen este tipo de tecnología. Usted puede tener experiencia escribiendo C para una PC, o ensamblador para un microcontrolador. Pero cuando se trata de escribir C para un microcontrolador incrustado, el enfoque debe ser modificado para obtener los resultados finales deseados: código pequeño, eficiente, confiable y reutilizable. Esta libro de texto está diseñado para proporcionar una buena línea de base para el principiante, así como una referencia útil herramienta para aquellos con c on experiencia en diseño de microcontroladores integrados.
22
Embedded C Programming and the Microchip PIC
1.1 OBJETIVOS Al final de este capítulo, usted debería ser capaz de: • Definir, describir e identificar tipos variables y constantes, su alcance y usos. • Construir declaraciones de variables y constantes para todos los tamaños de datos numéricos y para
cadenas. • Aplicar enumeraciones a las declaraciones de variables. • Asignar valores a variables y constantes mediante el operador de asignación. es utilizados en C. • Evaluar los resultados de todos los operador es • Explicar los resultados que cada una de las declaraciones de control tiene en el flujo del programa. • Crear funciones que se componen de variables, operadores y declaraci ones de control para completar
las tareas. • Aplicar punteros, matrices, estructuras y uniones como variables de función. • Cree programas C que completen tareas utilizando los conceptos de este capítulo.
1.2 INTRODUCCION Este capítulo proporciona un curso de referencia en el lenguaje de programación C que se aplica a aplicaciones de microcontroladores integrados. El capítulo incluye extensiones a la que forman parte del lenguaje C C S - P I C C C. Irás desde el principio conceptos mediante la redacción de programas completos, con ejemplos que se pueden implementar en un microcontrolador para reforzar el material. La información se presenta un poco en el orden en que es necesario un programador: • Declaración de variables y constantes • E / S simple, para que los programas progr amas puedan hacer uso de los puertos puer tos paralelos de l microcontrolador
23
Embedded C Programming and the Microchip PIC
• Asignar valores a las variables y constantes y realizar operaciones aritméticas con las variables • C construye y controla las sentencias para formar programas C completos
Las secciones finales cubren los temas más avanzados como punteros, matrices, estructuras y sindicatos y su uso en los programas C. Conceptos avanzados como programación en tiempo real e interrupciones completan el capítulo.
1.3 CONCEPTOS INICIALES Escribir un programa de C es, en cierto sentido, como construir una casa de ladrillo: Se pone una fundación, arena y cemento se utilizan para hacer ladrillos, estos ladrillos se disponen en filas para hacer un curso de bloques, y los cursos se apilan para crear un edificio. En un programa C incrustado, los conjuntos de instrucciones se unen para formar funciones; estas funciones se tratan como de nivel superior operaciones, que luego se combinan para formar un programa. Cada programa de lenguaje C debe tener al menos una función, a saber, mainQ. La función main () es la base de un programa de lenguaje C, y es el punto de partida cuando el programa se ejecuta el código. Todas las funciones son invocadas por mainQ de forma directa o indirecta. Aunque las funciones pueden ser completas y autónomas, se pueden utilizar variables y parámetros para cementar estas funciones juntas. La función mainQ se considera la tarea de nivel más bajo, ya que es la primera función llamado desde el sistema que inicia el programa. En muchos casos, mainQ contendrá sólo unas pocas declaraciones que no hacen más que inicializar y dirigir el funcionamiento del programa desde una función a otra. CONCEPTOS
Un programa C incrustado en su forma más simple aparece como sigue: void m a i n () { w h i l e ( 1 ) / / do f o r e v e r .. }
El programa mostrado arriba se compilará y funcionará perfectamente, pero no sabrá que para seguro porque no hay indicación de actividad de ningún ningún tipo. Podemos embellecer el el programa programa que realmente se puede ver la vida, revisar su funcionalidad, y comenzar a estudiar los elementos sintácticos del idioma. # i n c l u d e < s t d i o . h> v o i d m a i n () { p r i n t f ( " H E L L O WORLD"); w h i l e ( 1 ) // Hacer siempre }
24
Embedded C Programming and the Microchip PIC
25