Descargar

Siemens 80C167

Enviado por Pablo Turmero


    edu.red

    Objetivos Familiarizarse con el manejo de un micro (procesador/controlador) Arquitectura Organización de un SED Entender la documentación Entender la especificación de un SED Desde el punto de vista de la aplicación Desde el punto de vista del propio SED Requisitos de CPU Requisitos de memoria Requisitos de I/O Desarrollar habilidades de diseño y depuración de un SED Parte hardware Parte software (en C y/o Ensamblador)

    edu.red

    Programa Introducción Arquitectura del microcontrolador SIEMENS 80C167 Registros Lenguaje Ensamblador: Juego de instrucciones Modos de direccionamieno Memoria y mapa de memoria Periféricos Puertos paralelo/serie Timers Otros: Displays, teclados, etc. Interrupciones Programación en alto nivel: Lenguaje C Proyecto Hardware/software

    edu.red

    Normas y bibliografía Evaluación (consultar información oficial)

    Nota = .7 Teoría+ .3 Lab Teoría .3 Pruebas intermedias + .7 Prueba final Habrá varias pruebas intermedias (Evaluación continua) Habrá ejercicios para casa (algunos evaluables) Se pedirá la participación del alumno en clase Incluso se podrán cambiar los porcentajes Fundamental: la asistencia

    Bibliografía Página WEB: Teoría, calendario, prácticas Manuales Siemens Libro de programación en C

    edu.red

    Introducción al SIEMENS 80C167

    edu.red

    SIEMENS 80C167 Microcontrolador (Embedded Processor) de 16 bits ALU y Registros de 16 bits Diseñado para tareas de control industrial Robusto frente al ruido electromagnético P.e. PLC’s del LAB Rango direccionamiento: 16 Mbytes (memoria) Con memoria RAM interna Ciertas versiones disponen también de ROM interna Con muchos dispositivos integrados en el chip Controladores de comunicaciones serie Puertos paralelo Temporizadores (timers) Convertidor analógico/digital (A/D) Moduladores PWM (electrónica de potencia).

    edu.red

    Modelo de programador” del 167 Memoria R8 00 0000 00 0001 FF FFFF R9 R12 R10 R14 R13 R15 R0 R1 R4 R3 R2 R6 R5 R7 PC R11 PSW SP Registros CPU 00 FE00 00 FE02 00 FE0X I/O (GPR’s) (SFR’s) (SFR’s)

    edu.red

    Memoria Organizada en “celdas” de 1 BYTE (8 bits) Cada byte tiene su DIRECCIÓN Dada en 24 bits (16 Mbytes) Se accede a la memoria usando la dirección. Ejemplos Lectura/escritura (datos/direcciones: 1’s y 0’s)

    Registros (CPU): Posiciones de memoria de acceso rápido I/O. En el 167 el acceso a puertos es similar al acceso a memoria

    dato = READ (dirección) WRITE(dato, dirección)

    edu.red

    Primer ejemplo Suma de dos datos en ASS 167

    Suma (940)+(942) en (942)

    Para llenar R0 hacen falta dos bytes! (2 bytes por dato) En direcciones consecutivas de memoria (940/941) Parte baja del dato (en R0) en dirección par

    MOV R0,0x940 ; READ ADD R0,0x942 MOV 0x942,r0 ;WRITE

    edu.red

    Más ejemplos: Programas en C y Ensamblador Primer ejemplo: bucle “for” En lenguaje C

    En lenguaje ensamblador N = 5; j en 00FA00 H ( j no está inicializada !)

    for (i=1; i N 506 DD 05 JMPR cc_sgt,512 ; then goto 512H 508 04 F1 00 FA ADD 0fa00,R1 ; j += 1 50C 08 01 ADD R0,#1 ; i += 1 50E FA 00 04 05 JMPR cc_uc,504 ; salto sin condición 512

    edu.red

    Notas En Ensamblador más largo que en C Línea ensamblador = operación elemental “mov” de un dato de memoria-registro (registro-memoria) Suma dos datos Compara dos datos Saltos (con y sin condición) Las instrucciones se almacenan en memoria en formato BINARIO (1’s y 0’s) Las instrucciones ocupan 2 ó 4 bytes Las instrucciones se almacenan en posiciones de memoria CONSECUTIVAS. Se ejecutan en orden Salvo el los saltos La DIRECCIÓN (de memoria) de la próxima instrucción a ejecutar se almacena en el PC (Contador de Programa)

    edu.red

    Cómo se ejecuta un programa ? Dos pasos: Captura de la instrucción (Instruction Fetch, usando el PC) Ejecución (usando la ALU)

    Fetch: Trae la instrucción de memoria, incrementa PC CPU = MEM(PC); PC++; Execute: La ALU realiza la operación (suma, resta, etc.)

    edu.red

    Programa ensamblador Traduce las instrucciones de “pnemónico” a binario Por ejemplo, la instrucción

    Se convierte en (Codificación de instrucciones)

    Nuestra primera instrucción que suponemos cargada en la posición 500 H de memoria Tipos de ensambladores De línea: No soporta etiquetas (reside en el monitor de la tarjeta) De PC: Soporta etiquetas (reside en el PC)

    MOV R0,#1 E0 10

    edu.red

    Ejemplo con etiquetas (ensamblador en PC) Las etiquetas facilitan la programación en ASS

    Los campos que forman una instrucción en ASS

    Los campos etiqueta y comentario son opcionales TAB si no se usa el campo de etiqueta

    MOV R0,#1 ; r0 (i) MOV R1,#1 ; auxiliar bucle: CMP R0,#5 ; if i>N JMPR cc_sgt,fin ; then goto ´fin’ ADD 0fa00H,R1 ; j += 1 ADD R0,#1 ; i += 1 JMPS bucle ; = jmpr cc_uc, fin: etiqueta: operación operandos ;comentario

    edu.red

    Operaciones y operandos (resumen) Operaciones Transferencia: mov Aritméticas: add, sub, cmp, neg, mul, div Lógicas: and, or, cpl Desplazamientos: shr, shl Saltos: jmpr cc_uc (cc_eq, cc_ne, cc_ugt, cc_sgt, cc_ule, …) Operandos, modos de direccionamiento Inmediato: #1 Directo a registro: R0 Directo a memoria: 0fa00 Indirecto: [R0] Números Decimal 15 Hexadecimal 0fa00 H (0 por delante si empiezan por letra) Binario 01001000 B

    edu.red

    Modos de direccionamiento. Directo a registro mov r0,r1 ; R0