Está en la página 1de 9

PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

INTRODUCCIÓN llamado TRIS. TRISX<n>controla la


Una de las dirección del pin n del puerto X.
Objetivos: • Un 1 en el registro TRIS indica que el
características más
• Definir los importantes del pin es entrada. Un 0 indica que es
microcontrolador es el salida.
puertos de
número de los pines de La máxima capacidad de corriente de cada
entrada y uno de los pines de los puertos en modo
entrada/salida, que
salida que sumidero (sink) o en modo fuente (source) es
permite conectarlo con
tienen los los periféricos. Con el de 25 mA. La máxima capacidad de corriente
microcontrola propósito de total de los puertos es:
dores. sincronizar el
funcionamiento de los
• Configurar los puertos de E/S con la
puertos de organización interna El consumo de corriente del microcontrolador
entrada y del microcontrolador de para su funcionamiento depende del voltaje de
salida del 8 bits, ellos se agrupan, operación, la frecuencia y de las cargas que
microcontrola de manera similar a los tengan sus pines. Para un oscilador de 4 MHz
registros, en cinco el consumo es de aproximadamente 2mA;
dor.
puertos denotados con aunque este se puede reducir a 40
• Realizar A, B, C, D y E. microamperios cuando se está en el modo
sleep (en este modo el micro se detiene y
ejercicios de
Por las razones disminuye el consumo de potencia).
aplicación.
prácticas, muchos
pines de E/S son
multifuncionales. Si un pin realiza una de
estas funciones, puede ser utilizado como pin
de E/S de propósito general.

Cada puerto tiene su propio registro de control


de flujo, o sea el registro TRIS
correspondiente: TRISA, TRISB, TRISC etc.
lo que determina el comportamiento de bits del
puerto, pero no determina su contenido.

CARACTERISTICAS. Figura 1. Capacidad de corriente de los pines y puertos


• Mediante los pines de entrada y salida
el microcontrolador puede monitorizar y
controlar otros dispositivos. Registros PORTA y TRISA
• Para añadir flexibilidad al micro muchos El puerto PORTA es un puerto bidireccional,
de sus pines de entrada/salida están de 8 bits de anchura. Los bits del registro
multiplexados con funciones TRISA controlan los pines del puerto PORTA,
alternativas. o sea si se comportan como entradas o
• Para la mayoría de los puertos, la salidas digitales.
dirección del pin I/O es controlada por
el registro de dirección de datos, Similar a que los bits del registro TRISA
determinan cuáles pines serán configurados
PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

como entradas y cuáles serán configurados


como salidas, los bits apropiados del registro
ANSEL determinan si los pines serán
configurados como entradas analógicas o
entradas/salidas digitales.

RA0 = AN0 (determinado por el bit ANS0 del


registro ANSEL)
RA1 = AN1 (determinado por el bit ANS1 del
registro ANSEL) Figura 2. Conexión en pines del microcontrolador
RA2 = AN2 (determinado por el bit ANS2 del
registro ANSEL)
RA3 = AN3 (determinado por el bit ANS3 del Registros PORTC y TRISC
registro ANSEL) El puerto PORTC es un puerto bidireccional,
RA5 = AN4 (determinado por el bit ANS4 del de 8 bits de anchura. Los bits del registro
registro ANSEL) TRISC determinan la función de sus pines.
Similar a otros puertos, un uno lógico (1) en el
Registros PORTB y TRISB registro TRISC configura el pin apropiado del
El puerto PORTB es un puerto bidireccional, puerto PORTC como entrada.
de 8 bits de anchura. Los bits del registro
TRISB determinan la función de sus pines. Registros PORTD y TRISD
Similar al puerto PORTA, un uno lógico (1) en El puerto PORTD es un puerto bidireccional
el registro TRISB configura el pin apropiado en de 8 bits de anchura. Los bits del registro
el puerto PORTB y al revés. Los seis pines de TRISD determinan la función de sus pines.
este puerto se pueden comportar como las Similar a otros puertos, un uno lógico (1) en el
entradas analógicas (AN). registro TRISD configura el pin apropiado del
puerto PORTD como entrada.
Todos los pines del puerto PORTB tienen las
resistencias pull-up integradas, que los hacen Registros PORTE y TRISE
perfectos para que se conecten con los El puerto PORTE es un puerto bidireccional,
botones de presión (con el teclado), de 4 bits de anchura.
interruptores u optoacopladores. Los bits del registro TRISE determinan la
función de sus pines. Similar a otros puertos,
Al tener un alto nivel de resistencia (varias un uno lógico (1) en el registro TRISE
decenas de kiloohmios), estas resistencias configura el pin apropiado del puerto PORTE
“virtuales” no afectan a los pines configurados como entrada.
como salidas, sino que sirven de un La excepción es el pin RE3, que siempre está
complemento útil a los pines configurados configurado como entrada.
como entradas. De lo contrario, se
comportarían como si fueran flotantes gracias
a su alta resistencia de entrada.
SENTENCIAS
Las sentencias especifican y controlan el flujo
de ejecución del programa. En ausencia de las
sentencias de salto y ejecución, las sentencias
se ejecutan en el orden de su aparición en el
código del programa.
PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

