lab4a
DESCRIPTION
orgaTRANSCRIPT
![Page 1: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/1.jpg)
A) Desarrollar un programa que muestre el número “3” en un display cátodo común conectado al puerto B de un 16F628A de manera constante y que seacomún conectado al puerto B de un 16F628A de manera constante y que sea activado por el bit 0 del puerto A (para esto último utilice instrucción de bit no de byte)
B) Desarrollar un programa que muestre el número “4” en un display ánodo común conectado al puerto B de un 16F628A de manera constante y que sea activado por el bit 0 del puerto A (para esto último utilice instrucción de bit no de byte)no de byte)
![Page 2: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/2.jpg)
Saltos y Bucles1) Salto incondicional
No requiere ninguna condición para llevar a cabo el salto. Se
y
realiza mediante la instrucción de goto
goto: (“ir a”):A) Mediante etiquetasA) Mediante etiquetas
aquí……goto aquí…….
B) Mediante el operador $a)goto $+3goto $+3
b)goto $‐3
![Page 3: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/3.jpg)
2) Salto condicionalEs aquel donde se lleva a cabo el salto sólo cuando una condición se cumple. En estos saltos hay una bifurcación del programa dependiendo de si la condición propuesta se cumple o no, y el programa seguirá caminos diferentescaminos diferentes.
A) Salto condicional en función de Bit
btfss f,b: (“bit test file, skip if set”): 1. Si el bit ‘b’ del registro ‘f’ es “0”, se ejecuta la instrucción que
sigue.2 Si l bit ‘b’ d l i t ‘f’ “1” l i t ió i2. Si el bit ‘b’ del registro ‘f’ es “1”, la instrucción que sigue se
ignora y se salta.
btfsc f,b: (“bit test file, skip if clear”): 1. Si el bit ‘b’ del registro ‘f’ es “1”, se ejecuta la instrucción que
sigue.2. Si el bit ‘b’ del registro ‘f’ es “0”, la instrucción que sigue se2. Si el bit b del registro f es 0 , la instrucción que sigue se
ignora y se salta.
![Page 4: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/4.jpg)
01234567
XX
btfss f,2
¿bit 2 d l Sí
btfsc f,2
Sí¿bit 2 delregistro f=1?
S
No
¿bit 2 delregistro f=0?
Sí
No
Instrucción 1
Instrucción 2
Instrucción 1
Instrucción 2
btfss f,b btfsc f,bb ss f,b f,
![Page 5: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/5.jpg)
;************************************ Saltos_01.asm *************************************; El Puerto B, que actúa como salida, es controlado por el bit 0 del Puerto A, que actúa como; entrada De manera tal que:; entrada. De manera tal que:; ‐ Si el bit 0 del PORTA es "1", se encienden todos los LEDs de salida.; ‐ Si el bit 0 del PORTA es "0", se encienden los LEDs del nibble alto y se apagan los bajo.;; ZONA DE DATOS *********************************************************************
1__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSCLIST P=16F84AINCLUDE <P16F84A.INC>
; ZONA DE CÓDIGOS ********************************************************************
16F8
ORG 0 ; El programa comienza en la dirección 0.Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.clrf TRISB ; Las líneas del Puerto B se configuran como salida.movlw b'00011111' ; Las 5 líneas del Puerto A se configuran como entrada
84
movlw b 00011111 ; Las 5 líneas del Puerto A se configuran como entrada.movwf TRISAbcf STATUS,RP0 ; Acceso al Banco 0.
Principalmovlw b'11111111’ ; Supone que el bit de entrada estará a "1" y por
; tanto se van encender todos los LEDs de salida.;btfss PORTA,0 ; ¿Bit 0 del PORTA es "1"?movlw b'11110000' ; No, entonces se enciende sólo el nibble alto.movwf PORTB ; Resultado se visualiza por el puerto de salida.goto Principal ; Crea un bucle cerrado e infinito.
i d lEND ; Fin del programa.
![Page 6: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/6.jpg)
‐ Si (PORTA.0) = 1 se encienden todos los LEDs de salida.‐ Si (PORTA.0) = 0 o se encienden los LEDs de nibble alto.
W ‘11111111’
Si
W 11111111
PORTA.0=1?
No
16
W ‘11110000’
No
PORTB W
6F84PORTB W 4
![Page 7: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/7.jpg)
;************************************ Saltos_01_628.asm *************************************; El Puerto B, que actúa como salida, es controlado por el bit 0 del Puerto A, que actúa como; entrada. De manera tal que:; ‐ Si el bit 0 del PORTA es "1", se encienden todos los LEDs de salida.; ‐ Si el bit 0 del PORTA es "0", se encienden los LEDs del nibble alto y se apagan los bajo.;; ZONA DE DATOS *********************************************************************
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_MCLRE_OFF&_INTOSC_OSC_NOCLKOUT&_LVP_OFF ; Configuración para;el grabador
LIST P=16F628A ; Procesador utilizado.INCLUDE <P16F628A.INC> ; En este fichero se definen las etiquetas del PIC.; ZONA DE CÓDIGOS ********************************************************************; ONA CÓ IGOS
ORG 0 ; El programa comienza en la dirección 0.Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.clrf TRISB ; Las líneas del Puerto B se configuran como salida.movlw b‘11111111' ; Las líneas del Puerto A se configuran como entrada
16
movlw b 11111111 ; Las líneas del Puerto A se configuran como entrada.movwf TRISAbcf OPTION_REG,7 ;Activa las pull up internas del PBbcf STATUS,RP0 ; Acceso al Banco 0.movlw b'00000111' ; Desactiva el comparador analógicomovwf CMCON
Principal ; Supone que el bit de entrada estará a "1" y por
F62
Principal ; Supone que el bit de entrada estará a 1 y pormovlw b'11111111' ; tanto se van encender todos los LEDs de salida.btfss PORTA,0 ; ¿Bit 0 del PORTA es "1"?movlw b'11110000' ; No, entonces se enciende sólo el nibble alto.movwf PORTB ; Resultado se visualiza por el puerto de salida.goto Principal ; Crea un bucle cerrado e infinito.
8
END ; Fin del programa.
![Page 8: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/8.jpg)
‐ Si (PORTA.0) = 1 se encienden todos los LEDs de salida.‐ Si (PORTA.0) = 0 o se encienden los LEDs de nibble alto.
W ‘11111111’
Si
W 11111111
PORTA.0=1?
No
W ‘11110000’
No
PORTB W
16FPORTB W F6288
![Page 9: Lab4A](https://reader031.vdocuments.co/reader031/viewer/2022013103/5695d4031a28ab9b029ff5bc/html5/thumbnails/9.jpg)
C. Desarrollar un programa que muestre el número “3” ó “4” en un displayánodo común conectado al puerto B de un 16F628A que sea activado por elánodo común conectado al puerto B de un 16F628A que sea activado por el bit 0 del puerto A (para esto último utilice instrucción de bit no de byte) , dependiendo del dato en el bit 7 del puerto A.