PRACTICAS DE PROGRAMACION EN LENGUAJE ENSAMBLADOR

Juan Francisco Ayala Lozano Microcontroladores Reyes Olguín Arturo Matricula 1313083134 Mecatrónica 180501 18/02/2015 M

Views 117 Downloads 0 File size 577KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Juan Francisco Ayala Lozano Microcontroladores Reyes Olguín Arturo Matricula 1313083134 Mecatrónica 180501 18/02/2015

MARCO TEORIO:

SALTOS EN FUNCION DE UN BIT. Son muy ponderosas ya que permiten al programa tomar decisiones en función del estado de un bit perteneciente a cualquier registro o puerto de entrada/salida. Hay dos instrucciones de este tipo: Instrucción “btfsc f,b” (bit test f, skip if clear). Esta instrucción puede actuar de dos formas: 

Si el bit número ‘b’ del registro ‘f’ es “1” la instrucción que sigue a esta se ejecuta



normalmente. Si el bit número ‘b’ del registro ‘f’ es “0” la instrucción que sigue a esta se ignora y se salta. INSTRUCCION “btfss f,b” (bit test f, skip if set). Esta instrucción actúa de forma contraria a la instrucción anterior:



Si el bit número ‘b’ del registro ‘f’ es “0” la instrucción que sigue a esta se ejecuta



normalmente Si el bit número ‘b’ del registro ‘f’ es “1” la instrucción que sigue a esta se ignora y salta.

INSTRUCCIONES SALTOS1. Diseñar, ensamblar, simular, grabar el microcontrolador y comprobar los siguientes programas. Saltos_01.asm: el puerto B, que actúa como salida, es controlado por el bit 0 de puerto A que actúa como entrada, de tal manera que:  

Si el bit 0 del PORTA =1, se encienden todos los led de salida Si el bit 0 del porta=1, solo se encienden los led del nible alto.

PROGRAMA: __CONFIG _HS_OSC

saltos_01.asm

LIST P=16F877A INCLUDE ORG 0x000 Inicio bsf STATUS,RP0 CONF_ADCON1 equ b'00000110' clrf TRISB bsf STATUS,RP0 bcf STATUS,RP1 movlw CONF_ADCON1

Configuracion PORTA entradas PORTB salidas PORTA =w Inicio

movwf ADCON1 clrf TRISB clrf TRISC movlw b'11111111'

W=1?

movwf TRISA bcf STATUS,RP0

SI

Prenden todos led

bcf STATUS,RP1 Principal btfss PORTA,0 goto on goto of on movlw b'11111111' movwf PORTB movwf PORTC goto Principal of movlw b'11110000' movwf PORTB

prenden led nible NO alto.

GOTO GOTO

los

movwf PORTC

PRINCIPAL

goto Principal END

EVIDENCIAS: Entrada de datos PORTA=00000001, Salida PORTB=11111111

Entrada de datos PORTA=00000000, salida de datos PORTB=11110000

INSTRUCIONES SALTOS2 Saltos_2.asm: Compara el dato del Puerto de entrada, PORTA con el número 13. Pueden darse dos posibilidades:  

Si PORTA= NUMERO, se encienden todos los leds de salida Si PORTA NO ES =NUMERO, se activan los led pares.

__CONFIG _HS_OSC LIST P=16F877A INCLUDE ORG 0x000 Inicio bsf STATUS,RP0 CONF_ADCON

Saltos 2

1 equ b'00000110' clrf TRISB bsf STATUS,RP0 bcf STATUS,RP1

Configuración PORTA=ENTRA DA PORTB=SALID AS PORTA=W

movlw CONF_ADCON1 movwf ADCON1

INICIO

clrf TRISB clrf TRISC movlw b'00111111' movwf TRISA

W=13

SI

bcf STATUS,RP0 bcf STATUS,RP1 Principalbtfsc PORTA,0

NO

goto uno goto pares uno btfsc PORTA goto pares

Prenden todos los led de salida

GOTO

Solo prenden los leds pare

btfsc PORTA,2 goto tres goto pares tres btfss PORTA,3 goto pares movlw b'11111111' movwf PORTB movwf PORTC goto Principal pares movlw b'01010101' movwf PORTB movwf PORTC goto Principal END

Entrada de datos PORTA= 00000000, Salida PORTB= 00001101

principal GOTO

Entrada desato PORTA= 00000000, salida de datos PORTB, 13

SALTOS3 Compara el dato introducido por el PORTA, que actúa como entrada por un número, pueden darse 2 posibilidades:  

Si PORTA es igual o mayor que NUMERO prenden todos los leds. Si PORTA, es menor que NUMERO se activan lo leds pares de la salida.

__CONFIG _HS_OSC LIST P=16F877A I NCLUDE ORG 0x000 Inicio bsf STATUS,RP0 CONF_ADCON1 equ b'00000110' clrf TRISB bsf STATUS,RP0 bcf STATUS,RP1 movlw CONF_ADCON1 movwf ADCON1 clrf TRISB clrf TRISC movlw b'00111111' movwf TRISA bcf STATUS,RP0 bcf STATUS,RP1

Saltos_03.asm

Configuración PORTA=ENTRADA PORTB=SALIDA W=PORTA NUMERO=14

principal movlw d'14' subwf PORTA,W btfsc STATUS,C goto mayor movlw b'01010101' movwf PORTB movwf PORTC goto principal mayor movlw b'11111111' movwf PORTB movwf PORTC goto principal END

W≥NUMERO?

SI

NO

PRENDEN SOLO LEDS PARES DE SALIDA

PRENDEN TODOS LOS LEDS

GOTO GOTO

W≥NUMERO?

Entrada de datos PORTA= 14, Salida PORTB= 11111111.

Entrada de datos PORTA NO ES =14, Salida PORTB=101010101.

CONCLUCIONES: Es importante recordar, que es muy recomendable simular el programa, antes de llevarlo a la forma física, ya que pueden existir ciertos errores en el programa que afectaran el funcionamiento del circuito, si es necesario, revisar con atención el programa ya que puede suceder que el erro que tenga no lo detecte el programa, tratar con cuidado el integrado, ya que sus pines son muy frágiles, lo programas no son tan difíciles de entender , recomendamos que si es necesario aprendan de memoria el cuerpo principal del programa ya que en muchos casos es muy similar para cualquier programa de este tipo de dificultad.