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
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
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