En éste post mostraré un pequeño ejemplo de como configurar el timer 1 (16 bits) para tener una gran variedad de bases de tiempo, las cuales pueden ser usadas para generar retardos, pulsos a una determinada frecuencia, etc.
Sin mas preámbulo pasaré a mostrar las macros usadas.
A ésta macro solamente hay que indicarle el tiempo con el cual se quiere configurar el timer (en ms).
El pre-escaler del timer se puede cambiar modificando CSN.
MOVIF pone un inmediato en la RAM, ya sea en el espacio de datos o en el espacio de registro especiales.
El programa principal es el siguiente:
Esta parte configura dos pines como salidas (PB0 y PB1), también configura el TIMER 1 a 100ms, configura el pre-escaler del timer y por ultimo habilita la interrupción por desborde u overflow.
Cada vez que el timer se desborda se conmutará los pines PB0 y PB1, y también hay que volver a configurar el timer.
En el siguiente video se muestra el funcionamiento del programa.
hola ingeniero
ResponderEliminarhe estado sguiendo sus piblicaciones pero en las ultimas no entiendo algunas instruciones que orden dan un ejemplo:
, EQU F_CPU =1600000 y otros
y secuencias que parecen estar en C, tampoco las entiendo;por favor si me puede dar una mano y si tiene manuales en español por favor enviemelos al correo estiloduitama@yahoo.com
hola ing
ResponderEliminarse pede mesclar ensamblador y C
compre un programador de avr pero no se como configurar los fusibles me puede dar una mano sobre esto
ResponderEliminarHola Jasa, sobre tus preguntas...
ResponderEliminarset, equ , if , elif, else, etc, no son mas que directivas que soporta el ensamblador. Las direcctivas no se traducen o no generan codigo. Una de sus funciones son la definición de macro (es asi como yo las uso).
Por ejemplo en la directiva ".SET" :
.SET F_CPU = 20000000
F_CPU no es mas que una constante que se usa en el programa.
.SET BAUD = 19200
BAUD es otra constante.
.SET UBRRX = ((F_CPU/(16*BAUD))-1)
UBRRX es otra constante ( que será el resultado de la formula ((F_CPU/(16*BAUD))-1)), ojo que el calculo de la formula lo realiza el compilador y no el uC ( el uC ya recibe la constante).
Algo similar ocurre con .if, .elif, .else , el compilador discriminará que parte de codigo o que instrucción colocará, ojo nuevamente que esta discriminación la realiza el compilador y no el uC.
Si puedes mezclar asembler con c, pero esto siempre que te encuentres programando en c.
¿ Qué programador tienes, y que uC estas intentando grabar ?... ten mucho cuidado con los fuses, porqué podrias bloquear tu uC.
Quiza esto te ayude:
ResponderEliminarhttp://www.4shared.com/document/nIilPwpH/ASSEMBLER.html?