if(!i) k=20;
}
Sentencia de asignación
Una sentencia de asignación se parece a lo
siguiente: Sentencia switch – case
Esta instrucción se usa cuando se deben
Sentencia = variable seleccionar entre varias opciones tipo
numéricas. Es básicamente un selector.
La sentencia de asignación evalúa la
expresión y le asigna el valor de la expresión char c;
a una variable aplicando las reglas de la void main()
{
conversión implícita. El especificador variable // se le debe asignar el valor a la var.
puede ser cualquier variable declarada, c
mientras que el especificador expresión switch(c)
representa la expresión cuyo valor {
case 1: // debe saltar a función
corresponde a la variable dada. break;
case 2: // debe saltar a función
SENTENCIAS CONDICIONALES. break;
Las sentencias condicionales o las sentencias case 3: // debe saltar a función
de selección pueden decidir entre varios break;
}
cursos de acción distintos en función de }
ciertos valores.
SENTENCIA DE ITERACIÓN
Sentencia IF Las sentencias de iteración permiten repetir
Puede usarse el if solo o el if-else. Si la un conjunto de sentencias. Las sentencias
condición es verdadera entonces se ejecuta break y continue se pueden utilizar para
una instrucción o un grupo de instrucciones en controlar el flujo de ejecución de sentencias de
caso contrario se ejecuta la que sigue. bucles. La sentencia break termina el bucle en
La sintaxis de la sentencia IF es la siguiente: el que está, mientras continue inicia una
nueva iteración del bucle.
char i,j,k,h;
void main()
{ Sentencia For
i=10; La sentencia for se utiliza para la
j=20; implementación del bucle iterativo cuando el
if(i==j) k=1;
else k=2;
número de iteraciones está especificado. La
if(i==10) { sintaxis de la sentencia for es la siguiente.
k=20;
j=10; for(expr_1;expr_2;expr_3)instrucción;
} for(expr_1;expr_2;expr_3)
else {
{ instrucción_1;
k=40; ...
j=20; instrucción_n;
h=k+j; }
} expr_1 Condición de comienzo, pueden haber varias
if((i==10) && (j==20)) { inicializaciones separadas por coma.
k=20; expr_2 Se efectuará el bucle mientras se cumpla esta
j=10; condición, se evalúa la condición antes de entrar al bucle.
}
if(i) k=20;
PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

expr_3 Indica lo que hay que hacer cada vez que se


termina el bucle, puede haber varias instrucciones separadas En el ejemplo sólo se evalúa la condición
por una coma. verdadera, pero nunca sele del ciclo.
char i,j,k,h;
El código fuente muestra que la variable i se
inicializa en cero, una vez realizadas las void main()
{
instrucciones dentro del bloque, en este caso, i=1;
hacer j igual a cero, se ejecuta la instrucción // Solo mientras i mayor que cero hace
incremento en uno para la variable i. lo que viene a cont.
while(i) // Puede usarse while(1)
char i,j; {
void main() k=40;
{
for(i=0;i<10;i++) // inc. i desde 0 mientras sea
j=20;
menor que 10 h=k+j;
{ }
j=10; // lo repite tantas veces de acuerdo a la }
condicion
}
} Para salir de un ciclo donde no existe
posibilidad de que la condición sea alterada,
Sentencia while se puede usar la sentencia break.
Esta evalúa la condición al inicio, si ésta es
verdadera, entonces se ejecuta el bloque que char i,j,k,h;
void main()
viene a continuación en caso contrario lo salta. {
La sintaxis de la sentencia while es la i=0;
siguiente: while(1)
{
while(condición) instrucción; i++;
while(condición) { if(i==5)break; // Sale cuando i=5
instrucción_1; }
... }
instrucción_n;
} Sentencia Do

En el siguiente código fuente se muestra que La sentencia do-while se evalúa la condición


el ciclo while se realiza ya que i siempre sea al final, por ejemplo “Hágalo mientras se
mayor que 0. Sin embargo en algún momento cumpla la condición”. La sintaxis de la
i será menor que 0, dado que k se va sentencia do-while es la siguiente:
decrementando y se hace igual a i dentro del
ciclo. void main()
{
char i,j,k,h; char i;
void main() i=10;
{ do
i=1; k=40; j=10; {
while(i>0) // Solo mientras i>0 hace lo i--;
que viene a cont. }while(i!=5);
{ }
h=k+j;
k--; Sentencia Goto
i=k;
}
}
PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

La sentencia goto se utiliza para saltar de Iniciado el programa en el entorno de trabajo


forma incondicional a la parte apropiada de en la parte superior izquierda se encuentra la
programa. pestaña de nuevo proyecto, donde se procede
La sintaxis de la sentencia goto es: a crear un nuevo archivo de trabajo y
configurar los parámetros del
gotolabel_name microcontrolador con el que vamos a trabajar.

Por medio de esta sentencia se ejecuta el Se procede a dar el nombre del proyecto, la
salto a la etiqueta label_name. No es posible ubicación del archivo, elección del dispositivo
saltar a un procedimiento o una función. La con el que se va a trabajar y configurar la
sentencia gotose puede utilizar para salir de velocidad del cristal oscilador.
cualquier nivel de las estructuras anidadas. No
es recomendable saltar a bucles u otras
sentencias estructuradas, ya que se pueden
producir resultados inesperados. En general
no es recomendable utilizar la sentencia goto
dado que prácticamente cada algoritmo se
puede realizar sin ella dado programas
estructurados legibles. No obstante, la
sentencia goto es útil para salir de las
estructuras de control profundamente
anidadas.

fori = 0 to n
for j = 0 to m
...
if disaster Figura 3. MPLAB, configuración de dispositivo
goto Error
end if En la siguiente ventana de configuración se
... puede agregar archivos de trabajos anteriores
next j si fuera necesario.
nexti
...
Error: ' código de control de errores

PROGRAMANDO EN MPLAB
Una vez comprendido los parámetros básicos
que hay que tomar cuenta para iniciar con la
programación de microcontroladores vamos a
iniciar con la programación en MPLAB
iniciando con el programa más básico.

Iniciar MPLAB
Para iniciar con la programación es necesario
configurar en primer lugar los parámetros del Figura 4. MPLAB, Configuración de proyecto
microcontrolador con el que vamos a trabajar
siguiendo los siguientes pasos. Por último se configura las librerías que se
quiere añadir al proyecto. Es recomendable
PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

añadir todas las librerías ya que de esta forma


se puede tener a disposición todas las
librerías al momento de realizar un trabajo.

Figura 5. MPLAB, configuración de librerías Figura 6. Programa básico en MPLAB

La estructura del programa es la siguiente:


En la primera línea corresponde al nombre del
proyecto creado. La sección siguiente es para
declarar el tipo variables globales con las que
va a contar el programa.
A continuación se declara los registros TRIS Y
PORT del puerto B1, que corresponden a
configurar el puerto B como salidas y el valor
del estado lógico inicial 0, en el presente
ejercicio se declara todos los puertos como
salidas al darle un valor de cero en código
hexadecimal y un valor en el puerto de 0L.
La última sección es en la cual corre el
Realizado el procedimiento anterior se puede programa donde se tiene una etiqueta para
acceder al entorno de programación de hacer mención del inicio del programa.
MIKROBASIC. Dentro de esta sección se cambia el registro
del puerto B1 poniéndolo en 1 lógico,
El primer programa a realizar es el encendido continuando con un retraso de 3000 ms (3
y apagado de un led mediante un intervalo de seg) antes de ejecutar la línea que consta de
tiempo, donde se tiene un led conectado en el un nuevo cambio en el registro del puerto B0,
puerto B0 el cual al arrancar el programa en el esta vez poniéndolo en cero lógico. En la
entra en estado 1L y después de 3 segundos penúltima línea se crea la estructura de
pasa a 0L. Desarrollando del programa se iteración llamando a la etiqueta “inicio” para
tiene lo siguiente. que el programa vuelva a ejecutarse. Por
ultimo en la última línea tenemos el fin del
programa mediante la declaración “end”.
PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

A continuación se procede a construir el el diodo ya que al cambiar al estado lógico 1,


archivo .hex el cual se va a programar en la la salida en el puerto es de 5v.
memoria del microntrolador. La construcción
se realiza mediante el icono build. El pin MCLR por el momento se configura con
un estado lógico de 1 (5v). Posteriormente se
estudiará la configuración y uso del mismo.

Figura 7. Icono Build

Si el programa no contiene errores se crea de CUESTIONARIO


forma inmediata el archivo .hex en la misma 1. Describa las características de los
ubicación del proyecto en trabajo, dejándolo registros del PORT y TRIS.
listo para la transferencia del archivo hacia el • Mediante los pines de entrada y
microcontrolador. salida el microcontrolador puede
monitorizar y controlar otros
El circuito físico que se debe realizar para dispositivos.
observar el funcionamiento del programa del
ejercicio es el siguiente. • Para añadir flexibilidad al micro
muchos de sus pines de
entrada/salida están multiplexados
con funciones alternativas.

• Para la mayoría de los puertos, la


dirección del pin I/O es controlada
por el registro de dirección de datos,
llamado TRIS. TRISX<n>controla la
dirección del pin n del puerto X.

Figura 8. Circuito de configuración del microcontrolador • Para el registro tris un 1 nos indica la
entrada y un 0 la salida de cada pin
El circuito básico de configuración para un
microcontrolador consta del cristal oscilador, 2. Explique el funcionamiento de la
el cual debe ser de la misma velocidad a la sentencia do.
cual se configurado el microcontrolador en el En un bucle do while, primero se ejecuta
programa. La alimentación del el bloque de instrucciones y, después, se
evalúa la condición. En el caso de que ésta
microcontrolador es otro aspecto importante sea verdadera, se vuelve a ejecutar el
ya que debe ser de un voltaje de 5v en los bloque de instrucciones. Y así
terminales Vdd del microcontrolador y GND en sucesivamente, hasta que, la condición sea
los terminales Vss. falsa.

En el puerto B0 se puede observar los


cambios de estado en el registro mediante un 3. ¿De qué formas se pueden declarar los
led y una resistencia para limitar el voltaje en registros PORT y TRIS en MPLAB?
PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

En los puertos de entrada y salida CONCLUSIONES


(PORT/TRIS) se los puede declarar de
forma binaria, decimal o hexadecimal según Santiago Leon
lo que se deba programar se deberán usar • Se concluye que para la declaración
las declaraciones más convenientes. de las entradas TRIS y PORT se
puede declarar en forma binaria
4. Realice un programa que permita hexadecimal o decimal según sea
visualizar una secuencia de 8 leds conveniente.
usando el puerto B. • Se concluye que la sentencia do
While se ejecutara en un bucle
infinito hasta cuando la sentencia sea
falsa.
Marlon Flores
• En la familia gama mendia mejorada
el PORT sirve para leer y el LAT sirve
para escribir.
• Los pines de entrada y salida sirven
para controlar otros dispositivos.
Marco Estrella
• Se dedujo que usando delay_ms ()
controlamos la secuencia del led al
encenderse.
• Se uso el ANSEL para el apagado de
la secuencia analógica
Bryan Baño
• Se determinó que la generación del
código debe ir en el Source Files con
extensión .c
• Se dedujo que las librerias del void
son muy extensas.

RECOMENDACIONES
• Antes de programar en MPLAB
verificar en el D.S la configuración de
cada pin.
• Para mejor entendimiento de la
programación se debe hacer
sistemáticamente.

BIBLIOGRAFIA
La bibliografía deberá ser de personas, libros,
revistas, páginas web, etc que hayan
PRÁCTICA # 02 CALIFICACIÓN

NOMBRE DEL ESTUDIANTE: Marco Estrella, Bryan Baño, Marlon Flores, Santiago León

PUERTOS DE ENTRADA/SALIDA

colaborado en el despeje de dudas existentes


y la resolución de la práctica.
Ejemplos:
LabVoltTechnical System, Neumática guía del
Instructor.
Martínez Victoriano, Manual de
Automatización Hidráulica.
• https://learn.mikroe.com/ebooks/micr
ocontroladorespicc/chapter/puertos-
de-entradasalida/
• http://www.carlospes.com/curso_de_
lenguaje_c/03_02_repetitiva_hacer_
mientras.php
• https://learn.mikroe.com/ebooks/micr
ocontroladorespicc/chapter/puertos-
de-entradasalida/

También podría gustarte