Está en la página 1de 9

Código: MADO-86

Versión: 01
Manual de Página 14/23
Prácticas Sección 8.3
Microprocesadore ISO
s y Fecha de 24 de enero de
Microcontroladore emisión 2020
s
Área/Departamento:
Facultad de Ingeniería
Departamento de electrónica
La impresión de este documento es una copia no controlada

Práctica 5

Puertos de E/S
en lenguaje ensamblador

Nombre completo del Firma


alumno
Bautista Sánchez Brandon Fernando

Fecha de elaboración:24-06-2021 Grupo:7

SEGURIDAD EN LA EJECUCIÓN DE LA PRÁCTICA


Peligro o Fuente de Riesgo
energía asociado

1
1 Manejo de Corriente Alterna Electrochoque
2 Manejo de Corriente Continua Daño al Equipo

2
Código: MADO-86
Versión: 01
Manual de Página 15/23
Prácticas Sección 8.3
Microprocesadore ISO
s y Fecha de 24 de enero de
Microcontroladore emisión 2020
s
Área/Departamento:
Facultad de Ingeniería
Departamento de electrónica
La impresión de este documento es una copia no controlada

Objetivos de aprendizaje

El estudiante analizará, diseñará e implementará la configuración apropiada de los puertos


de entrada/salida (GPIOs) para un problema específico.

Material y equipo

Computadora, tarjeta de desarrollo, tableta de prototipos (protoboard), consumibles, set de


instrucciones y hojas de especificaciones del microcontrolador (Tiva™ TM4C1294NCPDT
Microcontroller DATA SHEET)

Trabajo previo

Estudiar el capítulo 10,General-Purpose Input/Outputs (GPIOs), del documento “Tiva™


TM4C1294NCPDT Microcontroller DATA SHEET”.

Investigar las características de los dispositivos necesarios para la implementación de la


interfaz y conseguir los consumibles necesarios.

A partir de la declaración de un problema especificado por el profesor, el estudiante analizará,


diseñará una solución y elaborará un diagrama de flujo.

Desarrollo

Desarrollar el programa correspondiente, ensamblarlo y cárgalo en la tarjeta de desarrollo.


Alambrar el hardware requerido y verificar su funcionamiento.
Actividad 2
Modificar código y agregar el contador.
En el archivo que nos envió el profesor, las actividades 1 y 2, eran revisarlas y corregir el código
puesto que venía con unos pequeños detalles, posteriormente así como se indicó, se corrigió
primeramente el código, la segunda actividad fue agregarle el contador, observar como corria nuestro
programa y si presentaba alguna falla.
Anexare los códigos usados.

Código 1
;Programa modificado 1
; LED = PN0
; PUSH = PJ0
.global main
.text

SYSCTL_RCGCGPIO_R .field 0x400fe608,32


GPIO_PORTJ_DATA_R .field 0X400603FC,32
GPIO_PORTJ_DIR_R .field 0X40060400,32
GPIO_PORTJ_DEN_R .field 0X4006051C,32
GPIO_PORTJ_PUR_R .field 0X40060510,32
GPIO_PORTN_DATA_R .field 0X400643FC,32
GPIO_PORTN_DIR_R .field 0X40064400,32
GPIO_PORTN_DEN_R .field 0X4006451C,32
SYSCTL_RCGCGPIO_J_N .EQU 0X1100
main: ;HABILITA RELOJ DE PTOS J y N
ldr R0,SYSCTL_RCGCGPIO_R ; Q,P,N,M,L,K,J,H,G,F,E,D,C,B,A [0=>DESHAB,
1=>HAB.]
MOV R1,#SYSCTL_RCGCGPIO_J_N ;#0001000100000000B =0X1100 =0X00001100
STR R1, [R0]
NOP ;ESPERA P/Q SE ESTABILICE EL RELOJ.(3 ciclos de reloj)
NOP
NOP
NOP
;***************************************
;PROGRAMA SALIDAS PN0
LDR R0,GPIO_PORTN_DIR_R ;b7,b6,b5,b4,b3,b2,b1,b0 [0=>IN, 1=>OUT]
MOV R1, #00000001b ; =0X01 =>b0=OUT
STR R1, [R0]
;habilita señales digitales
LDR R0,GPIO_PORTN_DEN_R ;b7,b6,b5,b4,b3,b2,b1,b0 [0=>DESHAB, 1=>HAB.]
MOV R1, #00000001b ; =0X01 =>b0=Digital
STR R1, [R0]
;***************************************
;PROGRAMA entradas PJ0
LDR R0,GPIO_PORTJ_DIR_R ;b7,b6,b5,b4,b3,b2,b1,b0 [0=>IN, 1=>OUT]
MOV R1, #00000000b ; =0X00 =>b0=INPUT
STR R1, [R0]

