Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


PROGRAMAS BÁSICOS DE ENSAMBLADOR, Ejercicios de Programación Funcional

PROGRAMAS BÁSICOS DE ENSAMBLADOR EN EL PIC16F84

Tipo: Ejercicios

2020/2021

Subido el 18/11/2021

axel-lopez-renteria
axel-lopez-renteria 🇲🇽

1 documento

1 / 14

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
#include "p16F84A.inc"
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF ORG 0x00
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 0x00
#
Configuracion
#BSF STATUS,RP0
#
#MOVLW b'00000011'
#MOVWF TRISB
#
#BCF INTCON,GIE
#BCF STATUS,RP0
#
Apagado
#BCF PORTB,2
#BTFSS PORTB,0
#GOTO Apagado;NO
#GOTO Encendido;SI
#
Encendido
#BSF PORTB,2
#BTFSS PORTB,1
#GOTO Encendido
#GOTO Apagado
#
END
PROG2.ASM SUMA DE DOS BITS (LÓGICA)
PROPUESTO
0+0=00
0+1=01
1+0=01
1+1=10
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Vista previa parcial del texto

¡Descarga PROGRAMAS BÁSICOS DE ENSAMBLADOR y más Ejercicios en PDF de Programación Funcional solo en Docsity!

#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=

SI SWITCH1=1 ENTONCES

SI SWITCH2=1 ENTOCES

APAGAR

ENCENDER

SINO

ENCENDER

APAGAR

SINO

SI SWITCH2=1 ENTONCES

ENCENDER

APAGAR

SINO

APAGAR

APAGAR

PROG1.ASM

SUMA DE TRES VALORES CONSTANTES

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

W= 1010

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

; RESULTADO GUARDADO EN 0X0D

LIST P=16F

SUMA1 EQU 0X0C

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



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

  • Intercambiar los 4 bits menos significativos por los cuatro más Significativos del valor b'00111010', almacenarlos en un registro. list p=16f reg1 equ 0xA res equ 0xA org 0 ;--------------------------------------------- inicio del programa-------------------

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