Professional Documents
Culture Documents
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
Memoria Práctica 2
1. Esquema eléctrico
0
5V
27 pF C 1
4 MH z
C 27 pF
U 1
10k 10k 10k 10k 10k 10k 10k 10k
15
16
5
P IC 1 6 F 8 4
5V
O SC 1
O SC 2
Vss
13
12 R B 7 1k
11 R B 6 3
10 R B 5 R A 4 /T O C K I 2
9 R B 4 R A3 1
8 R B 3 R A2 18
7 R B 2 R A1 17
M C L R /V p p
6 R B 1 R A0
R B 0
VD D
14
5V
E0 E1 E2 E3 E4 E5 E6 E7
330 330 330 330 330 330 330 330
0 0 0 0 0 0 0 0
Pág. 1
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
2. Diagrama de Flujo
SED07392
PORTA: SALIDA
PORTB:ENTRADA
Obtener OP1, OP2
0 op1? 1 Suma
Resta
Result>Port A
Pág. 2
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
Obtener OP1 Y OP2
PORTB> OP1
PORTB>OP2
OP1 & Oxf> OP1
OP2 & Ox70> OP2
RETURN
Pág. 3
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
Suma
OP2> W
OP1+OP2>w
W>RS
W+RS>RS
RETURN
Pág. 4
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
RESTA
OP2> W
OP1OP2>W
W>RS
W+RS>RS
W+RS>RS
RETURN
Pág. 5
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
3. Implementación del programa autocomentado.
;************************************************************************************
; Nombre: SED073902.asm
;
; Descripción: Operaciones Básicas con el PIC16F84
;
; Objetivo: Leer un código de operación "OP" (RB7) y dos operandos: OP1 (RB 0:3)
; y OP2 (RB 4:6). Si el código de operación OP es 0, se efectuará la operación
; 3*(OP1 - OP2), si el código de operación OP es 1, se efectuará la operación
; 2*(OP1+OP2)
;
; Fechas:
; Creación: 29/10/2007
; Última modificación: 19/09/2007
; Revisión:
;
; Autores: Pablo García Pita
; Manuel Jesús Bravo García
;************************************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; frec. = 4000 KHz. ; Configuración del grabador.
LIST P=16F84A ;Procesador utlizado.
INCLUDE <P16F84A.INC> ;Definición de las instrucciones.
; ZONA DE CÓDIGO ********************************************************************
Principal
movlw b'00001111' ; Cargamos máscara a aplicar a OP2 en W
movwf OP1 ; y la llevamos a su registro.
movlw b'01110000' ; Cargamos máscara a aplicar a OP2 en W
movwf OP2 ; y la llevamos a su registro.
movf PORTB,0 ; Cargamos el acumulador con el contenido de la Puerta B (Contiene Cód. Operación, Operandos 1
; y 2)
andwf OP1,1 ; Aplicamos la máscara a OP1 y dejamos el resultado en OP1. Ya tenemos el valor de OP1.
andwf OP2,1 ; Aplicamos a OP2 su máscara y dejamos el resultado en OP2. Ya tenemos el valor de OP2.
swapf OP2,1 ; Intercambiamos de posición los nibbles de OP2 para aplicarle correctamente la máscara.
btfsc PORTB,7 ; Verificamos el valor del código de operación que estará en el bit 7 del registro de trabajo.
; Si este bit tiene un 0 salta a Opcion0. Si tiene un 1 salta a Opcion1.
goto Opcion1
goto Opcion0
Pág. 6
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
Opcion0 ;3*(OP1-OP2)
;Resta Op2 a Op1. Si el resultado es negativo se indica con un 1 en el bit 5 del resultado.
;Si el resultado es positivo se indica con un 0 en el bit 5 del resultado.
bcf STATUS,0
bcf STATUS,1
movf OP2,0 ;Cargamos en W, el valor de op2
subwf OP1,0 ;HACEMOS OP1-OP2. (Restando a lo que hay en OP1 el contenido de W:OP2).Resultado de esta
;operación queda en W
movwf RS ;Llevamos el resultado de la resta a RES.
addwf RS,1 ; Para sumarlo de nuevo con W y de nuevo dejar el resultado en RES.(a+a=2a)
addwf RS,1 ;Sumamos a RES:2a el contenido de W (a). (2a+a=3a)
btfsc STATUS,0 ;Si el bit de Acarreo del registro de estado está 0, el resultado era positivo. Si estaba a
;uno era negativo.
;bcf RS,4 ;El resultado fue positivo, por eso ponemos un 0 en el bit 4 de RES,
;bsf RS,4 ;El resultado fue negativo, lo cual se indicará con un 1 en el 4 bit.
goto Resultado
Opcion1 ;2(OP1+OP2)
movf OP2,0 ;Cargamos en W, el valor de op2
addwf OP1,0 ;Hacemos OP1+OP2. (Sumamos a lo que hay en OP1 el contenido de W:OP2).El resultado de la
;operación queda en W.
movwf RS ;Llevamos el resultado de la suma a RES
addwf RS,1 ;Sumamos a RES el contenido de W. (a+a=2a)
;btfss STATUS,3 ;Comprobamos si hubo acarreo en el bit 3. Si lo hubo habrá un uno en ese bit.
;bcf RS,4 ;No hubo acarreo. Por lo que ponemos un 0 en el bit 4 de RS
;bsf RS,4 ;Sí hubo acarreo. Por lo que ponemos un 1 en el bit de accareo.
Resultado
movf RS,0
movwf PORTA
goto Principal
END
Pág. 7
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
4. Dificultades encontradas y soluciones Aportadas
No sabíamos como hacer la separación de los distintos operadores y del código de operación.
El profesor nos indicó que debíamos aplicar máscaras con la operación AND a la entrada de la puerta
B. Además debíamos usar la instrucción swap (que intercambian los nibbles de un registro ) para
poder obtener operador 2.
Ejemplo:
Pág. 8
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
5. Cuestiones:
Es posible la modificación del bit Zero del Registro de Estado. Pues puede haber una
operación cuyo resultado en el acumulador sea 0:
El bit Z se pone a uno cuando hay una operación en el registro de trabajo cuyo resultado es 0.
En la página 8 del datasheet podemos encontrar igualmente el funcionamiento de este bit.
Pág. 9
Ingeniero Técnico en
Telecomunicación
Universidad Politécnica de Cartagena Especialidad Telemática
Departamento de Electrónica, Tecnología de Computadoras y Proyectos.
Sistemas Electrónicos Digitales.
Alumnos: Pablo García Pita (pablogpita@gmail.com) Grupo XX Práctica Y. Curso 07/08
Manuel Jesús Bravo García (manueljesusbg@gmail.com)
4. Calcule el tiempo que tarda el PIC en realizar la operación Suma y la operación
Resta: calcule desde la carga del valor de la puerta B en el Acumulador hasta la
presentación del resultado en la puerta A.
Op0 (Resta):
Tipo 1: 13 instrucciones
Tipo 2: 3 instrucciones que equivalen a 6 instrucciones tipo1.
Un ciclo de reloj son 250 ns y un ciclo de instrucción Tipo 1 son 1000ns = 1us.
Op1(Suma)
Tipo 1: 11 instrucciones
Tipo 2: 1 instrucciones que equivale a 2 instrucciones tipo1.
Un ciclo de reloj son 250 ns y un ciclo de instrucción Tipo 1 son 1000ns = 1us.
Pág. 10