;habilita señales digitales


LDR R0,GPIO_PORTJ_DEN_R ;b7,b6,b5,b4,b3,b2,b1,b0 [0=>DESHAB, 1=>HAB.]
MOV R1, #00000001b ; =0X01 =>b0=Digital
STR R1, [R0]
LDR R0,GPIO_PORTJ_PUR_R ;HABILITAMOS R DE PULL-UP
MOV R1, #0x01 ; =0X01 =>b0=Resistencia de PullUp
STR R1, [R0]
;*************APAGA LED ********
LDR R0, GPIO_PORTN_DATA_R
MOV R1, #0
STR R1,[R0]
;*************LEE ETRADA *******
LEE: LDR R0,GPIO_PORTJ_DATA_R
LDR R1,[R0]
;********* MASCARA Y COMPARA ***
ANDS R1,#00000001B
CMP R1,#0X00
BNE LEE
;******** LED = ON **********
LDR R0, GPIO_PORTN_DATA_R
MOV R1, #00000001B
STR R1,[R0]
;******** Retardo de 250ms ***
BL Ret250ms ; PC -> LR
;******** LED = OFF **********
LDR R0, GPIO_PORTN_DATA_R
MOV R1, #0
STR R1,[R0]
;******** Retardo de 250ms ***
BL Ret250ms ; PC -> LR
B LEE

;*** SUBRUTINA DE RETARDO DE 250ms ************************************


Ret250ms ;0X14 5855 = 1,333,333 |CICLOS DE EJECUCIÓN| TIEMPÓ DE EJECUCIÓN|
MOV R10,#0X5855 ; 1 cy | 62.5 ns
MOVT R10,#0X14 ; 1 cy | 62.5 ns
LOOP: ;-----------------------------------
SUBS R10, #1 ; 1 cy | 62.5 ns
BNE LOOP ; 2 cy(1 cy) | 125 ns
; TOTAL: 3 cy | 187.5 ns
BX LR ; LR -> PC ;----------------------------------
;si se quiere un retardo de 250ms, entonces:
; ------ ; => R10 = 250 ms/187.5 ns = 1 333 333 (0x14 5855)
.end

Código 2 :
;Programa modificado 2
; LED = PN0
; PUSH = PJ0
.global main
.text

SYSCTL_RCGCGPIO_R .field 0x400fe608,32


GPIO_PORTJ_DATA_R .field 0x400603FC,32
GPIO_PORTJ_DIR_R .field 0x40060400,32
GPIO_PORTJ_DEN_R .field 0x4006051C,32
GPIO_PORTJ_PUR_R .field 0x40060510,32
GPIO_PORTN_DATA_R .field 0x400643FC,32
GPIO_PORTN_DIR_R .field 0x40064400,32
GPIO_PORTN_DEN_R .field 0x4006451C,32
SYSCTL_RCGCGPIO_J_N .EQU 0x1100

main: ;HABILITA RELOJ DE PTOS J y N


