








Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
PROGRAMAS BÁSICOS DE ENSAMBLADOR EN EL PIC16F84
Tipo: Ejercicios
1 / 14
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!









#include "p16F84A.inc" __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF ORG 0x LIST P=16F84A PROG1.ASM ENCENDER/APAGAR El código que permite implementar esta aplicación es el siguiente. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include "p16F84A.inc" __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF ORG 0x Configuracion BSF STATUS,RP MOVLW b'00000011' MOVWF TRISB BCF INTCON,GIE BCF STATUS,RP Apagado BCF PORTB, BTFSS PORTB, GOTO Apagado;NO GOTO Encendido;SI Encendido BSF PORTB, BTFSS PORTB, GOTO Encendido GOTO Apagado END PROG2.ASM SUMA DE DOS BITS (LÓGICA) PROPUESTO 0+0= 0+1= 1+0= 1+1=
list P = 16F84A valor EQU 0x21 ;Esta localidad se definirá como valor resultado EQU 0X22 ;Esta localidad se definirá como resultado ORG 0 Inicio movlw b'10' ;Se le asigna un valor a W movwf valor ;Lo que contiene W es movido a valor movlw b'110' ;Se le asigna otro valor a W addwf valor, 1 ;Se suma W y valor , el resultado se guarda en valor movlw b’111’ addwf valor, 0 movwf resultado ;Mueve lo que contiene W a resultado END W= Valor= W= Valor= 1000 W= W= Resultado = 1111 PROG2.ASM ;resta de valor1-valor2 a través de complemento list P = 16F84A valor1 EQU 0x20 ;Esta localidad se definirá como valor valor2 EQU 0X21 ; Esta localidad se definirá como valor resultado EQU 0x22 ; Esta localidad se definirá como resultado ORG 0 Inicio movlw b'1010' ;Guarda el valor de 1010 binario en W movwf valor1 ;Mueve W a valor movlw b'0101' ; Guarda el valor de 101 binario en W movwf valor2 ;Mueve W a valor comf valor2,1 ;Saca el conjugado de valor2 y lo guarda en valor movf valor2,0 ;Mueve valor2 a W addwf valor1,0 ;Suma valor1 + W y lo guarda en W movwf resultado ;Mueve W a resultado. END
Valor1 = 1010 W= 0101 Valor2 = 0101 ----- 1010 W= 1010 W= valor1+W W = 10100 PROG3.ASM EJERCICIO PROPUESTO. Resta SUBWF Valor1-Valor ;resta list P = 16F84A valor1 EQU 0x20 ;Esta localidad se definirá como valor resultado EQU 0x21 ; Esta localidad se definirá como resultado ORG 0 Inicio movlw b'1010' ;Guarda el valor de 1010 binario en W movwf valor1 ;Mueve W a valor movlw b'0101' ; Guarda el valor de 0101 binario en W subwf valor1,0 ;Suma valor1 - W y lo guarda en W movwf resultado ;Mueve W a resultado. END PROG4.ASM ;
; EL SIGUIENTE PROGRAMA SUMA 05 Y 02 en formato hexadecimal ;
COMENTARIOS LIST P=16F SUMA1 EQU 0X0C SUMA2 EQU 0X0D
; Se han definido 2 variables SUMA1 y RESUL en diferentes posiciones de la ;memoria de datos en el REGISTER FILE MAP ;
ORG 0 ;
; Origen de las instrucciones en el PROGRAM MEMORY MAP ; Directiva de compilación ;
movlw b'0001' ; W= movwf SUMA1 ; SUMA1=W, SUMA1= movlw b'0010' ; W= addwf SUMA1, 0 ; W=SUMA1+W, W= movwf RESUL ; RESUL=W, RESUL= END PROG6.ASM ;
; PROG3.ASM PROGRAMA PARA SUMAR EN BINARIO 2 Y 3
; Se han definido 2 variables SUMA1 y RESUL ; en diferentes posiciones de la memoria de datos en el REGISTER FILE MAP ;
ORG 0 ;
; Origen de las instrucciones en el PROGRAM MEMORY MAP ;
movlw b'0010' ; W= movwf SUMA1 ; SUMA1=W= movlw b'0011' ; W= addwf SUMA1, 0 ; W=SUMA1+W= movwf RESUL ; RESUL = W= 0101 END ;-----------------------------------------------------------------------------------------------------
PROG7.ASM ;
; SUMA EN DECIMAL 3 Y 5 RESULTADO EN 0X ;
LIST P=16f SUM EQU 0x RESUL EQU 0x ORG 0
incf VALOR,1 ; VALOR=7 incf valor, 0; w= movf VALOR, 0; W=7movwf resul; resul= movwf RESUL ; RESUL = 7 END ;-----------------------------------------------------------------------------------------------------
PROG12.ASM DECREMENTAR UN VALOR LIST p=16F v equ 0x0A org 0 inicio movlw 0x movwf v ; v= 5 decf v,1 ; v= decf v,1 ; v= movf v,0 ; w= end Ejercicios propuestos PROG13.ASM Restar dos números binarios y almacenar el resultado en la dirección 0x PROG14.ASM Decrementar el valor 1000 cincuenta (N) veces y almacenarlo en la dirección 0x2B N= MIENTRAS N<> HACER W=W+N DECF N, MOVF V, PROG15.ASM Realiza una operación AND entre dos registros ;-----------------------------------------------------------------------------------------------------
list p=16f reg1 equ 0xA reg2 equ 0xA
res equ 0xA org 0 ;-----------------------------------------------------------------------------------------------------
Inici movlw b'01110011' movwf reg movlw b'01010101' movwf reg andwf reg1, movwf res end PROG16.ASM Realizar operación OR entre un registro y un literal ;-----------------------------------------------------------------------------------------------------
list p=16f reg1 equ 0xA res equ 0xA org 0 ;--------------------------------------------- inicio del programa-------------------
inicio movlw b'00001100' ;movwf reg iorlw b'00110000' movwf res end ;-----------------------------------------------------------------------------------------------------
PROG17.ASM Rotar dos veces hacia la izquierda el contenido de un registro ;
; rotar el valor 00111111 2 veces a la izquierda ;-----------------------------------------------------------------------------------------------------
list p=16f reg EQU 0X0B org 0
xorwf reg1,0 ; movwf res end PROG20.ASM
inicio movlw b' 00111010’ movwf reg swapf reg1, 0 movwf res end PROG21.ASM Multiplicación de dos números PROG22.ASM División entre dos números PROG23.ASM Realizar un programa con todas las operaciones antes realizadas. Usando 2 variables (registros) para guardar los valores de entrada y generar un resultado diferente por cada operación realizada. PROG24.ASM Semáforo (use su creatividad) PROG25.ASM Realizar un programa que simule una serie navideña, puede generar los cambios de las luces, ejecutando las operaciones del programa 23 ALU DE 4 BITS