Pic en ansi c
Para el desarrollo de programas para microcontroladores se tiene 2 alternativas en cuanto al tipo de lenguaje de programación: • Lenguaje de bajo nivel (ensamblador) • Lenguaje de alto nivel (BASIC, C, …) El uso del lenguaje ensamblador tiene 3 ventajas fundamentales: • Aprovechamiento más eficiente de los recursos del microcontrolador.• Depende del programador el obtener un código optimizado tanto en número de instrucciones como en velocidad de ejecución. • Los microcontroladores PIC cuentan sólo con 35 instrucciones las cuales pueden llegar a dominarse son relativa facilidad. En ocasiones el desarrollo de programas en lenguaje ensamblador se hace especialmente tedioso y requiere demasiado esfuerzo y tiempo. Este es el caso delos programas con cierta complejidad en los que, por ejemplo, se realizan determinado cálculos matemáticos. Una alternativa al lenguaje ensamblador es el uso de lenguajes de alto nivel para la programación de los microcontroladores. En estos apuntes se describen algunas particularidades de la programación en lenguaje C del los PIC de gama media y el uso del compilador PICC de HI-TECH.
Tipos dedatos
Tipo Bit Char Unsingned char Short Unsigned short Int Unsigned int Long Unsigned long Flota Double Tamaño (bits) 1 8 8 16 16 16 16 32 32 24 24 o 32 aritmética Bolean Con o sin signo Entera sin signo Entera con signo Entera sin signo Entera con signo Entera sin signo Entera con signo Entera sin signo real Real
Formato de representación numérica (Radix): Radix Binario Octal DecimalHexadecimal Formato 0bnúmero 0número número 0xnúmero Ejemplo 0b00001011 0562 185 0xF3
Tipo bit:
Las variables de tipo bit sólo puede almacenar los valores “0” ó “1”. Con ellas se puede hacer un uso eficiente de la memoria al permitir definir banderas que no consumen gran cantidad de memoria RAM. Para declarar una variable tipo bit se utiliza la palabra “bit”, por ejemplos: bit init_flag; static bitfin_flag;
Las variables tipo bit no pueden ser parámetro se una función, pero una función si puede retornar un valor en una variables de tipo bit. No se pueden definir punteros a variables de tipo bit ni inicializar estáticamente este tipo de variables. Para que una variable tipo bit tenga un valor determinado se ha de inicializar explícitamente en el código del programa. Cuando se asigna unavariable de otro tipo a una tipo bit sólo se asigna el bit menos significativo. Para asignar a una varible tipo bit el valor “0” ó “1” dependiendo si en valor de una variable es cero o no se debe usar lo siguiente: Bit_varible = otra_varible ¡= 0 A una variable de tipo bit se le puede asociar una dirección absoluta. Por ejemplos, para declarar una variable de tipo bit que sea el bit 13 de unavariable de tipo int (16 bits): int var_nombre; bit var_nombre @ 13; Otro ejemplo: Definir una variable PD de tipo bit que permita acceder al bit 27 del registro STATUS: static unsigned char STATUS @ 0x03; static bit PD @ (unsigned)&STATUS*8+3; Esta última forma es la que se utiliza en los archivos de cabecera (.h) para definir los bits de los distintos registros. Esto permite hacer referencia a estosbits directamente. Por ejemplo: En “pic1684.h” el RB5 está definido como el bit 5 del registro PORTB, static volatile bit RB5 @ (unsigned)&PORTB*8+5; el GIE está definido como el bit 7 de INCONT static volatile bit GIE el RP0 el 5 bit del registro STATUS: static volatile bit
@ (unsigned)&INTCON*8+7;
RP0
@ (unsigned)&STATUS*8+5;
Tipo chart
Pude ser sin signo (por defecto) o consigno(opción de compilación–SIGNED_CHAR al PIC C). El tipo char es el más pequeño (8 bit) para la representación de enteros. En los PIC este tipo de dato puede ser usado para almacenar enteros, para almacenar código ASCII o para acceder a las localizaciones de entrada/salida.
El tipo de dato “unsigned char” es el que de forma natural manejan las instrucciones del PIC, por lo que se aconseja su uso...
Regístrate para leer el documento completo.