0% encontró este documento útil (0 votos)
204 vistas12 páginas

MICROCOMPUTADORAS

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 12

LABORATORIO DE MICROCOMPUTADORAS

OBJETIVO:

Aprender y aplicar los conocimientos de la teoría y el funcionamiento de los microcontroladores para realizar
aplicaciones industriales y científicas en tiempo real

UBICACIÓN EN EL PLAN DE ESTUDIOS de la carrera de Ingeniería en Computación:

Bibliografía:

TOCCI, Ronald J. y Ambrosio, Frank J. Prentice Hall, 1993


Microprocessors and Microcomputers Hardware and CORTES, Ramón
Software Programación de microcomputadores
6a. edición New Jersey Prentice Hall, 2002 México Limusa, 1989

LIPOVSKI, G. J. PEATMAN, John


16 and 32 bits microcomputers interfacing Microcomputer base design
U.S.A. Prentice Hall, 1990. USA Mc. Graw Hill, 1977

BREY, BARRY B. VALVANO, Jonathan W.


The Intel Microprocessors 8086/8088, 80186/80188, 80286, Introduction to Embedded Microcomputer Systems:
80386, 80486, Pentium, and Pentium Pro Processor Motorola 6811/6812 Simulations
Architecture, Programming, and Inter- facing USA Thomson, 2003
6a. edición New Jersey Merril, 2002.
Manual de prácticas del laboratorio de microcomputadoras
BYRD, Joseph S.; Pettus, Robert O. Rubén Anaya García FI UNAM
Microcomputer system
New Jersey Datasheet PIC16F877A
Elementos necesarios para el desarrollo de las prácticas:

Manual de prácticas del laboratorio de microcomputadoras (no es necesario imprimirlo, solo estudiarlo!)
Set de instrucciones impreso
Tarjeta de desarrollo basada en el microcontrolador PIC16F877a (se les prestará en el laboratorio)

Software:

MPLAB (hasta la versión 9.83)


CCS C Compiler (para las prácticas en lenguaje C)
PIC Downloader (para descargar el programa al microcontrolador)

Prácticas y proyecto a realizar:

Practica No. 1 Introducción General a un microcontrolador.


Practica No. 2 Sistema mínimo de microcontrolador y puertos paralelos I.
Practica No. 3 Puertos Paralelos II (Control de acciones).
Practica No. 4 Puertos Paralelos III (Control de motores de CD).
Practica No. 5 Puertos Paralelos IV (Sensores ópticos).
Practica No. 6 Convertidor Analógico Digital.
Practica No. 7 Interfaz de Comunicación Serial Asíncrona (SCI).
Practica No. 8 Programación lenguaje C.
Practica No. 9 Programación lenguaje C.
Proyecto Final

Esctructura de las clases:

*20 minutos de presentación

*Realización de los ejercicios de la práctica, preguntas y orientación por parte del profesor

Las prácticas se constituyen de varios ejercicios que los alumnos, organizados en equipos de 2 o 3 estudiantes realizarán
en el horario de clase, si no terminan los ejercicios el día establecido en el cronograma de actividades los podrán realizar
la siguiente clase bajo el criterio de un punto menos por cada clase atrasada, se considerará como práctica entregada
cuando se demuestre el correcto funcionamiento de todos los ejercicios de la práctica, la calificación otorgada será a
criterio del profesor tomando en cuenta que tan bien se han comprendido y aplicado y explicados los conceptos de la
teoría de los microcontroladores.
Los ejercicios estarán basados en el manual de prácticas del laboratorio de microcomputadoras.

Criterios de evaluación:

La calificación final correspondiente a cada alumno será la siguiente:


60 % correspondientes a las calificaciones de las prácticas
40% calificación del proyecto final
Asistencia obligatoria (80% del curso), tolerancia de entrada 15 minutos
Microprocesador

Es un dispositivo de propósito general orientado al procesamiento de información


Tiene generalmente una elevada potencia de cálculo y velocidad de procesamiento
Puede manejar gran cantidad de memoria
Compuesto por una Unidad de Control y una ALU y registros internos
Para que pueda funcionar requiere de memorias RAM y ROM externas, además de dispositivos electrónicos adicionales

Microcontrolador

Contiene un procesador como uno de sus elementos constitutivos.


Velocidad de operación lenta comparada con el microprocesador
Dispositivos de aplicación específica
Incluye todos los elementos para implementar una microcomputadora, RAM, ROM, periféricos como temporizadores,
CAD, interfaces de comunicación USART, SPI, I 2C
Tipos de arquitecturas en un Microcontrolador:

