Tema 4: Microcontrolador AT90S2313 • - 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. Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Descripción interna 4 Microcontrolador AT90S2313 Mapa de memoria (programa y datos) 5 Microcontrolador AT90S2313 Mapa de memoria de datos (detalle) 6 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Registros de propósito general (cont.) • Registros X, Y, Z para modos indirectos 8 Microcontrolador AT90S2313 Registros de entrada/salida • Permiten el acceso y control de los periféricos y de los recursos del microcontrolador. 9 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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=NV – - Es el signo correcto del resultados en operaciones en Ca2. 12 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Modos de direccionamiento para datos • Directo • Indirecto • Indirecto con predecremento • Indirecto con postincremento • Indirecto con desplazamiento • Constantes del programa • Inmediato 14 Microcontrolador AT90S2313 Direccionamiento registro directo • La instrucción define el registro cuyo contenido se verá afectado por la propia instrucción. • Ejemplo: COM R4 15 Microcontrolador AT90S2313 Direccionamiento registro directo (2 reg.) • La instrucción define el registro fuente (Rr) y destino (Rd). • Ejemplo: MOV R2, R4 16 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Direccionamiento inmediato • El dato está está codificado en la propia instrucción • Ejemplos: LDI r16,255, ANDI r25,0x10 24 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Juego de instrucciones: Transferencia de datos • - MOV • • - LDI • • - LDS • • - STS 30 Microcontrolador AT90S2313 Juego de instrucciones: Transferencia de datos • - LD • • • • - ST • 31 Microcontrolador AT90S2313 Juego de instrucciones: Transferencia de datos • - LDD • • - STD • • - IN • • - OUT • 32 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Juego de instrucciones: Transferencia de datos • - PUSH • • - POP • • - LPM • • -SWAP • 34 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Juego de instrucciones: Aritméticas y lógicas • - CLR (poner a cero) • • - SER (poner a $FF) • • - NEG (Ca2) • 38 Microcontrolador AT90S2313 Juego de instrucciones: Aritméticas y lógicas • - AND • • - OR • • - EOR • • - COM • 39 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Juego de instrucciones: Instrucciones de bifurcación • - De regreso de subrutinas. • • - Saltos condicionales: – * Esquivar la siguiente instrucción: – 41 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Juego de instrucciones: Instrucciones de bifurcación – - Instrucciones BREQ y BRNE: – – – - Instrucciones BRCS y BRCC: – – – - Instrucciones BRVS y BRVC: • 43 Microcontrolador AT90S2313 Juego de instrucciones: Instrucciones de bifurcación – - Instrucciones BRTS y BRTC: – – – - Instrucciones BRHS y BRHC: – – – - Instrucciones BRIE y BRID: – – – 44 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 Juego de instrucciones: Instrucciones de bifurcación Resumen de las instrucciones de saltos condicionales y sus dependencias de los banderines del SREG 47 Microcontrolador AT90S2313 Juego de instrucciones: Desplazamiento y rotación • - Desplazamiento. • • 0 Rn C Rn C 0 • • - Desplazamiento aritmético – • Rn C 7 48 Microcontrolador AT90S2313 Juego de instrucciones: Desplazamiento y rotación • - Rotaciones. • Rn • C • C Rn • - Instrucciones – • 49 Microcontrolador AT90S2313 Juego de instrucciones: De manejo de bits • - De puertos: SBI, CBI • • • - De registro de estado SREG • • • • 50 Microcontrolador AT90S2313 Juego de instrucciones: De control • - NOP • • - WDR • • - SLEEP • • • 51 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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 Microcontrolador AT90S2313 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