Entradas/salidas digitales

Anuncio
Entradas/salidas digitales
1.
Objetivos
Familiarizarse en el manejo de puertos paralelo del 80C167.
Crear un primer programa de manejo de puertos en lenguaje ensamblador y depurarlo utilizando la
herramienta µVision3 en modo “Tarjeta” y modo “Simulador”.
2.
Puertos de entrada/salida
Para lectura y escritura en el puerto usar el comando Enter de µVision3 en modo “Tarjeta”.
Los pasos a realizar son:
Indicar qué lı́neas del puerto hacen de entrada y qué otras lı́neas hacen de salida. P.e. el comando
e int 0xffc2 = 0x00ff
configura las 8 lı́neas bajas del Puerto 2 del c167 como salidas (DP2 a 1’s), y las 8 altas como entradas
(DP2 a 0’s).
Una vez configurado el puerto se pueden realizar operaciones operaciones de escritura sobre las salidas
(para cambiar el estado de los diodos)1 . . P.e. con el comando de escritura:
e int 0xffc0 = 0x00f0
enciende los cuatro diodos más bajos de la tarjeta. (Recuerde: la dirección de P2 en el mapa de memoria
del micro es 0xffc0).
Realizar las siguientes operaciones:
Hacer que se apaguen todos los diodos conectados a P2 menos el conectado a la lı́nea menos significativa.
Lo mismo con la más significativa.
P1- ¿Qué valores hay que poner en P2 en cada caso?
3.
Programa
Cargar el siguiente programa a partir de la posición 0x300 de memoria. Ejecutar dicho programa en la
tarjeta.
mov r0,#0x00ff
mov 0xffc2,r0
mov r0,0xffc0
shr r0,#8
mov 0xffc0,r0
jmpr cc uc,0x308
P2- Indicar con palabras sencillas qué hace el programa:
4.
Sumador en ensamblador de lı́nea
P3- Realizar un programa en lenguaje ensamblador que lea los ocho bits altos del puerto P2, separe el
dato de ocho bits en dos datos de cuatro bits cada uno, sume ambos datos, y muestre el resultado en la parte
baja de P2. Los pasos a realizar:
Programar los 8 bits bajos del puerto P2 como salidas y los 8 altos como entradas (salidas a diodos y
entradas a interruptores).
1 Las operaciones de lectura no deben intentarse con esta herramienta pues la lectura no refleja el estado de los interruptores,
refleja la imagen que la herramienta tiene en memoria a cerca del estado del puerto. Esta imagen sólo se actualiza cada vez que
se ejecuta una instrucción en el micro; no se actualiza con los comandos de lectura/escritura de memoria
1
Separar el dato de 8 bits en dos partes de 4 bits cada una.
Realizar la suma de los dos datos y mostrar el resultado en la parte baja de P2.
El siguiente programa, escrito en lenguaje C, proporciona un mayor detalle de las operaciones a realizar
en lenguaje ensamblador.
/* Ejemplo para la prueba de la herramienta muvision3:
- Suma de dos datos introducidos por el puerto P2
Departamento de Electrónica y Automática DEA-ICAI
Prof. Cesáreo Fernández Martı́nez */
#include <reg167.h>
void main(void) {
int temp1,temp2;
DP2 = 0x00ff;
while (1) {
temp1 = P2;
temp2 = temp1; /* Mejor que "temp2 = P2 */
temp1 = temp1 & 0x0f00;
temp1 = temp1 >> 8;
temp2 = temp2 & 0xf000;
temp2 = temp2 >> 12;
P2=~(temp1 + temp2);
}
}
5.
Manejo de puertos en el Simulador
Figura 1: Simulación del puerto P2
Los programas que utilizan puertos también pueden ser desarrollados en modo “Simulador”. El simulador
tiene soporte de todos los periféricos del microprocesador. Por ejemplo, para el caso del puerto P2 podemos
pinchar en Peripherals ->I/O Ports ->Port2 y nos aparecerá una ventana como la recogida en la figura 1.
Al ejecutar el programa aparecerá DP2 tal como lo haya configurado dicho programa. Para introducir
datos por el puerto pinchar en Pins, en la parte alta de P2. En la parte baja de P2 aparecen los resultados.
2
Descargar