practica capitulo 8

10
Juan Francisco Ayala Lozano Microcontroladores Reyes Olguín Arturo Matricula 1313083134 Mecatrónica 180501

Upload: jorge-ivan-ken-espinoza

Post on 18-Jan-2016

249 views

Category:

Documents


2 download

DESCRIPTION

programacion de pic 16f877a

TRANSCRIPT

Page 1: Practica Capitulo 8

Juan Francisco Ayala Lozano

Microcontroladores

Reyes Olguín Arturo

Matricula 1313083134

Mecatrónica 180501

18/02/2015

Page 2: Practica Capitulo 8

Marco teórico

Instrucciones de suma

La suma se realiza de forma aritmética binaria pura sin signo y afecta a los flags del STATUS de la siguiente forma

Al flag Z. El bit Z se pone en 1 si el resultado de la operación es cero (b’00000000’) y se pone Z en 0 si el resultado tiene cualquier otro valor.

Al flag C. Si hay un acarreo del bit 7, es decir si el resultado es mayor que b’11111111’ (255 en decimal) el bit c se activa en 1 en caso contrario resulta C = 0

Al flag DC. Si hay un acarreo del bit 3 al 4, es decir que la suma de las dos mitades(nibbles) menos significativa(bits 0 a 3) resulta mayor que 15, el bit DC se pone a 1, en caso contrario se pone a 0

Addlw k (add literal to W). Suma el contenido del registro W con el literal o constante k, almacena el resultado en W. si se produce acarreo el flag C se pone a 1

Addwf f,d (add W and f). Suma el contenido en el registro W al contenido del registro f almacena el resultado en W si d = 0 y en el registro f si d = 1. Se produce un acarreo en flag C se pone a 1.

Iorlw, Poner a uno varios bits del registro W sin alterar el resto, se usa la operación OR, poniendo en la operación inmediato un 1 en aquellos bits que se desea poner a 1, mientras que los restantes se ponen a 0. A la contante con la que se hace la operación OR se llama mascara.

Xorlw, Invertir varios bits de W sin alterar el resto, se usa la operación lógica XOR poniendo en el operador inmediato un 1 en aquellos bits que se desea invertir mientras que los restantes se ponen a 0. A la constante con la que se hace la operación XOR se la llama mascara

Instrucción

Page 3: Practica Capitulo 8

Elemental_01.asm; Por el puerto B se obtiene el dato de las cinco líneas del puerto A, al que se esta conectando un array de interruptores, sumándole un valor constante, por ejemplo 74 decimal. Es decir: (PORTB) = (PORTA)+Constante.

Programa y Diagrama de flujo

__CONFIG _HS_OSCLIST P=16F877AINCLUDE <P16F877A.INC>ORG 0x000Inicio bsf STATUS,RP0 CONF_ADCON1 equ b'00000110'clrf TRISBbsf STATUS,RP0bcf STATUS,RP1movlw CONF_ADCON1 movwf ADCON1clrf TRISBclrf TRISCmovlw b'11111111'movwf TRISAbcf STATUS,RP0bcf STATUS,RP1Principalmovf PORTA,Waddlw d'74'movwf PORTBgoto Principal

END

EvidenciasEntrada de datos PORTA = b’00000000’ más constante 74, Salida PORTB = b’01001010’

Elemental_01.asm

Configura

PORTA como entrada

PORTB como salida

Declara PORTA como W

Suma W más constante

Mueve W a PORTB

Page 4: Practica Capitulo 8

Entrada de datos PORTA = b’11111111’ mas constante 74, salida PORTB = b’10001010’

Instrucción

Page 5: Practica Capitulo 8

Elemental_03.asm Por el puerto B se obtiene el dato introducido por el puerto A, pero los bits pares de la salida se fijan siempre en 1.

Codigo y digrama de flujo

__CONFIG _HS_OSCLIST P=16F877AINCLUDE <P16F877A.INC>

ORG 0x000Inicio bsf STATUS,RP0CONF_ADCON1 equ b'00000110'clrf TRISBbsf STATUS,RP0bcf STATUS,RP1movlw CONF_ADCON1movwf ADCON1clrf TRISBclrf TRISCmovlw b'11111111'movwf TRISAbcf STATUS,RP0bcf STATUS,RP1

Principalmovf PORTA,Wiorlw b'01010101'movwf PORTBmovwf PORTCgoto Principal

END

Evidencias

Elemental_03.asm

Declara

PORTA como entrada

PORTB como salida

Mueve el PORTA a W

Solo cambia datos declarados 0

Mueve w a PORTB

END

Page 6: Practica Capitulo 8

Cuando PORTA = b’00000000’ la salida PORTB = b’0101010101’

Cuando PORTA = b’11111111’ la salida PORTB = b’11111111’

Instruccion

Page 7: Practica Capitulo 8

Elemental_05.asm: Por el Puerto se obtiene el dato del Puerto A invertidos los unos y los ceros

Programa y diagram de flujo

__CONFIG _HS_OSCLIST P=16F877AINCLUDE <P16F877A.INC>ORG 0x000Inicio bsf STATUS,RP0CONF_ADCON1 equ b'00000110'clrf TRISBbsf STATUS,RP0bcf STATUS,RP1movlw CONF_ADCON1movwf ADCON1clrf TRISBclrf TRISCmovlw b'11111111'movwf TRISAbcf STATUS,RP0bcf STATUS,RP1principamovf PORTA,Wxorlw b'11111111'movwf PORTBmovwf PORTCgoto PrincipalEND

EvidenciaCuando PORTA = b’00000000’ la salida PORTB = b’11111111’

Elemental_05.asm

Declara

PORTA como entrada

PORTB como salida

Mueve PORTA a W

Invierte W

Mueve W a PORTB

END

Page 8: Practica Capitulo 8

Cuando PORTA = b’11111111’ la salida PORTB = b’00000000’