Arquitectura Von Neumann

Arquitectura Harvard

Ejecución de las instrucciones en el procesador:

La unidad de control sigue la siguiente secuencia al procesar las instrucciones:


1. busca la instrucción (FETCH)
2. decodifica la instrucción (DECODE)
3. ejecuta la instrucción (EXECUTE)

Ejecución secuencial:

Ejecución pipeline:
Para nuestro curso usaremos el PIC16F877A, algunas de las características más importantes que tiene el
microcontrolador son:

• 8K de memoria FLASH
• 368 bytes de memoria RAM
• 255 bytes de memoria EEPROM
• 35 instrucciones
• 5 puertos paralelos (A, B, C, D, E)
• Convertidor Analógico Digital
• Comunicación Serie Asíncrona
• Comunicación Serie Síncrona (paralela, I2C)
• Tres módulos temporizadores
• Dos módulos CCP que pueden operar como Comparación, Captura o PWM
• 14 posibles fuentes de interrupción

Modos de direccionamiento

Direccionamiento inmediato:

El dato utilizado por la instrucción se codifica al mismo tiempo que la propia instrucción. En este caso, al dato se le
denomina literal o constante numérica.

MOVLW 0x05 ; W  0x05 Carga la literal 0x05 en el registro de trabajo (W)

ADDLW 0x1A ; W  W + 0x1A Suma W mas la literal 0x1A

Direccionamiento directo: la memoria de datos (RAM)

La memoria interna se direcciona en forma directa por medio de los bits “ff” contenidos en las instrucciones que operan
sobre registros. De esta manera se puede direccionar cualquier posición desde la 00h a la FFh.

La dirección directa está contenida inmediatamente después del mnemónico de la instrucción:

AADWF 0x25,0 ; W  W + (0x25) Suma W mas el contenido de la localidad 0x25, deja el resultado en W

SUBWF 0x2A,1 ; (0x2A)  (0x2A) – W Resta de la localidad 0x2a el contenido de W, deja el resultado en 0x2A

Direccionamiento indirecto, mediante los registros FSR e INDF

El registro FSR sirve como puntero para direccionamiento indirecto además de servir para seleccionar el banco activo. La
posición 00 del mapa de RAM es la llamada dirección indirecta.
Si en cualquier instrucción se opera con la dirección 00, en realidad se estará operando con la dirección a donde apunte
el contenido del FSR.

Por ejemplo si el FSR contiene el valor 1Ah, una instrucción que opere sobre la dirección 0, en realidad lo hará sobre la
dirección 1Ah. Puede decirse que la posición 1Ah de memoria fue direccionada en forma indirecta a través del puntero
FSR.

Ejemplo :

Programa simple que borra de las localidades 20h a 2Fh usando direccionamiento indirecto

MOVLW 0x20 ;initialize pointer
MOVWF FSR ;to RAM
NEXT CLRF INDF ;clear INDF register
INCF FSR,F ;inc pointer
BTFSS FSR,4 ;all done?
GOTO NEXT ;no clear next
CONTINUE
: ;yes continue pp 31 del datasheet

El direccionamiento indirecto es muy útil para procesar posiciones consecutivas de memoria.

Salto indexado.
Programa que implementa una tabla de verdad utilizando direccionamiento indexado (salto indexado).
El direccionamiento indexado permite resolver problemas que se puedan representar mediante tablas. Se basa en la
utilización de de la instrucción ADDWF PCL,F , de este modo la dirección de salto se consigue sumando al PCL
(contador de programa parte baja) el valor de desplazamiento contenido de W.

El PC es el contador de programa que contiene la dirección de la próxima instrucción a ser ejecutada, se incrementa
secuencialmente un una unidad o se carga con la dirección de una etiqueta (mediante GOTO por ejemplo), tiene un
tamaño de 13 bits por lo que ocupa dos localidades de memoria RAM (donde podemos leer su valor o modificarlo si
nuestro programa lo requiere)

PC :

PCL(02h) : parte baja de PC, se puede modificar como cualquier otro registro

PCLATH(0Ah) : parte alta del PC, generalmente no se puede modificar

