Explicacin 3 Perifricos Qu perifricos vamos a usar

  • Slides: 17
Download presentation
Explicación 3 Periféricos

Explicación 3 Periféricos

¿Qué periféricos vamos a usar? Llaves Luces Impresora

¿Qué periféricos vamos a usar? Llaves Luces Impresora

Módulos de E/S Llaves PIO (Puerto paralelo de E/S) Luces PIO (Puerto paralelo de

Módulos de E/S Llaves PIO (Puerto paralelo de E/S) Luces PIO (Puerto paralelo de E/S) HAND-SHAKE

PIO (Puerto paralelo de E/S) • • Son 2 puertos paralelos de 8 bits:

PIO (Puerto paralelo de E/S) • • Son 2 puertos paralelos de 8 bits: A y B. Se puede programar cada bit por separado como entrada ó salida. Posee 4 registros internos de 8 bits: – 2 de datos, PA y PB. – 2 de control CA y CB para programar los bits de PA y PB. PIO Datos Configuración 30 H PA 31 H PB 32 H CA 33 H CB Salida X X X X Entrada 00000001 CB selecciona Un bit en 0 en CA/ línea como salida a la n PA/PB correspondiente e CB selecciona Un bit en 1 en CA/ línea como entrada a la n PA/PB correspondiente e

Ejercicio 1 Encendido/apagado de las luces (periférico de salida) mediante la barra de microconmutadores

Ejercicio 1 Encendido/apagado de las luces (periférico de salida) mediante la barra de microconmutadores (periférico de entrada), ambos comunicados con el microprocesador a través de los puertos paralelos de la PIO. Implementar un programa en el lenguaje assembly del simulador MSX 88 que configure la PIO para leer el estado de los microconmutadores y escribirlo en la barra de luces. El programa se debe ejecutar bajo la configuración P 1 C 0 del simulador. Los microconmutadores se manejan con las teclas 0 -7. Llaves PIO 30 H PA 31 H PB 32 H CA 33 H CB Luces

Ejercicio 1 Llaves PIO 1 1 0 0 1 1 7 6 5 4

Ejercicio 1 Llaves PIO 1 1 0 0 1 1 7 6 5 4 3 2 1 0 Luces PA PB CA CB EQU 30 H EQU 31 H EQU 32 H EQU 33 H ORG 2000 H MOV AL, 0 FFH OUT CA, AL MOV AL, 0 OUT CB, AL POLL: IN AL, PA OUT PB, AL JMP POLL END 1 1 0 0 1 1 7 6 5 4 3 2 1 0 30 H PA 31 H PB C 3 H = 1100 0011 32 H CA FFH =1111 33 H CB 0 = 0000 C 3 H = 1100 0011 AX PA (Microconmutadores) como entradas (1) PB (Luces) como salidas (0) Lee el estado de las llaves y enciende las luces correspondientes C 3 H 0 FFH 0

Ejercicio 2 Encendido/apagado sincronizado de las luces. Implementar un contador que incremente la cuenta

Ejercicio 2 Encendido/apagado sincronizado de las luces. Implementar un contador que incremente la cuenta en uno una vez por segundo y la visualice a través de las luces conectadas a uno de los puertos paralelos del simulador. Ejecutar en configuración P 1 C 0.

PIC Ej 2 EOI IMR PIC TIMER PIO N_CLK EQU EQU 20 H 10

PIC Ej 2 EOI IMR PIC TIMER PIO N_CLK EQU EQU 20 H 10 H 30 H 10 ORG 40 IP_CLK DW RUT_CLK Si estan todas prendidas las apago Enciendo las luces correspondientes 21 H FDH =1111 1101 IRR ORG 3000 H RUT_CLK: INC INICIO Incremento el contador 20 H 22 H ISR 23 H INT 0 24 H INT 1 25 H 10 INT 2 26 H Inicializo el timer INT 3 ORG 1000 H 1 INICIO DB 02 27 H TIMER ORG 2000 H CLI 120 H 010 20 H 20 10 0 FDH = 11111101 AX Habilito INT 1 MOV AL, 0 FDH OUT PIC+1, AL Asigno a INT 1 MOV AL, N_CLK el tipo 10 OUT PIC+5, AL Configuro el MOV AL, 1 timer OUT TIMER+1, AL MOV AL, 0 Configuro OUT PIO+3, AL CB = 0 PB (luces) todas salidas el PIO OUT PIO+1, AL PB = 0 todas luces apagadas OUT TIMER, AL Inicializo el timer STI LAZO: JMP LAZO Y así siguiendo… Cont: 10 H 0 1 Comp: 11 H 1 PIO 30 H PA 31 H PB 32 H CA 33 H CB 012==0000 00000001 0010 0 = 0000 Luces 000 00 00 0 01 10 0 7 6 5 4 3 2 1 0

Impresora y la PIO PA 0 : línea BUSY (entrada) PA 1 : línea

Impresora y la PIO PA 0 : línea BUSY (entrada) PA 1 : línea STROBE (salida) PB 0…PB 7 : línea de datos (salida) Strob e Busy PIO 30 H PA 31 H PB 32 H CA 33 H CB XXXXXX S B Datos

Ejercicio 4 Uso de la impresora a través de la PIO Escribir un programa

Ejercicio 4 Uso de la impresora a través de la PIO Escribir un programa que envíe datos a la impresora a través de la PIO. La PIO debe cumplir las funciones de temporización que requiere la impresora para la comunicación. Ejecutar en configuración P 1 C 1 del simulador y presionar F 5 para mostrar la salida en papel. El papel se puede blanquear ingresando el comando BI.

Ejercicio 4 PIO EQU 30 H ORG 1000 H MSJ DB "ARQUITECTURA DE "

Ejercicio 4 PIO EQU 30 H ORG 1000 H MSJ DB "ARQUITECTURA DE " DB "COMPUTADORAS" FIN DB ? ORG 2000 H MOV AL, 0 FDH CA = 1111 1101 B= Entrada S=Salida OUT PIO+2, AL MOV AL, 0 CB = 0000 PB = Salida OUT PIO+3, AL IN AL, PIO Fuerza Strobe a 0 AND AL, 0 FDH OUT PIO, AL MOV BX, OFFSET MSJ Inicializo BX y CL MOV CL, OFFSET FIN-OFFSET MSJ POLL: IN AL, PIO Lee Busy y se queda en el lazo AND AL, 1 mientras sea 1. (ocupada) JNZ POLL MOV AL, [BX] Mando al puerto de datos (PB) OUT PIO+1, AL el carácter a imprimir IN AL, PIO OR AL, 02 H Fuerzo Strobe a 1 OUT PIO, AL S IN AL, PIO AND AL, 0 FDH Fuerzo Strobe a 0 B OUT PIO, AL INC BX Siguiente caracter Datos DEC CL JNZ POLL …Sigue haciendo polling hasta que no INT 0 END queden caracteres por imprimir. PIO 30 H PA 31 H PB 32 H CA 33 H CB “A”

HAND-SHAKE Interfaz con la impresora. HAND Dos registros de 8 bits: – DATO: D

HAND-SHAKE Interfaz con la impresora. HAND Dos registros de 8 bits: – DATO: D 0……. D 7 (40 H) – EST: registro de estado (41 H) X Dato: 40 H Estado: 41 H X X INT STR En lectura : BIT 0 en 0: línea BUSY desactivada y en 1: línea BUSY activada BIT 1 en 0: línea STROBE desactivada y en 1: línea STROBE activada BIT 2. . 6 No se usan BIT 7 en 0: línea INT desactivada y en 1: línea INT activada En escritura : BIT 0…. 6: no se usan BIT 7 en 0 : Polling y en 1 : se activa INT BUSY

Ejercicio 7 Uso de la impresora a través del dispositivo de handshaking por consulta

Ejercicio 7 Uso de la impresora a través del dispositivo de handshaking por consulta de estado. Escribir un programa que envíe datos a la impresora a través del HAND-SHAKE. La comunicación se debe establecer por consulta de estado (polling). Ejecutar en configuración P 1 C 2.

Ej 7 Dato: 40 H HAND EQU 40 H ORG 1000 H MSJ DB

Ej 7 Dato: 40 H HAND EQU 40 H ORG 1000 H MSJ DB DB FIN DB HAND Estado: 41 H "FACULTAD DE " "INFORMATICA" ? ORG 2000 H IN AL, HAND+1 Se configura el HAND para polling (7 FH = 0111 1111) AND AL, 7 FH OUT HAND+1, AL MOV BX, OFFSET MSJ Inicializo BX y CL MOV CL, OFFSET FIN-OFFSET MSJ Lee Busy y se queda en el lazo mientras sea 1. POLL: IN AL, HAND+1 (ocupada) AND AL, 1 JNZ POLL MOV AL, [BX] Envío el carácter a imprimir OUT HAND, AL al siguiente carácter y decrementa el Avanza INC BX contador de caracteres DEC CL …Sigue haciendo polling hasta que no JNZ POLL queden caracteres por imprimir. INT 0 END

Ejercicio 8 Uso de la impresora a través del dispositivo de handshaking por interrupción.

Ejercicio 8 Uso de la impresora a través del dispositivo de handshaking por interrupción. Escribir un programa que envíe datos a la impresora a través del HAND-SHAKE. La comunicación se debe establecer por interrupciones emitidas desde el HANDSHAKE cada vez que la impresora se desocupa. Ejecutar en configuración P 1 C 2.

PIC F 10 Timer HAND EOI 20 H IMR 21 H IRR 22 H

PIC F 10 Timer HAND EOI 20 H IMR 21 H IRR 22 H ISR 23 H INT 0 24 H INT 1 25 H INT 2 26 H INT 3 27 H

Ej 8 PIC HAND N_HND EQU 20 H EQU 40 H EQU 10 ORG

Ej 8 PIC HAND N_HND EQU 20 H EQU 40 H EQU 10 ORG 40 IP_HND DW RUT_HND ORG 2000 H Configuración del PIC para atender al HAND ORG 1000 H MSJ DB "UNIVERSIDAD " DB "NACIONAL DE LA PLATA" FIN DB ? ORG 3000 H RUT_HND: PUSH AX MOV AL, [BX] Envía el carácter a imprimir OUT HAND, AL INC BX Avanza al siguiente carácter y DEC CL decrementa el contador de caracteres MOV AL, 20 H Fin de atención a la OUT PIC, AL interrupción POP AX IRET IMR = 11111011 INT 2 (HAND) Asigno a INT 2 el tipo 10 Configuro el HAND para interrupción Mientras tenga caracteres para imprimir se queda en lazo Deshabilita las interrupciones