lab4a

9
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 sea 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) 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)

Upload: martin-laguna-castro

Post on 19-Feb-2016

235 views

Category:

Documents


4 download

DESCRIPTION

orga

TRANSCRIPT

Page 1: Lab4A

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

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

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

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?

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

;************************************ 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

‐ 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

;************************************ 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

‐ 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

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.