Está en la página 1de 16

INFORME DEL SEGUNDO TRABAJO

Integrantes:
Jorge Luis, Cruz Quijada
Iman Noriega Edinson Alberto

Curso:
Microcontroladores
Docente:
Antonio Esteban Fiestas Ugas

2023-2
Introducción
En el siguiente trabajo podremos explicar las herramientas y
procedimientos que se utilizaran para la resolución de los
problemas encargados.

Explicación de problemas y objetivos

1. el primer problema es encender un led durante un segundo


y luego se apague y después volverse a ecender

2. el segundo problema es es que un led se prenda mientra


mantengo presionado un pulsador y cuando se suelte el
pulsado ese led se apague

3. el tercer problema es cuando se presione el pulsador el led


se mantenga encendido y cuando se vuelva a presionar el
pulsador el led se apague

4. el cuarto problema es hacer 3 secuencia de luces led con 4


leds y que cuando presione un pulsador cambien de
secuencia

Solución del problema

Utilizando el lenguaje assembler junto con la guía proporcionada


en clase, con la implementación de los comandos:

● LDI: Carga directamente una constante de 8 bit directamente a


un registro del 16 al 31.
● OUT: Almacena datos del registro Rr en el archivo de registro
al espacio de E/S (puertos, temporizadores, registros de
configuración,etc.).
● CALL:Llama a una subrutina dentro de toda la memoria del
Programa. La dirección del remitente (a la instrucción después
del CALL) se almacenará en la pila. (Ver también RCALL). El
puntero de pila utiliza un post-decremento esquema durante la
LLAMADA.
● JMP: Salta a una dirección dentro de toda la memoria del
programa de 4 M (palabras). Véase también RJMP. Esta
instrucción no está disponible en todos los dispositivos.
Consulte el resumen del conjunto de instrucciones específico
del dispositivo.
● SUBI:Resta un registro y una constante y coloca el resultado
en el registro de destino Rd. Esta instrucción es trabaja en los
registros R16 a R31 y es muy adecuado para operaciones en
los punteros X, Y y Z
● BRNE:Rama relativa condicional. Prueba el indicador cero (Z)
y se ramifica relativamente a la PC si se borra Z. Si el
instrucción se ejecuta inmediatamente después de cualquiera
de las instrucciones CP, CPI, SUB o SUBI, la rama ocurrir si y
sólo si, el número binario con signo o sin signo representado
en Rd no era igual al número binario sin signo o con signo
representado en Rr. Esta instrucción se bifurca relativamente a
PC en cualquiera de los dos casos. dirección (PC - 63 ≤
destino ≤ PC + 64). El parámetro k es el desplazamiento de PC
y se representa en dos forma de complemento. (Equivalente a
la instrucción BRBC 1,k.)
● BRNQ:Rama relativa condicional. Prueba el indicador cero
(Z) y se bifurca relativamente a la PC si Z está configurado. Si
el instrucción se ejecuta inmediatamente después de cualquiera
de las instrucciones CP, CPI, SUB o SUBI, la rama ocurrir si y
sólo si el número binario sin signo o con signo representado en
Rd era igual al número binario sin signo o número binario con
signo representado en Rr. Esta instrucción se bifurca
relativamente a PC en cualquier dirección (PC - 63 ≤ destino ≤
PC + 64). El parámetro k es el desplazamiento de PC y se
representa en complemento a dos forma. (Equivalente a la
instrucción BRBS 1,k.)
● ANDI: Realiza el AND lógico entre el contenido del registro
Rd y una constante, y coloca el resultado en el Registro de
destino Rd
● MOV:Esta instrucción realiza una copia de un registro en otro.
El registro fuente Rr se deja sin cambios, mientras que el
registro de destino Rd se carga con una copia de Rr
● DEC: Resta uno -1- del contenido del registro Rd y coloca el
resultado en el registro de destino Rd. El indicador C en SREG
no se ve afectado por la operación, lo que permite utilizar la
instrucción DEC en un contador de bucles en cálculos de
precisión múltiple. Cuando se opera con valores sin signo, solo
se puede esperar que funcionen las ramas BREQ y BRNE.
consecuentemente. Cuando se opera con valores de
complemento a dos, todas las ramas con signo están
disponibles.
Explicación del código

1. el primer problema es encender un led durante un segundo


y luego se apague y después volverse a ecender
En el Diagrama 1 se observa el funcionamiento general del
Código, En Primera Instancia se configura el puerto B Como
salida, Segundo se manda las patas del puerto b un alto parae
ncender el led , Claro Que el para eso tenemos que Pasar al banco
cero si no, no se modificaran las patas del pic. Después nos
manda al rutinaria retardo Para el led dure Encendido minuto .
Posteriormente Apaga el LED se Llama de nuevo un retardo,
Regresa al Ciclo de Encendido.

2. el segundo problema es es que un led se prenda mientra


mantengo presionado un pulsador y cuando se suelte el
pulsado ese led se apague
en el código se odserva cómo configuramos el puerto b para
poder controlar el leb mientra el puerto a lo configuramos
para poder controlar el pulsador que mandara una señal
cuando esté pulsado se enciende el led y cuando deje de
estar pulsado se apague el mismo led
3. el tercer problema es cuando se presione el pulsador el led
se mantenga encendido y cuando se vuelva a presionar el
pulsador el led se apague
4. el cuarto problema es hacer 3 secuencia de luces led con 4
leds y que cuando presione un pulsador cambien de
secuencia
primero que todo se lle el puerto B y luego filtra el pin B0 y
después de filtrar lo almacenas en él R16 luego de esso SUBI se
encarga de verificar que el valor leído en R16 se a 1 luego de eso
BRNE se encargará de de que si R16 -1 es 0 esto lo identificara
como que el led este en mientra si es R 16 es 1 lo identifica com
que estre presiona el pulsador ara que cambie de valo de 0 a 1 y
esto hará que el led se encienda .
Diagrama de flujo
1.
2.
3.
4.
Conclusión y comentarios
gracias a los AVR Instruction Set Manual entendemos mejor
algunos programas nuevos que hemos utilizado en esta ocasión
para resolver los problemas que se presentarán en clase asi como
también identificar las funciones alternas y el ACCESO AL I/O
PORT del ATMEGA328P como también como resolver y emplear
estos problemas

También podría gustarte