ldr R0,SYSCTL_RCGCGPIO_R ; Q,P,N,M,L,K,J,H,G,F,E,D,C,B,A [0=>DESHAB,
1=>HAB.]
MOV R1,#SYSCTL_RCGCGPIO_J_N ;#0001000100000000B =0X1100 =0X00001100
STR R1, [R0]
NOP ;ESPERA P/Q SE ESTABILICE EL RELOJ.(3 ciclos de reloj)
NOP
NOP
NOP
;***************************************
;PROGRAMA SALIDAS PN0
LDR R0,GPIO_PORTN_DIR_R ;b7,b6,b5,b4,b3,b2,b1,b0 [0=>IN, 1=>OUT]
MOV R1, #00000001b ; =0X01 =>b0=OUT
STR R1, [R0]
;habilita señales digitales
LDR R0,GPIO_PORTN_DEN_R ;b7,b6,b5,b4,b3,b2,b1,b0 [0=>DESHAB, 1=>HAB.]
MOV R1, #00000001b ; =0X01 =>b0=Digital
STR R1, [R0]
;***************************************
;PROGRAMA entradas PJ0
LDR R0,GPIO_PORTJ_DIR_R ;b7,b6,b5,b4,b3,b2,b1,b0 [0=>IN, 1=>OUT]
MOV R1, #00000000b ; =0X00 =>b0=INPUT
STR R1, [R0]

;habilita señales digitales


LDR R0,GPIO_PORTJ_DEN_R ;b7,b6,b5,b4,b3,b2,b1,b0 [0=>DESHAB, 1=>HAB.]
MOV R1, #00000001b ; =0X01 =>b0=Digital
STR R1, [R0]
LDR R0,GPIO_PORTJ_PUR_R ;HABILITAMOS R DE PULL-UP
MOV R1, #0x01 ; =0X01 =>b0=Resistencia de PullUp
STR R1, [R0]
;*************APAGA LED ********
LDR R0, GPIO_PORTN_DATA_R
MOV R1, #0
STR R1,[R0]
;*************LEE ETRADA *******
LEE: LDR R0,GPIO_PORTJ_DATA_R
LDR R1,[R0]
;********* MASCARA Y COMPARA ***
ANDS R1,#00000001B
CMP R1,#0X00
BNE LEE
MOV R11,#0x0000;INICIO DE CONTADOR ' 0 '
MOV R12,#0x0005;CONTADOR 5

;******** LED = ON **********


LOOP5: LDR R0, GPIO_PORTN_DATA_R
MOV R1, #00000001B
STR R1,[R0]
;******** Retardo de 250ms ***
BL Ret500ms ; PC -> LR
;******** LED = OFF **********
LDR R0, GPIO_PORTN_DATA_R
MOV R1, #0
STR R1,[R0]
;******** Retardo de 250ms ***
BL Ret500ms ; PC -> LR

CMP R11,#0x5; es igual a 5 termina


BEQ LEE
ADD R11,R11,#0x00001 ;sumamos +1

B LOOP5

;B LEE

;*** SUBRUTINA DE RETARDO DE 250ms ************************************


Ret500ms: ;0X14 5855 = 1,333,333 |CICLOS DE EJECUCIÓN| TIEMPÓ DE EJECUCIÓN|
MOV R10,#0XB0AA ; 1 cy | 62.5 ns*2
MOVT R10,#0X28 ; 1 cy | 62.5 ns*2
LOOP: ;-----------------------------------
SUBS R10, #1 ; 1 cy | 62.5 ns
BNE LOOP ; 2 cy(1 cy) | 125 ns
; TOTAL: 3 cy | 187.5 ns
BX LR ; LR -> PC ;----------------------------------frecuencia500ms
;si se quiere un retardo de 250ms, entonces:
; ------ ; => R10 = 250 ms/187.5 ns = 1 333 333 (0x14 5855)
.end

Actividad 3:

Conclusiones

En el desarrollo de esta práctica se emplearon de manera satisfactoria la implementación de los


puertos para establecer comunicación entre el exterior con los puertos de entrada y en función de
eso poder mandar una respuesta que se desee , para ellos se establecieron los puertos de entrada
con la lectura de datos, previamente operados con una resistencias de Pull Dawn , se lograron
realizar dos actividades de 3 en mi caso, pudiendo así mencionar hasta donde logre llegar que se
estaban cumpliendo los objetivos de la práctica.
Bibliografía
Tiva™ TM4C1294NCPDT Microcontroller DATA

También podría gustarte