AVRVariablesANSI C

Páginas: 9 (2097 palabras) Publicado: 19 de mayo de 2015
Jaime Mutis P.
Docente
Variables AVR-GCC en CODEBLOCKS
Comenzamos con el código básico el cual iremos analizando:
// Código uno
#include
#include
// Ejemplo para una rutina de interrupcion
ISR(USART0_RX_vect){
}
// Funcion principal
int main(){
DDRC=0xFF;
While(1){
PORTC=0xFF;
_delay_ms(70);
PORTC=0x00;
_delay_ms(1300);
}
return 1;
}
#include El archivoincluido “avr/io.h” corresponde a la directiva del pre-procesador C. Este
archivo posee todas las definiciones del Mcu seleccionado en la opciones del proyecto, registros I/O,
vectores y bits relativos, por lo que si se desea cambiar de microcontrolador solo hay que seleccionarlo
desde este menú. En el código ejemplo se aprecia que no es necesario declarar explícitamente el nombre
del microcontrolador,pero puede ser que algunas definiciones utilizadas como “USART0_RX_vect” no
esté presente en todos los microcontroladores (esta definición corresponde a la rutina de interrupción por
puerto serial primario que poseen varios micros ATMEGA, lo que mejora la compatibilidad del programa si
queremos compilar para otro microcontrolador sin necesidad de cambiar algo). Esta constante debe ser revisadatanto para ATMEGA328 y ATMEGA2560 porque no son iguales.
int main(){ } (Función principal): La función principal “main” es antecedida por un ‘int’, “int main()”,
esto quiere decir que el main() es una función que debe volver un entero (int) por lo que al final del main se
le agrega un “return(1)”, o “return(0)”, aunque en general puede devolver cualquier valor que se desee.
#include máximo puede ser un ‘int=65535’.
“La función _delay_ms() genera los retardos utilizando la velocidad del oscilador, según la siguiente expresión:
𝑚𝑠𝑚𝑎𝑥 =

262,14
𝐹𝑜𝑠𝑐(𝑀ℎ𝑧)

En el caso que la F_CPU sea de 1Mhz, el tiempo máximo de retardo será de 262ms”.

Como último dato, es importante señalar que el compilador AVR-GCC es “casesensitive”, esto significa
que diferencia entre mayúsculas y minúsculas cuando asignamos los nombres de las constantes, variables
y funciones (opuesto al compilador PIC-CCS).
“Se debe tener en cuenta también que existen muchas funciones que acostumbramos a usar en CCS, como
delay_ms(), printf() que no están integradas aquí y que deben ser agregadas como librerías externas (tanto
compiladas como nocompiladas)”.

Jaime Mutis P.
Docente
Tipos de datos
AVR-GCC maneja los mismos tipos de datos que ANSI-C, eso si los rangos están orientados a los Mcu de
8-bits, estos son:
Type Layout
Data Type

Size in Bits

Data Range/Usage

Unsugned Char

8-bits

0 to 255

Char

8-bits

-128 to +127

Unsigned int

16-bits

0 to 65.535

Int

16-bits

-32.768 to +32.767

Unsigned long

32-bits

0 to 4.294.967.295Long

32-bits

-2.147.483 to +2.147.483.648

Float

32-bits

+/-1.175 x10-38 to +/-3.402 x1038

Doublé

32-bits

+/-1.175 x10-38 to +/-3.402 x1038

A parte de los datos con los cuales usted puede trabajar, es posible definir constantes mediante #define
PI 3.14159 de esta manera puede utilizar PI a lo largo de la ejecución del programa.
Operadores Aritméticos
Al igual que ANSI-C, el AVR-GCC permiterealizar operaciones aritméticas ordinarias tal como describe las
siguetees tablas.

Jaime Mutis P.
Docente

Jaime Mutis P.
Docente
Puertos I/O Discretos
El ATMEGA2560 nos proporciona una gran cantidad de puertos para jugar, puertos A, B, C, D, E, F, G, H,
J, K y L, todos completos (esto es, 8 pines por cada puerto). Cada puerto tiene asociado 3 registros
internos, los cuales son (por ejemplopara el puerto D): PORTD, PIND y DDRD, a diferencia de los PIC16
y 18 que poseen 2 registros (PORTA y TRISA).
DDRx (Data Direction Register): Este registro controla entrada/salida digital de cada uno de los pines que
componen los Mcu Atmega de 8-bits. Cabe mencionar que al contrario de los Mcu de la familia PIC,
escribiremos ‘0’ lógico para configurar un pin como entrada digital y ‘1’ para...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Fckc c c c c
  • ahncc c c c
  • ´ç´-ç´-ç´-
  • <c<c<
  • No lo c
  • C
  • C
  • C

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS