Você está na página 1de 3

Hay 4 Tipos de Representacion numrica:

Binaria (0b11111110), Hexa (0xFE o $FE), decimal (254), Ascii (A)

Directivas (pseudoinstrucciones):
.EQU COUNT = 254 (se usa para definir constantes y para direc. de registros de RAM y SFR)
.SET COUNT = 254 (igual a EQU, pero con ella se puede redefinir)
TABLA: .DB "0123456789" (p/tablas en ROM)
TABLA: .DW "0123456789" (p/tablas en ROM con palabras de 2 bytes)
.ORG 0x00 indica el comienzo del direccionamiento de RAM o ROM
.INCLUDE M32DEF.INC
.MAC y .LISTMAC Definicion de Macros y listado del mismo en .lst para debug

Los Registros SPH:SPL estn en la seccin de RAM correspondiente a los registros de I/O. Este registro es un puntero
que a[unta al TOS (top of de stack). Como el stack crece desde abajo hacia arriba (normalmente se inicializa en
RAMEND) con cada Push su valor decrementa en 1 y con cada POP incrementa 1. El stack es un buffer LIFO.

CALL: Al usar esta instruccin, se copia la direccin de la instruccin que le sigue al CALL en el SP. El valor alto del
program counter se copia primero en el SP y luego el valor bajo (Recordar que en el atmega32 las direcciones
ocupan 2 bytes). En caso de tratarse de un micro con un PC de 24 bits, se divide en 3 bytes y se PUSHean los ms
significativos primero. Ocupa 4 bytes

RET: Al usar esta instruccin se toma el top del SP y se carga en el stack pointer, luego se incremente al SP en 1 (es
decir Se quita de la pila, ya que no hace falta borrar los valores que no estn en uso)

RCALL: Igual a CALL, solo que ocupa 2 bytes, porque puede direccionar 12 bits. Es decir, puede saltar entre -2048 y
2047 instrucciones. Ideal para micros chicos y para ahorrar memoria si es usada adecuadamente. Podra ser usada
para llamados entre funciones de una misma biblioteca si la misma no supera los 2k de cdigo.

NOP: No Operation. Usar rutinas de delay con muchos loop, ayuda a extender el limite del iteracin mximo de la
variable de control (255) agregando el retardo del NOP, pero como contrapartida, cada NOP ocupa 2 bytes de ROM
(recordar que cada instruccin del AVR pesa dos bytes). En caso de necesitar retardos mas largos, se pueden anidar,
pero se empeora la precisin del mismo, ya que cada loop lleva un branch y el branch puede durar 1 o 2 ciclos de
maq dependiendo de si salta o no.
Interrupciones:
Al saltar la interrupcin (solo si est activa obviamente), el micro desactiva el flag de interrupcin global. Por
esta razn se debe activar en el handler de interrupcin. Esto normalmente se hace al final antes de la instruccin
RET (por eso la rutina de manejo debe ser lo mas rpida posible) para que una eventual nueva instruccin del
mismo tipo que la que se est atendiendo, vuelva a surgir. En caso de querer poder atender estas rutinas dentro de
una rutina de interrupcin, se puede usar SEI al principio de la misma.

Eeprom
Mover a ram y parmetros por Stack
Ver que es Macros (Pagina 244)
Ver conversin binario a Ascii (Pagina 242)
Serializing and rotating (Pagina 183)

IMPRIMIR Certificados de Examen!!!!!

El CALLER de la funcin es el responsable de backupear los registro que usa antes de llamar a una funcin. De esta
manera, se evitan perder datos necesarios en los Registros Rn por ser usados en la funcin llamada u otra eventual
llamada por esta otra.

Reservar R20 a R25 para llamados y R10 a R15


PWM

TCNTn (Timer Counter n): Registro que es incrementado por el prescaler


OCRn (Timr/Counter n Compare Register): Registro donde se carga el valor a comparar
TCCRn (Timer/Counter Register Control): Registro de configuracin del timer n
TIMSK0 (Timer/Counter Interrupt Mask Register): Registro para habilitar la interrupcin por match en OCRnA, OCRnB
y la interrupcin por Overflow del contador
ICRnH/L (Input Capture Register): Registro de 16 bits usado para almacenar el pulso capturado en modo
Capture/Compare. Se puede utilizar como el TOP del conteo

En el caso del Atmega328p, el TCCRn se desdobla en TCCRnA y B, ya que tiene dos unidades de comparacin. Ojo: El
TCCRnA y el B se deben configurar en conjunto para cada salida PWM, esto es, que el TCCRnA no solo se encarga de
configurar la salida A y el B la salida B!

Interrupciones: Cuando se llama a una interrupcin, la CPU desactiva el flag de interrupciones del SREG. Al volver de
una rutina de interrupcin, hacerlo con RETI, que adems de dar la funcionalidad del RET comn, activa el flag de
interrupcin automticamente (tiene un SEI implicito). Si bien se dijo que al ir a una rutina de interrupcin la cpu
aplica un CLI, tambin se pueden activar dentro de ella nuevamente las interrupciones para crear interrupciones
anidadas.

Você também pode gostar