Upload
jorge-ivan-ken-espinoza
View
250
Download
2
Embed Size (px)
DESCRIPTION
programacion de pic 16f877a
Citation preview
Juan Francisco Ayala Lozano
Microcontroladores
Reyes Olguín Arturo
Matricula 1313083134
Mecatrónica 180501
18/02/2015
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
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
Entrada de datos PORTA = b’11111111’ mas constante 74, salida PORTB = b’10001010’
Instrucción
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
Cuando PORTA = b’00000000’ la salida PORTB = b’0101010101’
Cuando PORTA = b’11111111’ la salida PORTB = b’11111111’
Instruccion
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
Cuando PORTA = b’11111111’ la salida PORTB = b’00000000’