Professional Documents
Culture Documents
ATMEGA8
ALGUNAS CARACTERISTICAS
ARQUITECTURA RISC
32 REGISTROS DE
PROPOSITO GENERAL
512BYTES DE MEMORIA
EEPROM
3 CANALES DE PWM
8 CANALES DE ADC
2 RELOJ/CONTADOR DE 8 BITS
1 RELOJ/CONTADOR DE 16 BITS
M.C. Arnoldo Ulises Villalobos Guerra
MICROCONTRLADOR
ATMEGA8
ALGUNAS DEFINICIONES
MICROCONTRLADOR
ATMEGA8
ESTRUCTURA INTERNA
MICROCONTRLADOR
ATMEGA8
INICIALIZACION DE PUERTOS
MICROCONTRLADOR
ATMEGA8
DDRB=0XAC;
DDRB=0XF0;
INICIALIZACION DE PUERTOS
DDRB
6
DDRB
5
DDRB
4
DDRB
3
DDRB
2
DDRB
1
DDRB
0
DDRB
6
DDRB
5
DDRB
4
DDRB
3
DDRB
2
DDRB
1
DDRB
0
DDRB=0X7F;
DDRD=0XA7;
M.C. Arnoldo Ulises Villalobos Guerra
DDRB=0XFE;
DDRD=0XF7;
MICROCONTRLADOR
ATMEGA8
RESISTENCIS DE PULL-UP
MICROCONTRLADOR
ATMEGA8
RESISTENCIS DE PULL-UP
PORTB=0XFF;
DDRB
6
DDRB
5
DDRB
4
DDRB
3
DDRB
2
DDRB
1
DDRB
0
PORTB
6
PORTB
5
PORTB
4
PORTB
3
PORTB
2
PORTB
1
PORTB
0
MICROCONTRLADOR
ATMEGA8
DDRB=0XF0;
PORTB=0XAC;
RESISTENCIS DE PULL-UP
DDRB7
DDRB6
DDRB5
DDRB4
DDRB3
DDRB2
DDRB1
DDRB0
PORTB
7
PORTB
6
PORTB
5
PORTB
4
PORTB
3
PORTB
2
PORTB
1
PORTB
0
MICROCONTRLADOR
ATMEGA8
DECLARACION DE VARIABLES
MICROCONTRLADOR
ATMEGA8
var2=var2 <<(3);
MICROCONTRLADOR
ATMEGA8
ENMASCARAMIENTOS
resultado
Si se quiere poner en cero los 4 bits mas significativos , entonces la mascara ser 0X0F
Y=Y&0x0F ;
Mascara
resultado
MICROCONTRLADOR
ATMEGA8
ENMASCARAMIENTOS
0
0
0
Note que cuando el resultado es cero, el bit o los bits a averiguar son cero. Por lo
tanto, la instruccin en C puede ser:
If(var1&0xA0=0) ;
Note que cuando el resultado es igual a la mascara, el bit o los bits a averiguar son
unos Por lo tanto, la instruccin en C puede ser:
If(dato1&0x08=8);
MICROCONTRLADOR
ATMEGA8
ENMASCARAMIENTOS
De tal manera si se desea poner en uno los bit 3 y 6 la mascara ser 01001000 y
la operacin una OR
dato3=dato30x48;
MICROCONTRLADOR
ATMEGA8
PRACTICA #1
PRACTICA #1
MICROCONTRLADOR
ATMEGA8
PRACTICA #1
#include <mega8.h>
unsigned char var1,var2,var3,var4;
void main(void)
{
DDRB=0x00;
//PUERTO B COMO ENTRADA
PORTB=0xFF;
//ACTIVA LAS RESISTENCIAS DE PULL-UP
DDRD=0xFF;
//PUERTO D COMO SALIDA
PORTD=0x00;
//INICIA EL PUERTO D CON CEROS
while (1)
{
var1=PINB;
//lee el puerto B y lo guarda en var1
var2=var1&0xF0; //los bits LSB de var1 los pone en cero
var2=var2>>(4);
//hace un corrimiento de 4 bits a la derecha
var1=var1&0x0F; //pone en cero los bits MSB
var3=var1/var2;
//cociente de la divisin lo guarda en var3
var4=var1%var2;
//residuo lo guarda en var4
var4=var4<<(4);
//corrimiento a la izquierda de 4 bits
var4=var4|var3;
//en la parte alta el resido y en la parte baja el cociente
PORTD=var4;
};
}
M.C. Arnoldo Ulises Villalobos Guerra
MICROCONTRLADOR
ATMEGA8
PRACTICA #1
EXPLICACIN DE PROGRAMA
Lo primero que tenemos que hacer es leer el puerto B y guardar ese dato en una
variable, es por eso que la primera lnea es:
var1=PINB;
En este caso la instruccin es leer el puerto B y guarda el dato en var1
Supongamos que queremos dividir 10/3 entonces la combinacin binaria en el puerto B
ser 00111010. Por lo que tenemos que dar esa combinacin con el DIP SWITCH.
PB7
0
0
PB0
0
Divisor=3
Dividendo=10
La variable var1 entonces tiene el dato 0x3A. Pero tenemos que separar el divisor y el
dividendo. La separacin del divisor se realiza con las dos siguientes instrucciones del
programa.
var1
var2=var1&0XF0;
var2=var2>>(4);
0X0F
var2
0
0
0
1
var2=divisor
&
MICROCONTRLADOR
ATMEGA8
PRACTICA #1
var1
0X0F
&
var1
Var1=dividendo
cociente
var4
residuo
Por ultimo tenemos que juntar el resultado (cociente y residuo) en una variable. Hay que
recordar que el residuo se desea tenerlos en los MSB entonces haremos un corrimiento
a la izquierda de 4 bits 0
0
0
0
0
0
0
1
var4
var4=var4<<(4);
MICROCONTRLADOR
ATMEGA8
PRACTICA #1
Nada mas nos queda realizar una OR para unir en una sola variable el resultado
var4=var4|var3;
var3
var4
var4
residuo
cociente
OR
MICROCONTRLADOR
ATMEGA8
PRIMER PROYECTO
Es hora de realizar nuestro primer proyecto . En primer lugar abra el codevision avr
Seleccionamos project y ok
MICROCONTRLADOR
ATMEGA8
PRIMER PROYECTO
Nos abrir una ventana en donde nos pregunta que si queremos usar el asistente,
le indicamos que si.
MICROCONTRLADOR
ATMEGA8
PRIMER PROYECTO
MICROCONTRLADOR
ATMEGA8
PRIMER PROYECTO
MICROCONTRLADOR
ATMEGA8
PRIMER PROYECTO
MICROCONTRLADOR
ATMEGA8
PRIMER PROYECTO
A continuacin lo compilamos
MICROCONTRLADOR
ATMEGA8
MICROCONTRLADOR
ATMEGA8
P
R
O
G
R
A
M
A
D
O
R
RST
MOSI
MISO
10K
SCK
VCC
GND
Una vez hecho lo anterior conectamos el programador al computador por medio del
cable USB(si es la primera vez hay que instalar el driver)
M.C. Arnoldo Ulises Villalobos Guerra
MICROCONTRLADOR
ATMEGA8
MICROCONTRLADOR
ATMEGA8
avrdude.exe
avrdude.conf
(Estos archivos se crearon
cuando se instalo el
winavr) OJO si no los
encuentras te puedes
apoyar en la herramienta
de busqueda de windows
DESPUES CIERRAS TODO
EL BURN Y LO VUELVES A
ABRIR
4.-Despus seleccionas el
programador usbasp y port
usb
5.- clik OK
NOTA: esta configuracin de opciones (pasos del 2 al 5) solo se hace la primera vez. Despus no es necesario
hacerla, pues el programa guarda esta informacin.
M.C. Arnoldo Ulises Villalobos Guerra
MICROCONTRLADOR
ATMEGA8
MICROCONTRLADOR
ATMEGA8
REFERENCIAS
REFERENCIAS:
Infante S. David.
Notas del curso programacin en c de los
Microcontroladores ATMEL.
Instituto tecnolgico de Morelia.
Versin 8.10
Steven f. Barrett and daniel J. Pack
Atmel AVR microcontroller primer: programming and interfacing
Dhananjay V. Gadre
Programming and Customizing the avr Microcontroller
http://avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_avrdude_gui_en.html