Vous êtes sur la page 1sur 13

Universidad Autnoma Metropolitana

Unidad Iztapalapa

Divisin de Ciencias Bsicas e Ingeniera

Secuenciadores y Microprocesadores
Profesor Oscar vila Meja

Prctica 6
Lenin Lpez Manzano

Eduardo Benjamn Aguilar Arce

Alexis Valle Garay

Mxico D.F. a 10 de Marzo de 2017

Objetivo
Aplicar los conocimientos adquiridos en clase sobre las instrucciones de
salto para crear un controlador del depsito de lquido de un tanque.
Aplicar los conocimientos adquiridos en clase sobre las instrucciones de
salto para crear 2 programas con las instrucciones estudiadas a fin de
comprender el funcionamiento de dichas instrucciones

Introduccin

Los programas que hemos desarrollado hasta ahora han sido ejecutados en forma
lineal, es decir, con una instruccin secuencialmente a continuacin de otra. Sin
embargo, la mayora de los programas constan de varios ciclos en los que una
serie de pasos se repite hasta alcanzar un requisito especfico y varias pruebas
para determinar qu accin se realiza de entre varias posibles.
Requisitos como ste implican la transferencia de control a la direccin de una
instruccin que no sigue de inmediato de la que se est ejecutando actualmente.
En el lenguaje ensamblador existen las instrucciones de salto, las cuales producen
un cambio en la ejecucin del programa pasando a una nueva posicin, no
secuencial. La direccin del salto se representa con una etiqueta.
El lenguaje ensamblador implementa una representacin simblica de los cdigos
de mquina binarios y otras constantes necesarias para programar
una arquitectura dada de CPU y constituye la representacin ms directa
del cdigo mquina especfico para cada arquitectura legible por un programador.
Un display de 7 segmentos no es otra cosa que 7 leds conectados entre s con su
nodo o su ctodo en comn. Dependiendo del tipo de display ser la manera en
que se enciendan sus segmentos, un display de ctodo comn requiere un 1
lgico para encender mientras que uno de ctodo comn un 0 as que
dependiendo del display que se utilice cambiar la rutina encargada de
controlarlo, pero en cualquier caso al momento de cambiar el tipo de display solo
debemos cambiar los ceros por unos y viceversa.

PROBLEMA 1
Desarrollo
Disear un programa para controlar el nivel del depsito de lquido de la siguiente
figura:

Se implementaron las instrucciones de salto del PIC16F84 para desarrollar un


programa que controle un circuito con las siguientes especificaciones:

Tres sondas detectoras: SV, Sonda de Vaco (RA0); SLL, Sonda de Llenado
(RA1); SR, Sonda de Rebose (RA2).

Dos bombas de agua: B1 (RB5), B2 (RB6).

Cinco indicadores: Vaco (RBO); Llenndose (RBI); Lleno (RB2); Rebose


(RB3); Alarma (RB4).

Sondas detectoras
Sonda de vaco RA0
Sonda de llenado RA1
Sonda de rebose RA2

Indicadores
Vaco RB0
Llenndose RB1
Lleno RB2
Rebose RB3
Alarma RB4
Bomba 1 RB5
Bomba 2 RB6

Su funcionamiento es:
Cuando ninguna de las sondas est mojada se entiende que el depsito est
vaco y se accionaran las dos bombas. El indicador "Vaco" se iluminar.
Cuando el nivel del lquido toque la sonda de vaco "SV" Seguir llenndose
el depsito con las dos bombas. El indicador "Llenndose" se ilumina.
Cuando el nivel del lquido toque la Sonda de llenado "SLL" Se para la
bomba B2, quedando la bomba B1 activada en modo mantenimiento. El
indicador "Lleno" se ilumina.
Si el nivel del lquido moja la sonda de rebose "SR" se apaga tambin la
bomba B1, quedando las dos bombas fuera de servicio. El indicador
"Rebose" Se enciende.
Cuando se produce un fallo o mal funcionamiento en las sondas de entrada
(por ejemplo que se active la sonda de rebose y no la de vaco) se paran las
dos bombas. El indicador 'Alarma" se ilumina.

