Tema 4: - Descripción externa - Arquitectura interna - Organización de memoria - Registros de propósito general - Registros de entrada/salida (SREG,SPL) - Modos de direccionamiento - Juego de instrucciones 1 - Directivas de ensamblador y entorno de program.
Presentación Arquitectura Risc. 8 bits Frecuencia de reloj de hasta 10 Mhz (Xtal1,Xtal2) Hasta 10 Mips 2 Kb Flash, 128 b SRAM, 128 b EEprom Diversos periféricos Encapsulado 20 pines Versiones bajo consumo 2
Descripción externa VCC,GND : Terminales de alimentación #RESET: Reinicia ejecución de instrucciones XTAL1,XTAL2 : Entradas de reloj PD6-0 PB7-0 Pines de puerto con funciones alternativas 3
Descripción interna 4
Mapa de memoria (programa y datos) 5
Mapa de memoria de datos (detalle) 6
Registros de propósito general Son 32 registros Las instrucciones con modo inmediato sólo usan los 16 registros superiores. Registro X, Y, Z para modos indirectos 7
Registros de propósito general (cont.) Registros X, Y, Z para modos indirectos 8
Registros de entrada/salida Permiten el acceso y control de los periféricos y de los recursos del microcontrolador. 9
Registros de entrada/salida (SREG) Registro de estado. El banderín I (interrupción) habilita o inhabilita la generación de interrupciones. El banderín T (bit de propósito general) Los bits (flags o banderines) C, Z, N, V, S, H cambian dependiendo del resultado de la ejecución de diferentes instrucciones (aritméticas, lógicas, rotación/desplaz. y de modificación de flags). 10
Registros de entrada/salida (SREG) cont. Bit C (Acarreo) - Bit de acarreo de la etapa 7 de la ALU. Bit Z (Zero) - Se pone a 1 para resultado cero, 0 en otro caso. Bit N (Negative) - Bit 7 del resultado. Bit V (Overflow en Ca2) A,B operand. y R resultado - V = A7 B7 R7' + A7' B7' R7 en suma - V = A7 B7' R7' + A7' B7 R7 en resta 11
Registros de entrada/salida (SREG) cont. Bit H (HalfCarry) - Bit de acarreo de la etapa 3 de la ALU (semiacarreo). Bit S (Sign en Ca2) -S=N V - Es el signo correcto del resultados en operaciones en Ca2. 12
Registros de entrada/salida (SPL) Registro PUNTERO de PILA. Apunta al área de pila que defina el usuario. El SP se decrementa al meter en pila y se incrementa al sacar. Si el programador usa subrutinas o interrupciones, es necesario inicializar el puntero de pila. En estos casos el SP se incrementa o decrementa automáticamente en dos unidades. 13
Modos de direccionamiento para datos Directo Indirecto Indirecto con predecremento Indirecto con postincremento Indirecto con desplazamiento Constantes del programa Inmediato 14
Direccionamiento registro directo La instrucción define el registro cuyo contenido se verá afectado por la propia instrucción. Ejemplo: COM R4 15
Direccionamiento registro directo (2 reg.) La instrucción define el registro fuente (Rr) y destino (Rd). Ejemplo: MOV R2, R4 16
Direccionamiento registro e/s directo La instrucción define el registro de E/S (P) y el registro, destino o fuente, n. Ejemplo: IN R14,34 ; OUT 34,R14 17
Modo de direccionamiento directo La instrucción contiene la dirección de memoria además de un campo (Rd/Rr) que contiene el registro destino o fuente. Ejemplo: LDS R23,$D0 ;STS $12,R1 18
Modo de direccionamiento indirecto La instrucción referencia al registro X,Y o Z que contiene la dirección del operando.. Ejemplo: LD R1,X ;ST Z,R10 19
Direccionamiento indirecto postincremento La instrucción referencia al registro X,Y o Z que contiene la dirección del operando, que después se incrementa en una unidad. Ejemplo: LD R0,X+ ;ST Z+,R1 20
Direccionamiento indirecto predecremento La instrucción referencia al registro X,Y o Z que, primero se decrementa en una unidad, y después, accede al operando. Ejemplo: LD R15,-X ;ST -Y,R1 21
Direccionamiento indirecto con desplazamto. La dirección del dato se obtiene mediante la suma del contenido del registro Y o Z y una constante q (0<q<64). Ejemplos: LDD R1,Y+10 ;STD Z+1,R1 22
Direccionamiento constantes de memoria El dato está en la memoria de programa (instrucción LPM). La dirección del dato se sitúa en el registro Z. 23
Direccionamiento inmediato El dato está está codificado en la propia instrucción Ejemplos: LDI r16,255, ANDI r25,0x10 24
Modos de direccionamiento para programas Son utilizados por las instrucciones de salto y llamada a subrutinas (procedimientos) Modo de direccionamiento de programa indirecto Modo de direccionamiento de programa relativo 25
Direccionamiento de programa indirecto La ejecución del programa salta a la posición de memoria indicada por el registro Z. Ejemplos: IJMP, ICALL 26
Direccionamiento de programa relativo La instrucción contiene un desplazamiento K que se suma al contenido del PC para encontrar la siguiente instrucción a ejecutar. (-2048 <K< 2047). Ejemplos: RJMP, RCALL 27
Juego de instrucciones: representación Instrucciones sin operandos Mnemónico Instrucciones con un operando Mnemónico opfuente/destino Instrucciones con dos operandos Mnemónico opdestino,opfuente Representación de las instrucciones: Mnemónico Operandos Descripción Rango de valores Descripción posibles para los simbólica operandos Flags del SREG 28
Juego de instrucciones - Instrucciones de transferencia de datos - Instrucciones aritméticas y lógicas - Instrucciones de bifurcación - Instrucciones de desplazamiento y rotación - Instrucciones de bit - Instrucciones de control 29
Juego de instrucciones: Transferencia de datos - MOV - LDI - LDS - STS 30
Juego de instrucciones: Transferencia de datos - LD - ST 31
Juego de instrucciones: Transferencia de datos - LDD - STD - IN - OUT 32
Juego de instrucciones: Transferencia de datos $00 MOV R1,R2 32 registros IN R1,$10 ST Z,R1 STD Y+1,R30 STS $DE,R4 OUT 12,R3 64 registros E/S LD R1,Z LDD R30,Y+2 LDS R23,$10 SRAM $DF 33
Juego de instrucciones: Transferencia de datos - PUSH - POP - LPM -SWAP 34
Juego de instrucciones: Aritméticas y lógicas - Los operandos sólo pueden ser registros o constantes. - Suma aritmética - Sin acarreo - Con acarreo - Suma con registros 16 bits y dato inmediato 35
Juego de instrucciones: Aritméticas y lógicas - Resta aritmética - Sin acarreo - Con dato inmediato - Con acarreo - Con dato inmediato y acarreo - Con dato inmediato y con registros de 16 bits. 36
Juego de instrucciones: Aritméticas y lógicas - Comparación - 2 registros sin acarreo - 1 registro con dato inmediato - 2 registros con acarreo - INCrementa y DECrementa 37
Juego de instrucciones: Aritméticas y lógicas - CLR (poner a cero) - SER (poner a $FF) - NEG (Ca2) 38
Juego de instrucciones: Aritméticas y lógicas - AND - OR - EOR - COM 39
Juego de instrucciones: Instrucciones de bifurcación - Saltos incondicionales: - Relativo, - Absoluto, -Indirecto - Llamada a subrutinas: - Usan la pila (STACK) para almacenar el retorno. - Relativo, - Absoluto, -Indirecto 40
Juego de instrucciones: Instrucciones de bifurcación - De regreso de subrutinas. - Saltos condicionales: * Esquivar la siguiente instrucción: 41
Juego de instrucciones: Instrucciones de bifurcación * Saltar grupo de instrucciones: - Entre -64 instrucciones y 63 instrucciones - Destinos más lejanos requieren de instrucciones de salto incondicionales situadas en destinos previos. - Consultan el estado de algún bit del SREG o combinación de estos. - Instrucciones BRBS y BRBC: 42
Juego de instrucciones: Instrucciones de bifurcación - Instrucciones BREQ y BRNE: - Instrucciones BRCS y BRCC: - Instrucciones BRVS y BRVC: 43
Juego de instrucciones: Instrucciones de bifurcación - Instrucciones BRTS y BRTC: - Instrucciones BRHS y BRHC: - Instrucciones BRIE y BRID: 44
Juego de instrucciones: Instrucciones de bifurcación - Instrucciones BRPL y BRMI: -Instrucción BRSH - Salta si igual o mayor - Sin signo - Instrucción BRLO - Salta si menor - Sin signo 45
Juego de instrucciones: Instrucciones de bifurcación - Instrucción BRGE - Salta si igual o mayor - Con signo - Instrucción BRLT - Salta si menor - Con signo 46
Juego de instrucciones: Instrucciones de bifurcación Resumen de las instrucciones de saltos condicionales y sus dependencias de los banderines del SREG 47
Juego de instrucciones: Desplazamiento y rotación - Desplazamiento. 0 Rn C Rn C 0 - Desplazamiento aritmético Rn C 7 48
Juego de instrucciones: Desplazamiento y rotación - Rotaciones. Rn C C Rn - Instrucciones 49
Juego de instrucciones: De manejo de bits - De puertos: SBI, CBI - De registro de estado SREG 50
Juego de instrucciones: De control - NOP - WDR - SLEEP 51
Directivas de ensamblador Son comandos al programa que genera el código objeto y que se encuentran mezclados en el fichero fuente con las instrucciones del micro. - CSEG-Code Segment Sintaxis:.CSEG - DSEG-Date Segment Sintaxis:.DSEG - DB-Define Byte en Program Memory Sintaxis:.DB expressionlist Const:.DB 0,255, 0b01010101,-128,0xaa,$45 52
Directivas de ensamblador - DW Define Word en Program Memory Sintaxis:.DW expressionlist Const:.DW 0,0xFFFF, -32768,65535, 0b1111111100000000 - BYTE Reserva bytes a una variable Reserva en SRAM. Posible sólo en DSEG Sintaxis: label:.byte expresion Var1:.BYTE 1 Tabla:.BYTE 10 53
Directivas de ensamblador - DEF Asigna un nombre simbólico a un registro. Sintaxis:.DEF symbol=register.def temp = r16.def ior= r0 - EQU Símbolo igual a expresión Sintaxis:.EQU label = expression.equ puertas = 2 54
Directivas de ensamblador - ORG Establece el origen del programa Sintaxis:.ORG expression.dseg.org 0X37 Variable:.BYTE 1.CSEG.ORG 0x10 Mov r0,r1 55
Herramientas de desarrollo del ATMEL AT90S2313 Wavrasm AVR ISP AVR-Studio STK-200 STK-500 56
Herramientas de desarrollo del ATMEL AT90S2313 Wavrasm AVR ISP AVR-Studio STK-200 STK-500 57
Wavrasm (cont.) Editor de texto para escribir programas en lenguaje ensamblador (.asm ) Ensamblador integrado Permite el uso de directivas Permite la identificación de los errores en el programa escrito Genera ficheros con las extensiones (.lst) que mezcla nuestro programa con el código objeto, (.obj) que contiene sólo el código objeto y (.hex) o formato Intel Hex que se usará, en último lugar, por el AVR ISP para la programación física del microcontrolador. 58
AVR ISP 59
AVR ISP (cont.) Software de programación Requiere el STK200 conectado al puerto paralelo a través de un conector especial o dongle Abre ficheros (.hex) generados por AVRASM y programa su contenido en un modelo de microcontrolador previamente escogido Permite Borrar dispositivo Programar EEPROM datos Programar EEPROM de programa 60
AVR ISP (cont.) Verificar programa almacenado Chequeo del dispositivo Comprobación de Cheksum Programación fusibles Otros 61
AVR STUDIO 62
AVR STUDIO (cont.) En las primeras versiones sólo contenía un simulador. A partir de la versión 3, es un entorno integrado que permite la edición de programas, generación de código máquina, programación y simulación. La programación se realiza a través del puerto serie hacia el STK500 Permite incorporar en la simulación código escrito en lenguaje C. 63
STK-200 Placa STK200 64
STK-200 (cont.) Establece un entorno de funcionamiento para el microcontrolador permitiendo la realización de ensayos básicos. Zócalos de diferentes tamaños para los distintos modelos de la familia AT90 Oscilador de cristal Driver s RS232 con conector DB9 Conector para la programación del microcontrolador a través del puerto paralelo 65
STK-200 (cont.) Conjunto de diodos LEDS Conjunto de pulsadores mecánicos Conectores de expansión Regulador de alimentación Zócalo para LCD. 66
STK-500 Placa STK500 67
STK-500 (cont.) Se comunica con el PC a través del puerto serie Software actualizable Frecuencia de reloj programable desde el PC (AvrStudio) Voltaje de alimentación de los μc regulable desde PC. Conjunto de leds Conjunto de pulsadores Zócalos de diferentes tamaños Conectores de expansión. 68