...
LOOP
MOVF PORTA,W ; W = (PORTA)
ANDLW 0X03 ; W = W & B'00000011' , solo necesito los 2 LSB del puerto A
ADDWF PCL,F ; PCL = W
GOTO CONFIGURACION0 ; PCL + 0 ; normalmente el PC apunta a esta siguiente instrucción
GOTO CONFIGURACION1 ; PCL + 1 ; pero puedo alterar el contenido para hacerlo saltar
GOTO CONFIGURACION2 ; PCL + 2 ; a otras instrucciones, como estas.
GOTO CONFIGURACION3 ; PCL + 3 con 2 bits tengo 4 posibles combinaciones
CONFIGURACION0
MOVLW B'10011011' ; caso 0 si en la entrada tengo un 00, la salida será b'10011011'
GOTO ENVIA ; en el puerto paralelo B
CONFIGURACION1
MOVLW B'10111000'
GOTO ENVIA
CONFIGURACION2
MOVLW B'01010101'
GOTO ENVIA
CONFIGURACION3
MOVLW B'10101011'
ENVIA
MOVWF PORTB ; todas las configuraciones llegan a este punto de mi programa
GOTO LOOP
...

Operaciones útiles:
Comparación de registros
Comprobar que el contenido de un registro vale 0

MOVF REGISTRO,F ; (REGISTRO)  (REGISTRO)


BTFSS STATUS,Z ; ¿ (REGISTRO) = 0 ? , ¿ Z = 1 ?
GOTO NO_ES_CERO ; NO, VE A NO_ES_CERO
ES_CERO ; SI
.
.
.
NO_ES_CERO
.
.
.

Comprobar la igualdad entre el contenido de dos registros

MOVF REGISTRO1,W ; W  (REGISTRO1)


SUBF REGISTRO2,W ; (REGISTRO2) - (REGISTRO1)  W
BTFSS STATUS,Z ; ¿ (REGISTRO2) = (REGISTRO1) ? , ¿ Z = 1 ?
GOTO NO_IGUALES ; NO, VE A NO_IGUALES
IGULAES ; SI
.
.
.
NO_IGULAES
.
.
.
Comprobar que lo que contiene un registro en mayor o menor que lo que contiene otro registro
Sea:
(REGISTRO_A) = A
(REGISTRO_B) = B

( A - B) Resultado C Z
A > B Positivo 1 0
A = B Cero 1 1
A < B Negativo 0 0

Ejemplo:

MOVF REGISTRO_B,W ;
SUBWF REGISTRO_A,W ; (REGISTRO_A) - (REGISTRO_B) --> W
BTFSS STATUS,C ; ¿ A >= B ? , ¿ C = 1 ?
GOTO MENOR ; NO, VE A ETIQUETA MENOR
MAYOR_O_IGUAL ; SI
.
.
.
MENOR
.
.
.

MOVF REGISTRO_B,W ; W  (REGISTRO_B)


SUBWF REGISTRO_A,W ; (REGISTRO_A) - (REGISTRO_B)  W
BTFSS STATUS,C ; ¿ A >= B ? , ¿ C = 1 ?
GOTO MENOR_O_IGUAL ; NO, VE A ETIQUETA MENOR_O_IGUAL
MAYOR_O_IGUAL BTFSC STATUS,Z ; SI, AHORA PRUEBA ¿ A > B ? , ¿ Z = 0 ?
GOTO MENOR_O_IGUAL ; NO, VE A MENOR_O_IGUAL
MAYOR . ; SI, A > B
.
.
MENOR_O_IGUAL
.
.
Formatos en los que se puede representar un número

TIPO SINTAXIS EJEMPLO


Decimal D’<cantidad>’ MOVLW D’146’
d’< cantidad >’ MOVLW d’146’
. < cantidad > MOVLW .146
<cantidad> MOVLW 25
Hexadecimal H’< cantidad >’ MOVLW H’2F’
h’< cantidad >’ MOVLW h’2F’
0x< cantidad > MOVLW 0x2F
0X< cantidad > MOVLW 0X2F
MOVLW 2FH
<cantidad>H
MOVLW 2Fh
<cantidad>h
Octal O’<cantidad>’ MOVLW O’527’
o’<cantidad>’ MOVLW o’584’
Binario B’<cantidad>’ MOVLW B’00110110’
b’<cantidad>’ MOVLW b’11010111’
ASCII A’<caracter>’ MOVLW A’i’
a’<caracter>’ MOVLW a’i’
‘<caracter>’ MOVLW ‘i’
Cadena de caracteres (string) DT “<cadena>” DT “Hola a todos”

También podría gustarte