En base al funcionamiento anterior, se obtuvo la siguiente tabla de verdad:

Entradas Salidas Estado


RA RA RA RB RB RB RB RB RB RB
2 1 0 6 5 4 3 2 1 0
0 0 0 1 1 0 0 0 0 1 Vaco
0 0 1 1 1 0 0 0 1 0 Llenndose
0 1 0 0 0 1 0 0 0 0 Alarma
0 1 1 0 1 0 0 1 0 0 Lleno
1 0 0 0 0 1 0 0 0 0 Alarma
1 0 1 0 0 1 0 0 0 0 Alarma
1 1 0 0 0 1 0 0 0 0 Alarma
1 1 1 0 0 0 1 0 0 0 Rebose

Cdigo utilizado

;ZONADEDATOS.......... ;ConfiguracindelPIC16F84A

LIST P=16F84A

INCLUDE<P16F84A.INC> ;EtiquetadelPIC16F84A

__CONFIG_CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC

;ZONADECDIGOS..........

ORG 0 ;Comienzaenladireccincero

Inicio

clrf PORTB ;Debesercero


bsf STATUS,RP0 ;Poneaunoelbit5deSTATUS

clrf TRISB ;DefinimosBcomosalidas

movlw b'00011111'

movwf TRISA ;DefinimosAcomoentradas

bcf STATUS,RP0 ;Poneaceroelbit5deSTATUS

Principal

movf PORTA,W ;Lecturadelassondas

andlw b'00000111' ;Mscaraparaobtenerelvalordelassondas

addwf PCL,F ;SaltoacadaunodelossiguientesEstado

goto Estado0 ;IraEstado0


goto Estado1 ;IraEstado1
goto Estado2 ;IraEstado2
goto Estado3 ;IraEstado3
goto Estado4 ;IraEstado4
goto Estado5 ;IraEstado5
goto Estado6 ;IraEstado6
goto Estado7 ;IraEstado7

Estado0 ;PasaaEstado0Vaco
movlw b'01100001'
goto ActivaSalida

Estado1 ;PasaaEstado2Llenndose
movlw b'01100010'
goto ActivaSalida

Estado2 ;PasaaEstado2Alarma
movlw b'00010000'
goto ActivaSalida

Estado3 ;PasaaEstado3Lleno
movlw b'00100100'
goto ActivaSalida

Estado4 ;PasaaEstado4Alarma
movlw b'00010000'
goto ActivaSalida

Estado5 ;PasaaEstado5Alarma
movlw b'00010000'
goto ActivaSalida
Estado6 ;PasaaEstado6Alarma
movlw b'00010000'
goto ActivaSalida

Estado7 ;PasaaEstado7Rebose
movlw b'00001000'
ActivaSalida

movwf PORTB ;Resultadosevisualizaporelpuertodesalida

goto Principal ;Segeneraunbucle

END

RESULTADOS

Figura1. Entrada 111, Estado 0001000


(Rebose)
Figura2. Entrada 011, Estado 00100100
(Lleno)

PROBLEMA 2
Desarrollo
Display01
Disear un programa para que por el por el display de 7 segmentos conectado al
Puerto B se visualice una de las 26 letras del alfabeto internacional: de la "A" a la
"Z".

Cdigo utilizado

;ZONADEDATOS.......... ;ConfiguracindelPIC16F84A
LIST P=16F84A

INCLUDE<P16F84A.INC> ;EtiquetadelPIC16F84A

__CONFIG_CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC

;ZONADECDIGOS..........

ORG 0 ;Comienzaenladireccincero

Inicio

clrf PORTB ;Debesercero

bsf STATUS,RP0 ;Poneaunoelbit5deSTATUS

clrf TRISB ;DefinimosBcomosalidas

movlw b'00011111'

movwf TRISA ;DefinimosAcomoentradas

bcf STATUS,RP0 ;Poneaceroelbit5deSTATUS

