Practica 3 MICROCOMPUTADORAS FI UNAM

7

Click here to load reader

description

MICROCOMPUTADORAS FI UNAM

Transcript of Practica 3 MICROCOMPUTADORAS FI UNAM

  • PRACTICA3

    processor 16f877A ;Indica la versin de

    procesador

    include ;Incluye la librera

    de la versin del procesador

    org 0 ;Carga al vector de RESET la

    direccin de inicio

    goto INICIO

    org 5 ;Direccin de inicio del programa

    del usuario

    INICIO

    CLRF PORTA

    BSF STATUS,RP0 ;Cambia

    la banco 1

    BCF STATUS,RP1

    MOVLW 3FH ;Configura

    puertos A y E como digitales

    MOVWF TRISA

    clrf TRISB

    MOVLW 06H ;Configura el

    puerto A como entrada

    MOVWF ADCON1

    BCF STATUS,RP0 ;Regresa

    al banco cero

    PRINCIPAL: CLRW ;

    BTFSC PORTA,0;

    MOVLW 0FFH ;

    MOVWF PORTB;

    GOTO PRINCIPAL;

    END;

    processor 16f877 ;Indica la

    versin de procesador

    include ;Incluye la

    librera de la versin del procesador

    valor1 equ h'21' ;reserva

    memoria en localidad 0x21

    valor2 equ h'22' ;reserva

    memoria en localidad 0x22

    valor3 equ h'23' ;reserva

    memoria en localidad 0x23

    cte1 equ 20h ;inicializa

    constante en 20h

    cte2 equ 50h ;inicializa

    constante en 50h

    cte3 equ 60h ;inicializa

    constante en 60h

    org 0H

    ;Carga al vector de RESET la

    direccin de inicio

    goto inicio

    org 05H

    ;Direccin de inicio del programa

    del usuario

    inicio:

    CLRF PORTA

  • BSF STATUS,RP0 ;Cambia la

    banco 1

    BCF STATUS,RP1

    MOVLW 06H

    ;Configura puertos A y E como

    digitales

    MOVWF ADCON1

    MOVLW 3FH

    ;Configura el puerto A como

    entrada

    MOVWF TRISA

    MOVLW H'0' ;Se

    configura el puerto B como salida

    MOVWF TRISB

    BCF STATUS,RP0

    ;Regresa al banco cero

    CLRF PORTB

    LEER: ;

    XOR = 1 -> numeros diferentes

    MOVF PORTA, 0

    BTFSC STATUS,Z ;Se

    verifica la bandera Z

    goto apaga ;Si

    PORTA == 00 apaga los leds

    MOVLW H'01'

    ;W=01

    XORWF PORTA, 0

    BTFSC STATUS, Z

    GOTO enciende ;Si

    PORTA == 01 enciende los leds

    MOVLW H'02'

    ;W=02

    XORWF PORTA, 0

    BTFSC STATUS, Z

    GOTO INICIACD ;Si

    PORTA == 02

    MOVLW H'03'

    ;W=03

    XORWF PORTA, 0

    BTFSC STATUS, Z

    GOTO INICIACI ;Si

    PORTA == 03

    MOVLW H'04'

    ;W=04

    XORWF PORTA, 0

    BTFSC STATUS, Z

    GOTO corrimientoMixto ;Si

    PORTA == 04

    GOTO enciendeApaga

    ;Si PORTA == 05 o cualquier valor

    apaga:

    CLRF PORTB

    GOTO LEER

    enciende:

    MOVLW H'FF'

  • MOVWF PORTB

    GOTO LEER

    INICIACD:

    bcf STATUS,C ;si carry es

    1, limpia la bandera del carry

    MOVLW H'80'

    MOVWF PORTB

    CALL retardo

    CALL retardo

    corrimientoDer:

    RRF PORTB

    ;realiza un corrimiento de bits a la

    derecha

    call retardo

    call retardo

    BTFSS STATUS, C ;pregunta

    por el estado de la bandera carry

    GOTO corrimientoDer ;si

    carry es 0, salta a corrimiento

    bcf STATUS,C ;si carry es

    1, limpia la bandera del carry

    GOTO LEER

    ;regresa al inicio

    INICIACI:

    bcf STATUS,C ;si carry es

    1, limpia la bandera del carry

    MOVLW H'01'

    MOVWF PORTB

    CALL retardo

    CALL retardo

    corrimientoIzq:

    RLF PORTB

    ;realiza un corrimiento de bits a la

    derecha

    call retardo

    call retardo

    BTFSS STATUS, C ;pregunta

    por el estado de la bandera carry

    GOTO corrimientoIzq ;si carry es

    0, salta a corrimiento

    bcf STATUS,C ;si carry es

    1, limpia la bandera del carry

    GOTO LEER

    ;regresa al inicio

    corrimientoMixto:

    bcf STATUS,C ;si carry es

    1, limpia la bandera del carry

    MOVLW H'80'

    MOVWF PORTB

    call retardo

    call retardo

    corrimientoDerM:

    RRF PORTB

    ;realiza un corrimiento de bits a la

    derecha

  • call retardo

    call retardo

    BTFSS STATUS, C ;pregunta

    por el estado de la bandera carry

    GOTO corrimientoDerM;si carry

    es 0, salta a corrimiento

    bcf STATUS,C ;si carry es

    1, limpia la bandera del carry

    MOVLW H'01'

    MOVWF PORTB

    call retardo

    call retardo

    corrimientoIzqM:

    RLF PORTB

    ;realiza un corrimiento de bits a la

    derecha

    call retardo

    call retardo

    BTFSS STATUS, C ;pregunta

    por el estado de la bandera carry

    GOTO corrimientoIzqM;si carry es

    0, salta a corrimiento

    bcf STATUS,C ;si carry es

    1, limpia la bandera del carry

    GOTO LEER

    ;regresa al inicio

    enciendeApaga:

    CLRF PORTB

    call retardo

    call retardo

    COMF PORTB

    call retardo

    call retardo

    goto LEER

    retardo:

    ;Rutina de retado

    movlw cte1

    movwf valor1

    tres:

    movlw cte2

    movwf valor2

    dos:

    movlw cte3

    movwf valor3

    uno:

    decfsz valor3

    goto uno

    decfsz valor2

    goto dos

    decfsz valor1

    goto tres

    return

    end

  • Anlisis de resultados

    Se alcanzaron los objetivos

    En esta prctica se cumplieron rotundamente los objetivos ya que pudimos usar dos

    puertos paralelos del microprocesador en este caso el A y B. Usamos estos puertos para

    lograr hacer funciones de control a partir del ensamblador.

    En el caso del punto uno se lograron los objetivos al emplear los dos puertos paralelos del

    microcontrolador configurando cada uno de ellos, uno como entrada, y el otro como

    salida. Se logr establecer que de acuerdo al valor establecido en el puerto A, sea cero o

    uno, se gener una accin para el puerto B. Logrando as el objetivo. De la misma forma

    que en el primer punto, en el segundo punto se trabaj con un puerto de entrada y con

    otro de salida, logrando generar retardos de medio segundo, de acuerdo a nuestra tabla

    de acciones de control establecidas. Logrando as tambin el objetivo.

    Perifricos usados

    Para realizar esta prctica utilizamos el puerto A y B. En donde el puerto A actu como

    entrada y el B como salida.

    Flujo interno

    El puerto A del microprocesador fue nuestra entrada ya que por medio de un dipswitch

    introdujimos los datos para que nuestro programa operara, dependiendo del nmero que

    se asignara se realizaban diferentes funciones a travs del puerto B que resulto ser

    nuestra salida, ya que aqu se mostraba las funciones antes mencionadas; dependiendo de

    la instruccin los leds prendan o apagaban en diferentes secuencias.

    Modos de direccionamiento

    En esta prctica solo hicimos uso del modo de direccionamiento indexado ya que el

    procesador calcula la direccin real y el operando se encuentra en memoria. Adems el

    registro se modifica a menudo en la ejecucin del programa.

    Conclusiones.

    Mendoza Gonzlez Ernesto

    Esta prctica me pareci muy divertida ya que empezamos a hacer ms cosas con el

    micro, tambin que los programas son muy parecidos, pero eso me ayuda ms a como

    comprender el funcionamiento y tambin a como programar mejor el micro.

  • Se nos complic un poco en el programa dos ya que tuvimos que implementar como un

    tipo Switch para los diferentes casos que se podan presentar, pero aparte de eso fue muy

    sencillo.

    Martnez Ramrez Karen Liliana

    Esta prctica me pareci muy interesante ya que pudimos ver con ms detalle de lo que es

    capaz un microprocesador, esta vez trabajamos con los puertos paralelos del pic, con el

    dipswitch del puerto A nosotros podamos introducir nuestros datos y el resultado de las

    instrucciones ejecutadas al realizar esas acciones se mostraban en los leds del puerto B.

    Esta vez nos pareci ms complicado implementar nuestro cdigo en ensamblador. El

    ejercicio dos fue el que me pareci ms interesante porque para cada diferente numero

    ingresado en binario los leds prendan y apagaban de diferentes maneras .

    Miranda Vzquez Pedro Alberto

    A decir verdad esta prctica estuvo muy interesante puesto aprend a emplear puertos

    paralelos contenidos en un microcontrolador, aprendiendo adems a configurar a un

    puerto como entrada y a el otro como salida. Creo yo que del que ms aprend, en esta

    prctica, fue del segundo ejercicio ya que adems de lograr hacer retardos de medio

    segundo en cada secuencia, logramos que cuando era cero; todos los leds se mantenan

    apagados, que cuando era uno; todos encendidos, que cuando era tres; corrimiento hacia

    la izquierda, con cuatro; a la derecha, y con cinco logramos apagar y prender todos los

    bits. Por lo que se podra decir que adems de lo aprendido se lograron cumplir todos los

    objetivos.