Академический Документы
Профессиональный Документы
Культура Документы
[COMPENDIO DE PRCTICAS]
COMPILACIN DE PRCTICAS
INDICE
iii iii
1. INTRODUCCIONES
1.1. 1.1.1. 1.1.2. 1.1.3. Decodificacin de dos memorias Memoria ROM Contador de dcadas 74LS190 Compuerta inversora con Schmitt Trigger 1
1.2. Decodificacin de cuatro memorias 1.2.1 Decodificadores 1.3. Encendido y apagado de leds con subrutina de retardo 1.3.1. PIC18F4550 1.4. Libreras y programa Espejo en Ensamblador 1.4.1. Microprocesador (PIC 18F4550) 1.5. Programa cuenta ascendente/descendente
6 7
1.6. Programa codificar/decodificar mensaje 1.6.1. Codificar y decodificar mensaje 1.7. Acceso a Memoria 1.7.1. Puerto Programable 82C55 1.8. 1.9. Acceso a Memoria ascendente/descendente Teclado Matricial
8 8
COMPILACIN DE PRCTICAS
2. DESARROLLOS
2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. 2.9. Decodificacin de dos memorias Decodificacin de cuatro memorias Encendido y apagado de leds con subrutina de retardo Libreras y programa Espejo en Ensamblador Programa cuenta ascendente/descendente Programa codificar/decodificar mensaje Acceso a Memoria Acceso a Memoria ascendente/descendente Teclado Matricial 9 11 13 16 19 21 23 28 30
3.
CONCLUSIONES
Decodificacin de dos memorias Decodificacin de cuatro memorias Encendido y apagado de leds con subrutina de retardo Libreras y programa Espejo en Ensamblador Programa cuenta ascendente/descendente Programa codificar/decodificar mensaje Acceso a Memoria Acceso a Memoria ascendente/descendente Teclado Matricial
32 32 32 32 32 33 33 33 33
ii
COMPILACIN DE PRCTICAS
OBJETIVO GENERAL El alumno disear y construir una microcomputadora basada en un microprocesador moderno, para aplicaciones de cmputo, control industrial, telecomunicaciones e instrumentacin digital.
OBJETIVOS PARTICULARES
Decodificacin de dos memorias o Disear un decodificador que maneje dos memorias ROM 2816
Decodificacin de cuatro memorias o Disear un decodificador que maneje cuatro memorias ROM 2816
Encendido y apagado de leds con subrutina de retardo o Conocer y familiarizarse con el microcontrolador Pic18F4550. o Familiarizarse con el software requerido para crear programas, y as, programarlo. o Asimismo, realizar programas bsicos de reconocimiento del dispositivo y sus funciones esenciales para el dominio del mismo.
Libreras y programa Espejo en Ensamblador o Disear un programa que refleje lo que hay en la entrada del sistema mnimo, a la salida del mismo.
Programa cuenta ascendente/descendente o Disear un programa que cuente de forma ascendente si a la entrada hay un nmero par, y descendente si es impar.
Programa codificar/decodificar mensaje o Disear un programa que codifique un mensaje a la entrada con una llave y con el mensaje codificado anterior, lo muestre a la salida y despus decodifique el mensaje con la misma llave y con el mismo mensaje codificado anterior.
iii
COMPILACIN DE PRCTICAS
Acceso a Memoria o Disear un programa que acceda a la memoria y muestre el contenido de cada localidad en un display de 7 segmentos y en 8 leds Acceso a Memoria ascendente/descendente o Disear un programa que acceda a la memoria y muestre el contenido de cada localidad de forma ascendente y descendente en un display de 7 segmentos.
Teclado Matricial o Disear un programa que muestre en los displays el numero de equipo y se recorran los nmeros a la izquierda, el nuevo digito ser el oprimido en el teclado matricial.
iv
COMPILACIN DE PRCTICAS
1. INTRODUCCIONES
1.1. Decodificacin de dos memorias 1.1.1. Memoria ROM La memoria ROM, (read-only memory) o memoria de slo lectura, es la memoria que se utiliza para almacenar los programas que ponen en marcha el ordenador y realizan los diagnsticos.
Para determinar el tamao de una memoria se tiene que dividir el numero de la memoria entre 8 bits, es decir, para una memoria XX16 dividimos 16/8=2 entonces esta memoria tiene 2KB de direcciones y un rango de memoria de 0 7FF para esta memoria tenemos un bus de direcciones de A 0-A10. La memoria que sigue es una XX32 se hace el mimo procedimiento y observamos que esta memoria tiene 4KB de direcciones, su bus de direcciones aumenta en una direccin ms que la anterior, por efecto su rango de memoria aumenta (0 FFF). (Ver tabla 1.1.2).
COMPILACIN DE PRCTICAS
Tabla 1.1.3. Rango de la memoria 2816. A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0
0 0
0 0
0 0
0 0
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
1.1.2. Contador de dcadas 74LS190 El contador MOD 10 se conoce tambin como contador de dcadas. De echo un contador de dcadas es cualquier contador que tenga 10 estados diferentes independientemente de la secuencia. Estos tambin se denominan contadores BCD para reiterar lo dicho cualquier contador MOD 10 es un contador de dcadas y cualquier contador de dcadas que cuenta en binario de 0000 a 1001 es un contador BCD.(Ver Figura 2).
COMPILACIN DE PRCTICAS
1.1.3. Compuerta inversora con Schmitt Trigger El schmitt trigger es un comparador con histresis, que se encarga de producir un pulso de disparo cuando el valor de voltaje en su entrada esta dentro de un rango especifico, determinado por su ventana de histresis.(Ver Figura 3).
1.2.
1.2.1. Decodificadores Es un circuito combinacional, tal que cada lnea de salida ser activada para una sola de las combinaciones posibles de entrada. Estos circuitos, normalmente, se suelen encontrar como decodificador / demultiplexor. Esto es debido a que un demultiplexor puede comportarse como un decodificador. (Ver Tabla 1.1.2.1)
Entradas Salidas A B D3 D2 D1 D0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0
Tabla 4.1.2.1. Tabla de Verdad de un decodificador
COMPILACIN DE PRCTICAS
1.3.
1.3.1. PIC18F4550 Los PIC son una familia de microcontroladores tipo RISCreducedinstruction set computer fabricados por Microchip. Al tener este tipo de arquitectura es caracterizada por: Codificacin uniforme de instrucciones (ejemplo: el cdigo de operacin se encuentra siempre en la misma posicin en cada instruccin, la cual es siempre una palabra), lo que permite una decodificacin ms rpida. Un conjunto de registros homogneo, permitiendo que cualquier registro sea utilizado en cualquier contexto y as simplificar el diseo del compilador (aunque existen muchas formas de separar los ficheros de registro de entero y coma flotante). Modos de direccionamiento simple con modos ms complejos reemplazados por secuencias de instrucciones aritmticas simples.
GAMAS DE PIC'S Los PIC'S se clasifican por distintas gamas, cada una con sus propias caractersticas: 1. Microcontroladores de arquitectura cerrada Cada modelo se construye con un determinado CPU, cierta capacidad de memoria de datos, cierto tipo y capacidad de memoria de instrucciones, un nmero de E/S y un conjunto de recursos auxiliares muy concreto. El modelo no admite variaciones ni ampliaciones. La aplicacin a la que se destina debe encontrar en su estructura todo lo que precisa y, en caso contrario, hay que desecharlo. 2. Microcontroladores de arquitectura abierta Estos microcontroladores se caracterizan porque, adems de disponer de una estructura interna determinada, pueden emplear sus lneas de E/S para sacar al exterior los buses de datos, direcciones y control, con lo que se posibilita la ampliacin de la memoria y las E/S con circuitos .integrados externos. Microchip dispone de modelos PIC con arquitectura abierta, sin embargo, esta alternativa se escapa de la idea de un microcontrolador incrustado y se asemeja a la. solucin que emplean los clsicos microprocesadores.
COMPILACIN DE PRCTICAS
La mayora de los sistemas de control incrustados requieren CPU, memoria de datos, memoria de instrucciones, lneas de E/S, y diversas funciones auxiliares como temporizadores, comunicacin serie y otras. La capacidad y el tipo de las memorias, el nmero de lneas de E/S y el de temporizadores, as como circuitos auxiliares, son parmetros que dependen exclusivamente de la aplicacin y varan mucho de unas situaciones a otras. Con las tres gamas de PIC se dispone de gran diversidad de modelos y encapsulados, pudiendo seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y capacidad de las memorias, el nmero de lneas de E/S y las funciones auxiliares precisas. Sin embargo, todas las versiones estn construidas alrededor de una arquitectura comn, un repertorio mnimo de instrucciones y un conjunto de opciones muy apreciadas, como el bajo consumo y el amplio margen del voltaje de alimentacin. CARACTERISTICAS DEL PIC18F4550 Frecuencia de operacin hasta 48 Mhz memoria de programa 32768/1024 = 32k bytes memoria RAM de datos 2048/1024 = 2k bytes Memoria EEPROM datos 256/1024 = .25k = 256 bytes Interruptores 20 Reset 35 lneas se comportan como puertos de entrada o salida 1 temporizador 1 modulo de comparacin Canales de comunicacin serie MSSP,EUSART 1 Canal usb 1 punto paralelo de transmisin de datos 13 canales de conversin A/D de 10 bits 2 Comparadores lgicos 75 Instrucciones en su set Encapsulado PDIP 40 pines Forma del chip OFN 40 pines
El PIC18f4550 posee 5 puertos con la siguiente configuracin: Puerto A -> A0 A5 Puerto B -> 8 bits Puerto C -> 7bits Puerto D -> 4 bits Puerto E -> 3bits (pero no se utiliza)
COMPILACIN DE PRCTICAS
Tambin posee acumuladores y banderas para auxiliarse sobre las operaciones que realiza la ALU (Unidad Lgica Aritmtica), que es la encargada de realizar todas las operaciones lgicas-aritmticas que demanda el programa del PIC. NEMONICOS Un nemnico es un dato simblico que identifica a un comando generalmente numrico (binario, octal, hexadecimal) de una forma ms sencilla que su numeracin original, lo cul facilita radicalmente la memorizacin de este comando para el programador. Al igual que en C++ los nemnicos son palabras reservadas para el programa, la lista de estos nemnicos se componen de 63 palabras usadas nicamente por el programa que hacen referencia a las distintas funciones y operaciones que puede realizar propiamente el PIC.
1.4.
1.4.1. Microprocesador (PIC 18F4550) Es el encargado de ejecutar los programas; desde el sistema operativo hasta las aplicaciones de usuario; slo ejecuta instrucciones programadas en lenguaje de bajo nivel, realizando operaciones aritmticas y lgicas simples, tales como sumar, restar, multiplicar, dividir, las lgicas binarias y accesos a memoria. Esta unidad central de procesamiento est constituida, esencialmente, por registros, una unidad de control, una unidad aritmtica lgica (ALU). En esta ocasin usaremos un microcontrolador como microprocesador. Un microcontrolador es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completo en un solo circuito integrado. Para ms informacin sobre el microcontrolador ver archivo pdf pic18F4550
1.5.
COMPILACIN DE PRCTICAS
1.6.
Para codificar un mensaje se aplica una XOR al mensaje que se desea transmitir con una llave (contrasea) y se obtiene un mensaje codificado, para poder recuperar el mensaje transmitido se vuelve a aplicar una XOR pero ahora al mensaje codificado con la misma llave y se obtiene el mensaje original.
1.7.
Dispone de un total de 24 lneas de E7S. Los canales se queden agrupar en puertas, segn tres modos diferentes de programacin. Sus caractersticas bsicas son: 24 lneas de E/S programables. Compatible con niveles TTL. Control Set/Reset sobre cualquier lnea. Alimentacin simple de 5V. Encapsulado DIL 40. Potencia de disipacin 1W.
COMPILACIN DE PRCTICAS
1.8.
1.9.
Teclado Matricial
Los teclados matriciales son ensamblados en forma de matriz de 4x4, (para este caso) 16 teclas configuradas en 4 columnas y 4 filas. Cuando no se ha oprimido ninguna tecla, (teclas abiertas) no hay conexin entre renglones y columnas. Cuando se oprime una tecla se hace una conexin entre la columna y la fila de la tecla.
COMPILACIN DE PRCTICAS
2.1.
Disear un decodificador para un microprocesador 20/8 que maneje dos memorias 2816. Permitiendo foldback. (Ver Tabla 2.1.2.1.) Una vez colocados los datos de las memorias que se usarn (ver tabla 2.1.2.1.), se observa que se tienen 2 memorias XX16 ya que se tiene el mismo bus de direcciones y por ende el mismo rango de memoria, pero como el micro no es inteligente se puede obligar a que trabajen una memoria tras de otra, es decir, como si fuera una sola memoria. Al ltimo valor de la primer memoria se le suma uno, para que la otra memoria quede enseguida de la primera. Se observa que A11 cambia en dos estados y de A12 en adelante se repite la misma secuencia. Esto quiere decir que A11 nos servir como decodificador, aunque solo es una compuerta inversora no ayuda a pasar de una memoria a otra. Y de A12 en adelante se ocupa para el foldback.
Tabla 2.1.2.1. Asignacin de direcciones para cada memoria A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Memoria
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 1 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
A B
Foldback Decodificador
Memoria 2816
COMPILACIN DE PRCTICAS
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
a 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1
b 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1
c 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1
d 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1
e 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1
f 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1
g 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 0 0 0
Carac. 2 0 0 8 3 0 0 5 6 5 C L A S E S D E A U T O C A D Y D E C A L C U L O
Hex. 6D 7E 7E 7F 79 7E 7E 5B 1F 5B 4E 0E 77 5B 4F 5B 00 3D 4F 00 77 3E 0F 7E 4E 77 3D 00 33 00 3D 4F 00 4E 77 0E 4E 3E 0E 7E
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
a 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0
b 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 1 0
c 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1 1 0 1 0 1 0 1 1
d 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1
e 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1
f 1 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
g 1 1 0 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1
Carac. H O L A B E B A P O L I I C E N E N A F I C H U H A S T A L U E G O
Hex. 37 1D 0E 77 00 1F 4F 1F 77 00 67 1D 0E 06 00 06 00 4E 00 4F 15 4F 15 77 00 47 06 4E 37 3E 37 77 5B 0F 77 0E 3E 4F 7B 1D
10
COMPILACIN DE PRCTICAS
Implemente el siguiente circuito para observar los mensajes grabados en las memorias.
2.2.
Disear un decodificador para un microprocesador 20/8 que maneje dos memorias 2816. Permitiendo foldback. (Ver Tabla 2.1.2.1.)
Tabla 2.1.2.1. Asignacin de direcciones para cada memoria A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Memoria
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
A B C D
Mapa (H) 0000 07FF 0000 07FF 0000 07FF 0000 07FF
Foldback Decodificador
Memoria 2816
11
COMPILACIN DE PRCTICAS
Cdigo para programar las memorias 2816: (Ver Tabla 2.1.2.2. de la practica #1). Implemente el siguiente circuito para observar los mensajes grabados en las memorias.
12
COMPILACIN DE PRCTICAS
2.3.
Comenzamos a crear el programa en el software MAPLAB. Como lo vimos en clase,cada instruccin ocupa 1 ciclo de reloj para ejecutarse. Por lo que, utilizamos el reloj interno del PIC 18F4550, en el cual, cada instruccin se ejecuta en (1/4MHZ)*4 o lo que es lo mismo 1uS. El programa ejecuta 5 instrucciones mientras los leds estn encendidos y otras 5 mientras estn apagados, as que encienden 5uS y apagan otros 5uS. Al ver el funcionamiento en el proto veremos que los leds nunca se apagan, cmo hacemos para que esto se alcance a ver? La respuesta la tenemos al utilizar un retardo al encender los leds y otro al apagarlos. El principio del retardo es contar descendentemente desde un nmero dado y al momento de que la cuenta llega a cero dejar de contar. El cero indica el fin del retardo y una vez concluido puede continuar la ejecucin del programa y as sucesivamente. Lo primero es definir nuestras constantes que usaremos como contador, en este casocnt1, cnt2, cnt3. Cabe mencionarque al momento de definir la constante con la directiva equ lo que hacemos es declarar la direccin del registro que usaremos como cnt1,... Esto es, que si declaramos cnt1equ 0x20 no significa que cuenta vaya a valer 0x20, sino que en esa direccin estar ese registro. Habiendo declarado lasconstantes y despus de cargar ese registro con un valor podemos realizar la rutina de retardo. Para eso decrementamoscnt3 por 1 hasta que el valor llegue a 0. De esto se encarga la instruccin decfsz. Su sintaxis esdecfszf,d donde f es el registro que queremos decrementar y d es el destino en el que guardamos el resultado, si d=0 el resultado se guarda en el registro W, si d=1 el resultado se guarda en el mismo registro f. decfsz cnt3,1decrementa el valor de cnt3 en 1 y guarda el resultado en el mismo registro cnt3. Para asegurarnos de que decfsz se ejecute hasta que el registro llegue a 0 utilizamos la instruccin goto para estar volviendo hasta que la cuenta termine su proceso.
13
COMPILACIN DE PRCTICAS
Ahora las nicas instrucciones nuevas son call y return. call se utiliza para mandar llamar una rutina, en este caso la Rutina de Retardo. Recordemos que en la declaracin de variables los registros 0x20, 0x21 y 0x22 fueron nombrados como cnt1, cnt2 y cnt3 respectivamente. Como podemos ver, decfsz cnt3,1 lo que hace esdecrementar cnt3, si al decrementarda cero se salta una lnea. El 1que sigue a cnt3, indica que guarde el valor de cnt3 decrementado en el mismo cnt3, esto es como.... contador=contador-1 solo que visto de distinta forma.
14
COMPILACIN DE PRCTICAS
goto, es saltar y goto paso4 es saltar a la etiqueta paso4. En esta pequea vuelta estoy decrementando cnt3 hasta que se haga cero. Cuando cnt3 llegue a 0, ahora decrementa cnt2 en una unidad, volver a cargar cnt3 y ste se decrementar nuevamente para recin restarle otra unidad a cnt2, y as... hasta que cnt2 se haga cero. Cuando eso ocurra ahora se decrementar cnt1 en una unidad, se cargarnuevamente cnt2 y cnt3, para luego decrementarlos de nuevo, todo esto ocurrir hasta que reg1 se haga igual a cero. Una vez cargado el programa en el PIC, ensamblamos el sig. Diagrama del circuito con el programa funcionando.
15
COMPILACIN DE PRCTICAS
2.4.
Empezamos con el diseo de las libreras que permitirn la comunicacin con los dems dispositivos, (memoria, puertos I/O, y puerto programable). Librera DIRC
void DIRC (ADR) paso1: PORTD=0XE0 paso2: PROGB= SALIDA PORTB= ADR paso3: PORTD=0x60
DIRC
MOVLW 0xE0 MOVWF PORTD MOVLW 0x00 MOVWF TRISB NOP MOVFF ADR,PORTB MOVLW 0x60 MOVWF PORTD RETURN
void PORTOUT (DATO_OUT) PASO1: ADR=8 PASO2: LLAMAR A DIRC PASO3: PORTD=0x21 PASO4: PROGB= SALIDAS PORTB= DATO_OUT
PORTOUT MOVLW 0x08 MOVWF ADR CALL DIRC MOVLW 0x21 MOVWF PORTD MOVLW 0x00 MOVWF TRISB NOP MOVFF DATO_OUT, PORTB RETURN
16
COMPILACIN DE PRCTICAS
void PORTOUT (DATO_OUT) PASO1: ADR=4 PASO2: LLAMAR A DIRC PASO3: PORTD=0x41 PASO4: PROGB= ENTRADAS DATO_IN=PORTB
PORTIN
MOVLW 0x04 MOVWF ADR CALL DIRC MOVLW 0x41 MOVWF PORTD MOVLW 0xFF MOVWF TRISB NOP MOVFF PORTB, DATO_IN RETURN
DATO_IN RDMEM (ADR) PASO1: LLAMAR A DIRC PASO2: PORTD=0x40 PASO3: PROGB= ENTRADAS PASO4: DATO_IN=PORTB
RDMEM CALL DIRC MOVLW 0x40 MOVWF PORTD MOVLW 0xFF MOVWF TRISB NOP MOVFF PORTB, DATO_IN RETURN
17
COMPILACIN DE PRCTICAS
18
COMPILACIN DE PRCTICAS
2.5.
Usando las libreras de la prctica anterior se diseo un programa para contar de forma ascendente/descendente dependiendo del valor a la entrada.
PASO1: CUENTA=0 PASO2: DATO_IN= PORTIN PASO3: VERIFICAR EL BIT 0 DE DATO_IN SI ES 1 IR A PASO4 SI ES 0 IR A PASO6 PASO4: CUENTA= CUENTA-1 PASO5: IR AL PASO7 PASO6: CUENTA= CUENTA+1 PASO7: PORTOUT (CUENTA) PASO8: LLAMAR A RETARDO PASO9: IR AL PASO2
STEP2
CLRF CUENTA CALL PORTIN BTFSC DATO_IN, 0x00 GOTO STEP4 GOTO STEP6 DECF CUENTA, 1 GOTO STEP7 INCF CUENTA, 1 MOVFF CUENTA, DATO_OUT CALL PORTOUT CALL RETARDO GOTO STEP2
19
COMPILACIN DE PRCTICAS
Se usar el mismo circuito de la practica anterior para implementar el programa anteriormente diseado.
20
COMPILACIN DE PRCTICAS
2.6.
Usando las libreras de la prctica anterior se diseo un programa para codificar un mensaje a la entrada y decodificar el mismo mensaje a la salida.
PASO1: KEY=0x06 MSG_1=0x12 PASO2: MSG= PORTIN PASO3: MSG_COD=MSG XOR KEY XOR MSG_1 PASO4: PORTOUT= MSG_COD PASO5: LLAMAR A RETARDO PASO6: MSG_DECOD=MSG_COD XOR MSG_1 XOR KEY PASO7: MSG_1=MSG_COD PASO8: PORTOUT=MSG_DECOD PASO9: LLAMAR A RETARDO PASO10: IR A PASO2 MOVLW 0x06 MOVWF KEY MOVLW 0x12 MOVWF MSG_1 STEP2 CALL PORTIN MOVFF DATO_IN, MSG MOVF KEY, 0 XORWF MSG, 0 XORWF MSG_1, 0 MOVWF MSG_COD MOVFF MSG_COD, DATO_OUT CALL PORTOUT CALL RETARDO MOVF MSG_1,0 XORWF MSG_COD,0 XORWF KEY,0 MOVWF MSG_DECOD MOVFF MSG_COD, MSG_1 MOVFF MSG_DECOD, DATO_OUT CALL PORTOUT CALL RETARDO GOTO STEP2
21
COMPILACIN DE PRCTICAS
Se usar el mismo circuito de la prctica anterior para implementar el programa anteriormente diseado.
22
COMPILACIN DE PRCTICAS
2.7.
Acceso a Memoria
Usando las libreras de la prctica anterior y agregando las siguientes libreras para usar el puerto programable se diseo un programa para acceder a la memoria y mostrar su contenido por el puerto de salida.
void PORTCTRL (void) PASO1:ADR=3 PASO2: LLAMAR A DIR PASO3: PORTD=0x21 PASO4: PORTB=0x81 PASO5: NO OPERACIN PASO6: REGRESAR MOVLW 0x03 MOVWF ADR CALL DIR MOVLW 0x21 MOVWF PORTD MOVLW 0x81 MOVWF PORTB NOP RETURN
void PUERTOA (DATO_OUT) PASO1: ADR=0 PASO2: LLAMAR A DIR PASO3: PORTD=0x21 PASO4: PORTB=DATO_OUT PASO5: REGRESAR CLRF ADR CALL DIR MOVLW 0x21 MOVWF PORTD MOVFF DATO_OUT, PORTB RETURN
void PUERTOB (DATO_OUT) PASO1: ADR=1 PASO2: LLAMAR A DIR PASO3: PORTD=0x21 PASO4: PORTB=DATO_OUT PASO5: REGRESAR SETF ADR CALL DIR MOVLW 0x21 MOVWF PORTD MOVFF DATO_OUT, PORTB RETURN
23
COMPILACIN DE PRCTICAS
PASO1: ADR=0x02 PASO2: LLAMAR A DIR PASO3: DIREC=0? NO IR A PASO 10 SI IR A PASO 4 PASO4: PORTD=0x21 PASO5: INTERCAMBIAR NIBBLE DATO_OUT PASO6: DATO_OUT =DATO_OUT AND FO PASO7: PORTB= DATO_OUT PASO8: LIMPIAR DATO_IN PASO9: IR A PASO 13 PASO10: PORTD= 0x41 PASO11: DATO_IN=PORTB PASO12: DATO_IN=DATO_IN AND 0F PASO13: REGRESA DATO_IN PUERTOC (DATO_OUT, DIREC) MOVLW 0x02 MOVWF DIR CALL DIR MOVLW 0x00 CPFSEQ DIREC GOTO PASO 4 GOTO PASO10 PASO4 MOVLW 0x21 MOVWF PORTD SWAPF DATO_OUT MOVLW 0XFO ANDLW DATO_OUT MOVWF DATO_OUT MOVFF DATO_OUT, PORTB CLRF DATO_IN GOTO STP13 STP10 MOVLW 0x41 MOVWF PORTD MOVFF PORTB, DATO_IN MOVLW 0x0F ANDLW DATO_IN MOVWF DATO_IN STP13 NOP RETURN
24
COMPILACIN DE PRCTICAS
(TECLA, DEC_COL) TECLADO (DEC_FILA) RRNCF DEC_FILA CLRF DIREC MOVFF DEC_FILA, DATO_OUT CALL PUERTOC SETF DIREC CALL PUERTOC MOVFF DATO_IN, DEC_COL MOVLW 0x0F CPFSEQ DEC_COL GOTO STP1 GOTO STP5 CLRF TECLA RRCF DEC_COL BNC STP3 INCF TECLA, 1 GOTO STP2 RLCF DEC_FILA BNC STP6 MOVLW 0x04 ADDWF TECLA, 1 GOTO STP3 SETF DEC_COL NOP RETURN
STP1 STP2
STP3
STP6 STP5
25
COMPILACIN DE PRCTICAS
Disear un programa que envi por el puerto de salida (PORTOUT) una cuanta ascendente hasta 0x0F para leer el contenido de las localidades de la memoria.
PASO1: ADR=0x00 PASO2: PORTOUT= RDMEM (ADR) PASO3: LLAMAR A RETARDO PASO4: ADR= ADR + 1 PASO5: ADR>F? NO IR A PASO 1 SI IR A PASO 2 PASO1 CLRF ADR PASO2 CALL RDMEM MOVFF DATO_IN, DATO_OUT CALL PORTOUT CALL RETARDO INCF ADR, 1 MOVLW 0x0F CPFSGT ADR GOTO PASO2 GOTO PASO1
Disear un programa que envi por el puerto de salida (PUERTOA) una cuanta ascendente hasta 0x0F para leer el contenido de las localidades de la memoria.
PASO1: ADR=0x00 PASO2: PUERTOA= RDMEM (ADR) PASO3: LLAMAR A RETARDO PASO4: ADR= ADR + 1 PASO5: ADR>F? NO IR A PASO 1 SI IR A PASO 2 PASO1 CLRF ADR PASO2 CALL RDMEM MOVFF DATO_IN, DATO_OUT CALL PUERTOA CALL RETARDO INCF ADR, 1 MOVLW 0x0F CPFSGT ADR GOTO PASO2 GOTO PASO1
26
COMPILACIN DE PRCTICAS
Al mismo circuito de la prctica anterior se le conectara el circuito integrado PPI (Interfaz Perifrica programable) para implementar el segundo programa anteriormente diseado.
27
COMPILACIN DE PRCTICAS
2.8. Acceso
a Memoria ascendente/descendente
Usando las libreras de la prctica anterior se diseo un programa para acceder a la memoria y mostrar su contenido de forma ascendente y ascendente por el puerto de salida (display).
STEP1 CLRF ADR CLRF ADR1 MOVFF ADR, ADR1 STEP2 MOVFF ADR1, ADR CALL RDMEM MOVFF DATO_IN, DATO_OUT CALL PUERTOA CALL RETARDO CALL PORTIN MOVLW 0x00 CPFSEQ DATO_IN GOTO STEP8 GOTO STEP6 STEP6 INCF ADR1, 1 MOVLW 0x0F CPFSGT ADR1 GOTO STEP2 GOTO STEP1 STEP8 MOVLW 0x00 CPFSEQ ADR1 GOTO STEP11 GOTO STEP9 STEP9 MOVLW 0x0F MOVWF ADR1 GOTO STEP2 STEP11 DECF ADR1 GOTO STEP2
28
COMPILACIN DE PRCTICAS
29
COMPILACIN DE PRCTICAS
2.9 .
Teclado Matricial
Usando las libreras de la prctica anterior se diseo un programa en el cual se observe un nmero inicial, y se desplace a la izquierda cuando se presione algn botn del teclado matricial, as el nuevo valor observado en el display ser el presionado.
MOVLW 0x00 MOVWF DATO_DISPA MOVLW 0x01 MOVWF DATO_DISPB STEP3 MOVFF DATO_DISPA, ADR CALL RDMEM MOVFF DATO_IN, DATO_OUT CALL PUERTOA MOVFF DATO_DISPB, ADR CALL RDMEM MOVFF DATO_IN, DATO_OUT CALL PUERTOB STEP2 MOVLW 0x77 MOVWF DEC_FILA CALL TECLADO MOVLW 0x0F CPFSEQ DEC_COL GOTO STEP1 GOTO STEP2 STEP1 CALL RETARDO2 MOVFF DATO_DISPB, DATO_DISPA MOVFF TECLA, DATO_DISPB NOP GOTO STEP3
30
COMPILACIN DE PRCTICAS
31
COMPILACIN DE PRCTICAS
3. CONCLUSIONES
3.1.
Se diseo un circuito con el cual se pueden observan 8 mensajes diferentes, 4 por memoria, pudiendo seleccionar que memoria y que mensaje se desea leer.
3.2.
Se diseo un circuito con el cual se pueden observan 16 mensajes diferentes, 4 por memoria, pudiendo seleccionar que memoria y que mensaje se desea leer, aprovechando el mismo bus de datos.
3.3.
Esta rutina de retardo, aunque parezca larga nos permite ver como se enciende y se apaga el LED, de lo contrario no podramos notar la diferencia, o lo veramos apagado o encendido, ya que la velocidad es demasiado alta si estamos trabajando con un XT de 4 MHz. Asimismo, aprendimos que utilizar rutinas hace que el cdigo sea ms pequeo y entendible.
3.4.
Se diseo un circuito con el cual se puede controlar varios puertos de entrada y salida, as como la lectura de una memoria.
3.5.
Se dise un programa en el cual se implemento el us del puerto de entrada y salida para realizar la cuenta ascendente/descendente.
32
COMPILACIN DE PRCTICAS
3.6.
Se dise un programa en el cual se implemento el us del puerto de entrada y salida, introduciendo un mensaje, este se codifica lo muestra en pantalla y lo decodifica as a la salida obtenemos el mensaje original.
3.7.
Acceso a Memoria
Se dise un programa en el cual se implemento el us del puerto de entrada y salida para acceder a la memoria y visualizar el contenido de la misma.
3.8.
Se dise un programa en el cual se implemento el us del puerto de entrada y salida para acceder a la memoria y visualizar el contenido de la misma de forma ascendente y descendente.
3.9.
Teclado Matricial
Se dise un programa en el cual se implemento el us del puerto de entrada y salida del puerto programable y a la entrada del mismo un teclado matricial.
33