Principal
movf PORTA,W ;Leelosswitches.

call Letra_a_7Segmentos ;Llamaa7Segmentos.

movwf PORTB ;Resultadosevisualizaenlasalida.

gotoPrincipal ;Regresaalprincipal

Letra_a_7Segmentos
addwf PCL,F

TABLA
DT 77h,7Ch,39h,5Eh,79h,71h,6Fh,76h,19h,1Eh,7Ah,38h,37h
DT 54h,3Fh,73h,67h,50h,6Dh,78h,1Ch,3Eh,1Dh,70h,6Eh,49h
FINTABLA

END

RESULTADOS
Figura3. Entrada 00000, Salida A

Figura4. Entrada 00100, Salida E

Figura5. Entrada 01101, Salida Z

Figura6. Entrada 11111, Salida Decimal


PROBLEMA 3
DESARROLLO
Disear un programa para que por el display conectado al puerto de salida se
visualice un contador descendente que cuenta desde la cantidad leda por el
puerto de entrada hasta cero y vuelve a repetir.

Cdigo
utilizado

;ZONADEDATOS.......... ;ConfiguracindelPIC16F84A

LIST P=16F84A

INCLUDE<P16F84A.INC> ;EtiquetadelPIC16F84A

__CONFIG_CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC

;ZONADECDIGOS..........

ORG 0 ;Comienzaenladireccincero
CBLOCK0X0C
Contador
ENDC

Inicio

bsf STATUS,RP0 ;Poneaunoelbit5deSTATUS

clrf PORTB ;Debesercero

movlw0XFF

movwfPORTA;

bcf STATUS,RP0 ;Poneaceroelbit5deSTATUS

Principal
movf PORTA,W ;Lecturadelosswitches.

movwf Contador ;GuardaelcontenidoentradaenelContador.

movf Contador,F ;Seposicionalabandera.

btfsc STATUS,Z ;SaltasielbitZdeSTATUSescero.

goto DECIMAL ;SiesceropasaalestadoDecimalyse


visualizaelpuntodecimal.
sublw d'9' ;Siesmayora9,siactivaelestadodecimal.

btfss STATUS,C ;SaltasielbitCdeSTATUSesuno.

goto DECIMAL ;Siesunopasaalestadodecimal.


VER
call VERCONTADOR ;LlamaasubrutinaVERCONTADOR.

decfsz Contador,F ;Decrementoalcontador.

goto VER ;Siescerosalta.

call VERCONTADOR ;Visualizaelcero.

clrf PORTB ;Apagaeldisplayduranteunsegundo.

call Retardo_1s ;Llamaalalibrera.

goto Fin ;Serepiteelciclo.

DECIMAL
movlw b'10000000' ;Pasaalestado"DECIMAL"

movwf PORTB

Fin goto Principal

VERCONTADOR
movf Contador,W ;Lecturadelosswitches

call Numero_a_7Segmentos;Llamaalalibrera

movwf PORTB ;Sevisualizaeneldisplay.


call Retardo_1s ;Llamaalalibreria

return

INCLUDE"C:\Users\alexis\Documents\SCM\proyectos/DISPLAY_7S.INC"
INCLUDE"C:\Users\alexis\Documents\SCM\proyectos/RETARDOS.INC"
END

RESULTADOS

Figura7. Valor ingresado 3

Figura8. Primer decremento 2


Figura9. Segundo decremento 1

Figura10. Cuarto decremento 0 (Fin e inicia de


nuevo)

Conclusiones
En conclusin podemos decir que a partir del conocimiento del lenguaje
ensamblador para el PIC16F84A es posible disear cualquier programa con
respuesta a dispositivos en este caso el Display de 7 segmentos y el control de un
depsito de lquido usando la estructuracin adecuada para el desarrollo del
programa.
Al construir la carta ASM o en dado caso su respectiva tabla de verdad de cada
programa fue ms fcil comprender el procedimiento y se puede concluir que es
una herramienta que facilita el diseo de programas en lenguaje ensamblador.

Vous aimerez peut-être aussi