SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
MICROCONTROLADORES II
(FAMILIA PIC16F87X)(FAMILIA PIC16F87X)
LENGUAJE C PARA PICS
TEMA 1
PROF. LUIS ZURITA
CARACTERÍSTICAS
• Velocidad de operación: hasta 20 MHz de reloj.
• 8K x 14 bits por palabra de memoria de programa FLASH.
• 368 x 8 bytes de memoria de datos (RAM)
• 256 x 8 bytes de memoria de datos EEPROM.
• 14 fuentes de interrupciones.• 14 fuentes de interrupciones.
• Memoria de pila (stack) de 8 niveles de profundidad.
• Protecciones:
– Power-on Reset (POR)
– Power-up Timer (PWRT)
– Oscillator Start-up Timer (OST)
– Watchdog Timer (WDT) independiente del cristal.
Prof. Luis Zurita Microcontroladores II
CARACTERÍSTICAS (PERIFÉRICOS)
• Posee 5 puertos de entrada y salida (PORTA, B, C, D, E)
• Timer 0: timer/counter de 8 bits con un preescaler de 8
valores.
• Timer 1: 16 bits con timer/counter con preescaler
• Timer 2: 8 bits con timer/counter con registro de estado• Timer 2: 8 bits con timer/counter con registro de estado
de 8-bit, preescaler y post escaler
• Dos módulos de Captura, Comparación y PWM
(Modulación por anchura de pulso)
– Captura es de 16 bits, máx. resolución es 12.5 ns
– Comparación es de 16 bits, máx. resolución es 200 ns
– PWM con una resolución de 10 bits máxima.
Prof. Luis Zurita Microcontroladores II
CARACTERÍSTICAS (PERIFÉRICOS 2)
• Convertidor analógico a digital de 10-bit multicanal (de
5 a 8 canales)
• Puerto serial síncrono (SSP) con SPI. (modo maestro) e I2C
(maestro/esclavo)
• Transmisor-Receptor síncrono-asíncrono universal
(USART/SCI) con 8 – 9 bits(USART/SCI) con 8 – 9 bits
• Puerto paralelo esclavo (PSP) con 8 bits de ancho, con
terminales de control RD, WR y CS
• Arquitectura HARVARD.
• Buses separados (datos e instrucciones).
• Memoria de programa : 14 bits.
• Memoria de datos: 8 bits.
• Recursos mapeados en memoria de datos.
Prof. Luis Zurita Microcontroladores II
LENGUAJE C. TIPOS DE DATOS.
El compilador CCS acepta los siguientes tipos de variables:
Especificación Significado Tamaño Rango
char carácter 8 bits 0 a 255 (sin signo)
Int entero 8 bits 0 a 255 (sin signo)
float Coma flotante 32 bits 6 bits de precisión
Byte Entero de 8 bits 8 bits 0 a 255
double Float doble precisión No soportado No para PCMdouble Float doble precisión No soportado No para PCM
void Sin valor nulo Ninguno
int1 Entero de 1 bit 1 bit 0 a 1
int8 Entero de 8 bits 8 bits 0 a 255 (sin signo)
int16 Entero de 16 bits 16 bits 0 a 65535
int32 Entero de 32 bits 32 bits 0 a (232-1)
Short Entero de 1 bit 1 bit 0 a 1
long Entero de 16 bits 16 bits 0 a 65535 (sin signo)
Prof. Luis Zurita Microcontroladores II
LENGUAJE C. TIPOS DE DATOS
Todos los tipos de datos son por defecto sin signo (unsigned)
salvo los de tipo float.
Para almacenar datos con signo, hay que introducir el
modificador signed delante del tipo. El efecto que se consigue es el
recogido en la siguiente tabla.
Especificación Significado Tamaño Rango
Signed char caractér con
signo
8 bits -128 a 128
Signed int Entero con signo 8 bits -128 a 128
Los números negativos se codifican en complemento a 2.
Cuando se opera con distintos grupos de datos en una misma
expresión, se aplican una serie de reglas para resolver las
diferencias.
En general se produce una “promoción” hacia los tipos de datos
de mayor longitud presentes en la expresión.
Signed int Entero con signo 8 bits -128 a 128
Signed long Coma flotante 16 bits -32768 a 32768
Prof. Luis Zurita Microcontroladores II
LENGUAJE C. CONSTANTES
Constantes
123 Decimal
0123 Octal
Valor fijo que no cambiará a lo largo del programa. Tipos aceptados:
Prof. Luis Zurita Microcontroladores II
0123 Octal
0x123 Hexadecimal
0b01001101 Binario
‘X’ Carácter
‘010’ Carácter octal
‘X’ Carácter especial; x puede ser: ¿n, t, b, r, f, ‘ , d, v?
“abcdef” Cadena (el carácter nulo se agrega al final)
LENGUAJE C. CONSTANTES
• A una constante se le puede asignar un nombre o
etiqueta por medio de la directiva #define:
#define PI=3.1416;
• Cada vez que se escriba la etiqueta “PI” la compilación
se encargará de reemplazarla por el valor 3.1416se encargará de reemplazarla por el valor 3.1416
• A veces es necesario guardar las constantes en la
memoria del programa, mediante la declaración:
const tipo nombre_constante= valor;
Ejemplo:
const int TOPECONTADOR=100;
Prof. Luis Zurita Microcontroladores II
OPERADORES
• Las expresiones son una combinación de
operandos y operadores. Los operandos son los
valores sobre los cuales se van a trabajar y los
operadores especifican lo que se va a hacer con
los operandos. Ejemplo:los operandos. Ejemplo:
C= A + B;
• Donde “=“ y “+” son operandos de asignación y
suma respectivamente.
• Indican la tarea que se va a ejecutar sobre los
operandos A, B y C.
Prof. Luis Zurita Microcontroladores II
OPERADORES ARITMÉTICOS
Operador Descripción Ejemplo
+ Suma (enteros o reales) Resul=var1 + var2
- Resta (enteros o reales) Resul=var1 - var2
* Multiplicación (enteros o reales) Resul=var1 * var2
/ División (enteros o reales) Resul=var1 / var2
- Cambio de signo en enteros o reales -var1
% Módulo; resto de una división entera Rango=n[A1]%256
OPERADORES RELACIONALES
Prof. Luis Zurita Microcontroladores II
% Módulo; resto de una división entera Rango=n[A1]%256
Operador Descripción
˂ Menor que
˃ Mayor que
˂= Menor o igual que
˃= Mayor o igual que
== Igual a
!= Distinto de
OPERADORES LÓGICOS
OPERADORES A NIVEL DE BITS
Operador Descripción
! NO lógico (NOT)
&& Y lógico (AND)
|| O lógico (OR)
OPERADORES A NIVEL DE BITS
Prof. Luis Zurita Microcontroladores II
Operador Descripción
~ Negación de bits (complemento a 1)
& Y de bits (AND)
˄˄ O exclusivo de bits (XOR)
| O de bits (OR)
OPERADORES DE INCREMENTO Y
DECREMENTO
OPERADORES DE CORRIMIENTO
Operador Descripción
++ Incremento
- - Decremento
OPERADORES DE CORRIMIENTO
Prof. Luis Zurita Microcontroladores II
Operador Descripción
˃˃ Desplazamiento a la derecha
˂˂ Desplazamiento a la izquierda
Ejemplo. Sea A= 0b00001000, si se ejecuta: A˃˃3;
El nuevo valor de A será= 0b00000001, ya con las 3 rotaciones de
posición a la derecha.
VARIABLES
• Las variables se utilizan para nombrar posiciones de memoria
RAM; se deben declarar, obligatoriamente, antes de
utilizarlas; para ello se debe indicar el nombre y el tipo de
dato que se manejará. Se definen de la siguiente forma:
• TIPO NOMBRE_VARIABLE[=VALOR INICIAL]
– TIPO hace referencia a cualquiera de los tipos de datos
– NOMBRE_VARIABLE puede ser cualquiera y el valor inicial es opcional.– NOMBRE_VARIABLE puede ser cualquiera y el valor inicial es opcional.
Ejemplos:
byte k = 5;
byte const SEMANAS = 52;
float temp_limit=500.0;
char k, kant=‘0’;
int x,y,z;
int UNIDAD;
int UNIDAD=0, DECENA=0, CENTENA=0;
Prof. Luis Zurita Microcontroladores II
VARIABLES
• Las variables pueden ser de tipo LOCAL o GLOBAL.
• Las variables locales sólo se utilizan en la función
donde se encuentran declaradas; las variables
globales se pueden utilizar en todas las funciones delglobales se pueden utilizar en todas las funciones del
programa. Ambas deben declararse antes de ser
utilizadas y las globales deben declararse antes de
cualquier función y fuera de ellas. Las variables
globales son puestas a cero cuando se inicia la
función principal main().
Prof. Luis Zurita Microcontroladores II
EJEMPLO DE VARIABLES LOCALES Y
GLOBALES
int16 counter; //Variable global
Void FUNCION ( )
{
int dato1, dato2=34; //Variables locales
}}
void main()
{
int8 suma; //Variable local
}
Prof. Luis Zurita Microcontroladores II
FUNCIONES
Las funciones son los bloques constructivos
fundamentales en C.
Todas las sentencias deben encontrarse dentro de
funciones.
Las funciones deben ser definidas antes de ser utilizadas.
Formato general de definición de una función:
Tipo_dato nombre_función (tipo param1, tipo param2, …)Tipo_dato nombre_función (tipo param1, tipo param2, …)
{
cuerpo de la función (sentencias);
}
El tipo de dato devuelto se indica mediante tipo_dato. Si
no se indica nada, se entiende que devuelve un entero. Si
no devuelve nada debe incluirse una especificación tipo
void.
Prof. Luis Zurita Microcontroladores II
La manera que tiene una función para devolver un
valor es mediante la sentencia return:
return (expresión); ó return expresión;
La expresión debe proporcionar el mismo tipo de
dato que el especificado en la función. Si no debe
devolver nada, se finaliza con:
return;return;
Cuando una función se encuentra con una sentencia
return se vuelve a la rutina de llamada inmediatamente y
las sentencias posteriores a return no se ejecutan.
Además de con las sentencia return, las funciones
terminan su ejecución y vuelven al lugar desde donde se
les llamó cuando alcanzan la llave de cierre de función }
tras ejecutar la última sentencia de la misma.
Prof. Luis Zurita Microcontroladores II
Además de devolver valores, una función también puede
recibir parámetros (denominados argumentos) según se indicó
en su definición.
Por ejemplo:
int suma(int a, int b)
{
return(a+b);
}
main()
Parámetros
formales
main()
{
int c;
c= suma(10 , 23);
}
Los argumentos se pueden pasar a las funciones por valor o
por referencia.
La llamada por valor copia el argumento de llamada en el
parámetro formal de la función y no modifica su valor en la
función de partida.
Argumentos
de llamada
Prof. Luis Zurita Microcontroladores II
DECLARACIONES DE CONTROL
If-else
Cuando la expresión evaluada es verdadera, Las
instrucciones de la sentencia 1 son ejecutadas. Si la expresión es
falsa, las instrucciones de la sentencia 2 son ejecutadas. La
expresión debe ser evaluada a un valor entero. Los paréntesis
que encierra la expresión son obligatorios.
La palabra especial “else sentencia 2” es opcional.
If – else:
if (expresión)
sentencia1;
else
sentencia2;
If – else:
if (expresión) {
sentencia1;}
else {
sentencia2;}
La palabra especial “else sentencia 2” es opcional.
Prof. Luis Zurita Microcontroladores II
Sentencia if.
Se ejecuta una sentencia o bloque de código si la expresión que
acompaña al if tiene un valor distinto a cero (verdadero). Si es cero
(falso) continúa sin ejecutar la sentencia o bloque de sentencias.
if (expresión) ó if (expresión)
sentencia; {
sentencia 1;
sentencia 2;
…
}
Sentencia if-elseSentencia if-else
Se evalúa una expresión y, si es cierta se ejecuta el primer bloque
de código o sentencia 1. Si es falsa, se ejecuta el segundo.
if (expresión)
sentencia 1;
else
sentencia 2;
Abreviatura: (expresión)?(sentencia 1): (sentencia 2);
NOTA: Se pueden combinar varios
if-else para establecer múltiples
caminos de decisión
Prof. Luis Zurita Microcontroladores II
A=0? C=5
B=10
If (A==0) B=10;
Else C=5;
NO
SI
If (A!=1) B=10;
Else C=5;
Prof. Luis Zurita Microcontroladores II
If (A>10)
{IF(A>20) B=5;
Else B=15;}
A>10?
SI
NO
A>20? B=15
B=5
NO
SI
Prof. Luis Zurita Microcontroladores II
B=5
if (A>10)
{IF(A>20) B=15;}
else B=5;
A>10?
SI
NO
A>20? B=15
B=5
SI
NO
Prof. Luis Zurita Microcontroladores II
Sentencia switch
Sustituye a if-else cuando se realiza una selección múltiple que
compara una expresión con una lista de constantes enteras o
caracteres. Cuando se da una coincidencia, el cuerpo de sentencias
asociadas a esa constante se ejecuta hasta que aparezca break.
switch (expresión)
{
case constante 1:
grupo de sentencias;
Nota: break es opcional. Si
no aparece se sigue con el
case siguiente.
break;
case constante 2:
grupo de sentencias;
break;
…
default:
grupo n de sentencias;
}
No puede haber dos
constantes iguales en dos
case de la misma sentencia
switch.
default es opcional y el
bloque asociado se ejecuta
sólo si no hay ninguna
coincidencia con las
constantes especificadas.
Prof. Luis Zurita Microcontroladores II
A=2? B=2
SI
A=0?
NO
B=1
SI
switch (A){
case 0:
B=1;
break;
case 2:
B=2;
break;
A=2? B=2
A=3? B=3
SI
NO
NO
break;
case 3:
B=3;
break;
default:break;
}
Prof. Luis Zurita Microcontroladores II
Sentencia de bucle for.
Se emplea para repetir una sentencia o bloque de
sentencias:
for (inicialización; condición; incremento)
{
sentencia(s);
}
En la inicialización se le asigna un valor inicial a una
variable que se emplea para el control de la repetición delvariable que se emplea para el control de la repetición del
bucle.
La condición se evalúa antes de ejecutar la sentencia.
Si es cierta, se ejecuta el bucle. Si no, se sale del mismo.
El incremento establece cómo cambia la variable de
control cada vez que se repite el bucle.
Es posible anidar bucles for para modificar dos o más
variables de control.
Prof. Luis Zurita Microcontroladores II
N<=10?
NO
NO
SI
N=1
for(N=1;N<=10;N++)
{
Printf(“%u”,N);
}
for(cont=0;cont<=200;cont++)
{
PORTB=cont;IMPRIMIR N
N=N+1
Prof. Luis Zurita Microcontroladores II
PORTB=cont;
}
for(cont=200;cont<=0;cont--)
{
PORTB=cont;
}
Sentencia de bucle while:
La repetición se lleva a cabo mientras sea cierta una expresión.
while (expresión)
{
sentencia(s);
}
La expresión se evalúa antes de cualquier iteración. Si es falsa, ya no
se ejecuta la sentencia o bloque de sentencias.
Sentencia de bucle do-while:Sentencia de bucle do-while:
do
{
sentencia(s);
}
while (expresión)
Las sentencias se ejecutan antes de que se evalúe la expresión, por
lo que el bucle se ejecuta siempre al menos una vez.
Prof. Luis Zurita Microcontroladores II
Condition
True?
Statement
Block Condition
Statement
Block
Comparación entre loops WHILE y DO WHILE
Block Condition
True?
(a) While loop (b) Do..While loop
Comparación entre loops WHILE y DO WHILE
// DOWHILE.C
// Comparison of WHILE and DO WHILE loops
#include "16F877A.H"
main()
{
int outbyte1=0;
int outbyte2=0;
int count;
count=0; // This loop is not
while (count!=0) // executedwhile (count!=0) // executed
{ output_C(outbyte1);
outbyte1++;
count--;
}
count=0; // This loop is
do // executed
{ output_C(outbyte2);
outbyte2++;
count--;
} while (count!=0);
while(1){};
}
OTRAS SENTENCIAS
• Return: se emplea para devolver datos en las
funciones.
• Break: permite salir de un bucle, se utiliza para
While, For, Do y Switch.
• Goto: provoca un salto incondicional.
Prof. Luis Zurita Microcontroladores II
label
Statement
Block
Continue
Goto
Break
Diferencia entre Continue, Break & Goto
// CONTINUE.C
// Continue, break and goto jumps
#include "16F877A.H"
#use delay(clock=4000000)
main()
{
int outbyte;
again: outbyte=0; // Goto destination
while(1)
{
output_C(outbyte); // Loop operation
delay_ms(10);
outbyte++;
if (!input(PIN_D0)) continue; // Restart loop
if (!input(PIN_D1)) break; // Terminate loop
delay_ms(100);
if (outbyte==100) goto again; // Unconditional jump
}
}
COMENTARIOS
Los comentarios se incluyen en el código fuente para documentar y
orientar al programador sobre el código que se diseña.
Son ignorados por el compilador y no afectan a la longitud ni
rapidez de ejecución del código final.
Un comentario se puede colocar en cualquier lugar del programa y
pueden tener la longitud y el número de líneas que se quiera.
Hay dos formatos posibles para los comentarios:Hay dos formatos posibles para los comentarios:
Formato 1. Empiezan por // y llegan hasta el final de la línea.
// Esto es un comentario.
Formato 2. Empiezan por /* y finalizan por */. No es posible anidar
comentarios con este formato. Ejemplos:
/*Esto también es
un comentario*/
/*Pero esto que /*parece un comentario válido*/ no lo es*/
Prof. Luis Zurita Microcontroladores II
DIRECTIVAS DE INTERÉS
Las directivas de pre-procesado comienzan con el símbolo
# y continúan con un comando específico. La sintaxis
depende del comando. Algunos comandos no permiten
otros elementos sintácticos en la misma expresión.
#DEVICE chip: permite definir el PIC con el que se
realizará la compilación. Ejemplo:
#device PIC16F877#device PIC16F877
#FUSES options: permite definir la palabra de
configuración para programar un PIC. Ejemplo:
#fuses XT,NOWDT,PUT,NOPROTECT, NOLVP
#INCLUDE <archivo>: permite incluir un fichero en el
programa. Ejemplo:
#INCLUDE <16f877.h>
Prof. Luis Zurita Microcontroladores II
DIRECTIVAS DE INTERÉS
#USE DELAY (CLOCK=SPEED): permite definir las frecuencias
del oscilador del PIC, el compilador lo utiliza para realizar
cálculos de tiempo. Se puede utilizar M, MHZ, K y KHZ para
definir la frecuencia. Ejemplo:
#use delay(clock=4000000)#use delay(clock=4000000)
Luego de definida en las declaraciones se pueden utilizar
las funciones:
delay_ms(tiempo en milisegundos)
delay_us(tiempo en microsegundos)
delay_cycles(tiempo en base a los ciclos de máquina)
Prof. Luis Zurita Microcontroladores II
MANEJO DE LOS PUERTOS
FUNCIONES
• El compilador CCS suministra una serie de funciones
predefinidas para acceder y utilizar el PIC y sus
periféricos. Estas funciones facilitan la configuración
del PIC sin entrar en el nivel de los registros
especiales.
MANEJO DE LOS PUERTOS
• En lenguaje C se pueden gestionar los puertos de dos
formas:
– Se declaran los registros TRISX y PORTX definiendo
su posición en la memoria RAM como variables de
C.
– Utilizando las directivas específicas del compilador
(#USE FAST_IO,#USE STANDARD_IO)
Prof. Luis Zurita Microcontroladores II
MANEJO DE LOS PUERTOS
• A través de la RAM:
#BYTE variable=constante. Ejemplo:
#BYTE TRISA=0x85 //variable TRISA en 85h
#BYTE PORTA=0x05 //variable PORTA en 05h
#BYTE TRISB=0x86 //variable TRISB en 86h
#BYTE PORTB=0x06 //variable PORTB en 06h#BYTE PORTB=0x06 //variable PORTB en 06h
#BYTE TRISC=0x87 //variable TRISC en 87h
#BYTE PORTC=0x07 //variable PORTC en 07h
#BYTE TRISD=0x88 //variable TRISD en 88h
#BYTE PORTD=0x08 //variable PORTD en 08h
#BYTE TRISE=0x89 //variable TRISE en 89h
#BYTE PORTE=0x09 //variable PORTE en 09h
Prof. Luis Zurita Microcontroladores II
MANEJO DE LOS PUERTOS
• Una vez definidas estas variables se pueden
configurar y controlar los puertos a través de los
comandos de asignación.
TRISA= 0xFF;
TRISB= 0x00;TRISB= 0x00;
TRISC=0x0F;
• Escritura en los puertos:
PORTC=0x0A;
• Lectura de puertos:
dato=PORTA; // Asigna el valor del puerto A a la
// variable dato.
Prof. Luis Zurita Microcontroladores II
MANEJO DE LOS PUERTOS
Existen unas funciones de C que permiten trabajar
bit a bit con los registros o variables definidas
previamente. Estas funciones son las siguientes:
bit_clear(var,bit); //Pone a 0 el bit indicado de la variable
bit_set(var,bit); //Pone a 1 el bit indicado de la variable
Bit_test(var,bit); // Pregunta por el estado lógico del bitBit_test(var,bit); // Pregunta por el estado lógico del bit
Swap(var); // intercambia nibbles de la variable
Ejemplos:
bit_set(PORTC,4);
If (bit_test(PORTB,2)==1) //Si RB2 es igual a uno
{ bit_clear(PORTB,5); //Pone RB5 a cero
}
Prof. Luis Zurita Microcontroladores II
MANEJO DE LOS PUERTOS
• Se puede declarar un bit de un registro mediante la
directiva #BIT, lo que permite trabajar directamente
con el terminal:
#BIT nombre = posición.bit. Ejemplo:#BIT nombre = posición.bit. Ejemplo:
#BIT RA2=0x05.2 //PORTA=0x05
#BIT RB4=0x06.4 //PORTB=0x06
RB4=0;
RA2=1;
Prof. Luis Zurita Microcontroladores II
MANEJO DE LOS PUERTOS
#include <16F877.h>
#fuses XT,NOWDT,NOLVP
#use delay (clock=4000000)
#BYTE TRISB=0x86
#BYTE PORTB=0x06
#BYTE OPTION_REG=0x81
void main ( ) {
bit_clear (OPTION_REG,7);bit_clear (OPTION_REG,7);
bit_set (TRISB,0);
bit_clear (TRISB,1);
bit_clear (PORTB,1);
while (1){
if (bit_test(PORTB,0)==1)
bit_clear(PORTB,1);
else
bit_set(PORTB,1);
}
}
Prof. Luis Zurita Microcontroladores II
MANEJO DE PUERTOS
• Las funciones output_x() e input_x()
dependen de la directiva tipo #USE_IO que
esté activa. Directivas:
#USE FAST_IO(PUERTO)#USE FAST_IO(PUERTO)
Con la función output_x() se saca el valor al
puerto y con la función input_x() se lee el
puerto. La directiva no modifica previamente
el registro TRIS correspondiente. (Se utilizarán
a partir del segundo proyecto)
Prof. Luis Zurita Microcontroladores II
MANEJO DE PUERTOS
• A través de las directivas (Se utilizarán a partir del segundo
proyecto)
El compilador ofrece funciones predefinidas para trabajar con
los puertos. Estas funciones son:
output_X(valor); //X = (PORTA, B, C, D o E)
input_X( );input_X( );
set_tris_X(valor);
port_b_pullups (valor); //True o FALSE
get_tris( );
Ejemplo:
output_A(0xFF);
valor=input_B( );
set_tris_C(0x0F);
Prof. Luis Zurita Microcontroladores II
MANEJO DE PUERTOS
• Existen una serie de funciones asociadas a un pin*. El
parámetro pin se define en el fichero include con un formato
del tipo PIN_Xn, donde X es el puerto y n es el número de pin.
#define PIN_A0 40
#define PIN_A1 41
Las funciones son:Las funciones son:
output_low (pin*);
output_high (pin*);
output_bit (pin*,valor);
output_toggle (pin*);
output_float (pin*); // pin de entrada a tensión flotante
input_state (pin*);
Input (pin*);
Prof. Luis Zurita Microcontroladores II
MANEJO DE PUERTOS
#include <16F877.h>
#fuses XT,NOWDT,NOLVP
#use delay (clock=4000000)
#use fast_io(B)
void main ( ) {
port_B_pullups (TRUE);
set_tris_B(0x01);set_tris_B(0x01);
output_low(PIN_B1);
while (1){
if (input(PIN_B0)==1)
output_low(PIN_B1);
else
output_high (PIN_B1);
}
}
Prof. Luis Zurita Microcontroladores II
MANEJO DE PUERTOS
#USE STANDARD_IO(PUERTO)
Con la función output_x() el compilador se
asegura de que el terminal, o terminales
correspondientes sean de salida mediante la
modificación del TRIS correspondiente. Con lamodificación del TRIS correspondiente. Con la
función input_x() ocurre lo mismo pero
asegurando el terminal o terminales como
entrada. Es la directiva por defecto. Entonces, el
ejemplo anterior quedaría (Se utilizarán a partir
del segundo proyecto):
Prof. Luis Zurita Microcontroladores II
MANEJO DE PUERTOS
#include <16F877.h>
#fuses XT,NOWDT,NOLVP
#use delay (clock=4000000)
#use standard_io(B)
void main ( ) {
port_b_pullups (TRUE);
output_low(PIN_B1);
port_b_pullups (TRUE);
output_low(PIN_B1);
while (1){
if (input(PIN_B0)==1)
output_low(PIN_B1);
else
output_high (PIN_B1);
}
}
Prof. Luis Zurita Microcontroladores II
ESTRUCTURA DE UN PROGRAMA EN C
( ciclo while )
// Definición de variables globales
// Definición de funciones
void main(void)
{
// Definición de variables locales
// Configuración de registros (recursos y puertos)
// ciclo infinito
while ( 1 )
{
// Programa de usuario
}
}
Prof. Luis Zurita Microcontroladores II
ESTRUCTURA DE UN PROGRAMA EN C
( ciclo for )
// Definición de variables globales
// Definición de funciones
void main(void)
{
// Definición de variables locales
// Configuración de registros (recursos y puertos)
// ciclo infinito
for ( ; ; )
{
// Programa de usuario
}
}
Prof. Luis Zurita Microcontroladores II
ESTRUCTURA DE UN PROGRAMA EN C
( ciclo do - while )
// Definición de variables globales
// Definición de funciones
void main(void)
{
// Definición de variables locales
// Configuración de registros (recursos y puertos)
// ciclo infinito
do
{
// Programa de usuario
} while ( 1 ) ;
}
Prof. Luis Zurita Microcontroladores II

Más contenido relacionado

La actualidad más candente

Resolución de ejercicios compuertas lógicas
Resolución de ejercicios compuertas lógicasResolución de ejercicios compuertas lógicas
Resolución de ejercicios compuertas lógicasCarlos Gascón
 
L09 sumador restador-binariode8bits
L09 sumador restador-binariode8bitsL09 sumador restador-binariode8bits
L09 sumador restador-binariode8bitsChristian Acuña
 
Rectificadores
Rectificadores Rectificadores
Rectificadores Wilfrez
 
Barrido secuencial de displays
Barrido secuencial de displaysBarrido secuencial de displays
Barrido secuencial de displaysKiller_JJ
 
Proyecto no7
Proyecto no7Proyecto no7
Proyecto no7andrevmd
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Luis Zurita
 
500 proyectos de electronica
500 proyectos de electronica500 proyectos de electronica
500 proyectos de electronicafedericoblanco
 
Electrónica Digital: Mapas de karnaugh con 4 variables
Electrónica Digital: Mapas de karnaugh con 4 variablesElectrónica Digital: Mapas de karnaugh con 4 variables
Electrónica Digital: Mapas de karnaugh con 4 variablesAngel Perez
 
INTRODUCCIÓN A LAS FUNCIONES LÓGICAS BÁSICAS
INTRODUCCIÓN A LAS FUNCIONES LÓGICAS BÁSICASINTRODUCCIÓN A LAS FUNCIONES LÓGICAS BÁSICAS
INTRODUCCIÓN A LAS FUNCIONES LÓGICAS BÁSICASAlan EG
 
Reporte de practica sumador binario
Reporte de practica sumador binarioReporte de practica sumador binario
Reporte de practica sumador binarioDiego Ramírez
 
Autómatas de Pila
Autómatas de PilaAutómatas de Pila
Autómatas de PilaPablo Guerra
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
Manual para usar la tarjeta del fpga cyclone iv de altera
Manual para usar la tarjeta del fpga cyclone iv de alteraManual para usar la tarjeta del fpga cyclone iv de altera
Manual para usar la tarjeta del fpga cyclone iv de alteraEdwin Rosario Gabriel
 

La actualidad más candente (20)

Restador completo
Restador completoRestador completo
Restador completo
 
Resolución de ejercicios compuertas lógicas
Resolución de ejercicios compuertas lógicasResolución de ejercicios compuertas lógicas
Resolución de ejercicios compuertas lógicas
 
Convertidores A/D-D/A
Convertidores A/D-D/AConvertidores A/D-D/A
Convertidores A/D-D/A
 
L09 sumador restador-binariode8bits
L09 sumador restador-binariode8bitsL09 sumador restador-binariode8bits
L09 sumador restador-binariode8bits
 
Multivibradores
MultivibradoresMultivibradores
Multivibradores
 
Rectificadores
Rectificadores Rectificadores
Rectificadores
 
Robot seguidor de linea
Robot seguidor de lineaRobot seguidor de linea
Robot seguidor de linea
 
10 registros
10 registros10 registros
10 registros
 
Barrido secuencial de displays
Barrido secuencial de displaysBarrido secuencial de displays
Barrido secuencial de displays
 
Proyecto no7
Proyecto no7Proyecto no7
Proyecto no7
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4
 
500 proyectos de electronica
500 proyectos de electronica500 proyectos de electronica
500 proyectos de electronica
 
Programación de microcontroladores
Programación de microcontroladoresProgramación de microcontroladores
Programación de microcontroladores
 
Electrónica Digital: Mapas de karnaugh con 4 variables
Electrónica Digital: Mapas de karnaugh con 4 variablesElectrónica Digital: Mapas de karnaugh con 4 variables
Electrónica Digital: Mapas de karnaugh con 4 variables
 
INTRODUCCIÓN A LAS FUNCIONES LÓGICAS BÁSICAS
INTRODUCCIÓN A LAS FUNCIONES LÓGICAS BÁSICASINTRODUCCIÓN A LAS FUNCIONES LÓGICAS BÁSICAS
INTRODUCCIÓN A LAS FUNCIONES LÓGICAS BÁSICAS
 
Reporte de practica sumador binario
Reporte de practica sumador binarioReporte de practica sumador binario
Reporte de practica sumador binario
 
Autómatas de Pila
Autómatas de PilaAutómatas de Pila
Autómatas de Pila
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Flip flop
Flip flopFlip flop
Flip flop
 
Manual para usar la tarjeta del fpga cyclone iv de altera
Manual para usar la tarjeta del fpga cyclone iv de alteraManual para usar la tarjeta del fpga cyclone iv de altera
Manual para usar la tarjeta del fpga cyclone iv de altera
 

Destacado

GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3Luis Zurita
 
TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APALuis Zurita
 
EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENLuis Zurita
 
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CEJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CLuis Zurita
 
Uso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorUso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorLuis Zurita
 

Destacado (6)

GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3
 
TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APA
 
Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMEN
 
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CEJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
 
Uso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorUso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensamblador
 

Similar a Micro2 tema 1

Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Introducci _ã_n a c - unidad 02 - elementos del lenguaje
Introducci  _ã_n a c - unidad 02 - elementos del lenguajeIntroducci  _ã_n a c - unidad 02 - elementos del lenguaje
Introducci _ã_n a c - unidad 02 - elementos del lenguajeAbraham Marcos Garrido
 
Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacionthaynasantos1997
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2Luis Zurita
 
PROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORPROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORSistemadeEstudiosMed
 
Introduccion a la programacion en c 1
Introduccion a la programacion en c 1Introduccion a la programacion en c 1
Introduccion a la programacion en c 1georgemanson69
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacionrotflol
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"Diego Rojas Ruiz
 
Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18fitomaster
 
Laboratorio # 1 introducción a arduino
Laboratorio # 1   introducción a arduinoLaboratorio # 1   introducción a arduino
Laboratorio # 1 introducción a arduinoCASERA
 
Entradas salidas digitales 2015
Entradas salidas digitales 2015Entradas salidas digitales 2015
Entradas salidas digitales 2015David Narváez
 

Similar a Micro2 tema 1 (20)

Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Introducci _ã_n a c - unidad 02 - elementos del lenguaje
Introducci  _ã_n a c - unidad 02 - elementos del lenguajeIntroducci  _ã_n a c - unidad 02 - elementos del lenguaje
Introducci _ã_n a c - unidad 02 - elementos del lenguaje
 
Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacion
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
Curso c++
Curso c++Curso c++
Curso c++
 
PROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORPROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADOR
 
Unidad II
Unidad IIUnidad II
Unidad II
 
ELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdfELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdf
 
Introduccion a la programacion en c 1
Introduccion a la programacion en c 1Introduccion a la programacion en c 1
Introduccion a la programacion en c 1
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
 
Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18
 
Laboratorio # 1 introducción a arduino
Laboratorio # 1   introducción a arduinoLaboratorio # 1   introducción a arduino
Laboratorio # 1 introducción a arduino
 
Tarea final
Tarea finalTarea final
Tarea final
 
Entradas salidas digitales 2015
Entradas salidas digitales 2015Entradas salidas digitales 2015
Entradas salidas digitales 2015
 
Arduino uno
Arduino unoArduino uno
Arduino uno
 
Lab 01 micro
Lab 01 microLab 01 micro
Lab 01 micro
 

Más de Luis Zurita

PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUSLuis Zurita
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y tecladoLuis Zurita
 
Grupos micro2 13
Grupos micro2 13Grupos micro2 13
Grupos micro2 13Luis Zurita
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreLuis Zurita
 
Notas def electronica
Notas def electronicaNotas def electronica
Notas def electronicaLuis Zurita
 
Notas proyecto3 iyc
Notas proyecto3 iycNotas proyecto3 iyc
Notas proyecto3 iycLuis Zurita
 
Notas definitivas iyc2013
Notas definitivas iyc2013Notas definitivas iyc2013
Notas definitivas iyc2013Luis Zurita
 
Proyecto 2 electronica
Proyecto 2 electronicaProyecto 2 electronica
Proyecto 2 electronicaLuis Zurita
 
Acumuladas electronica
Acumuladas electronicaAcumuladas electronica
Acumuladas electronicaLuis Zurita
 
Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Luis Zurita
 
Acumuladas iyc2013
Acumuladas iyc2013Acumuladas iyc2013
Acumuladas iyc2013Luis Zurita
 

Más de Luis Zurita (20)

PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUS
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
 
Pevmicroi ieo
Pevmicroi ieoPevmicroi ieo
Pevmicroi ieo
 
Pevmicroii13 2
Pevmicroii13 2Pevmicroii13 2
Pevmicroii13 2
 
Pevmicro1 t2 13
Pevmicro1 t2 13Pevmicro1 t2 13
Pevmicro1 t2 13
 
Pev electronica
Pev electronicaPev electronica
Pev electronica
 
Grupos micro2 13
Grupos micro2 13Grupos micro2 13
Grupos micro2 13
 
Pevmicro1 t2 13
Pevmicro1 t2 13Pevmicro1 t2 13
Pevmicro1 t2 13
 
Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 
Micro2 tema 3
Micro2 tema 3Micro2 tema 3
Micro2 tema 3
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 
Pevmicroii13 2
Pevmicroii13 2Pevmicroii13 2
Pevmicroii13 2
 
Notas def electronica
Notas def electronicaNotas def electronica
Notas def electronica
 
Notas proyecto3 iyc
Notas proyecto3 iycNotas proyecto3 iyc
Notas proyecto3 iyc
 
Notas definitivas iyc2013
Notas definitivas iyc2013Notas definitivas iyc2013
Notas definitivas iyc2013
 
Proyecto 2 electronica
Proyecto 2 electronicaProyecto 2 electronica
Proyecto 2 electronica
 
Acumuladas electronica
Acumuladas electronicaAcumuladas electronica
Acumuladas electronica
 
Pevmicro2013
Pevmicro2013Pevmicro2013
Pevmicro2013
 
Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Proyecto2 notas iyc2013
Proyecto2 notas iyc2013
 
Acumuladas iyc2013
Acumuladas iyc2013Acumuladas iyc2013
Acumuladas iyc2013
 

Último

Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfCarol Andrea Eraso Guerrero
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativafiorelachuctaya2
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 

Último (20)

Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativa
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 

Micro2 tema 1

  • 1. MICROCONTROLADORES II (FAMILIA PIC16F87X)(FAMILIA PIC16F87X) LENGUAJE C PARA PICS TEMA 1 PROF. LUIS ZURITA
  • 2. CARACTERÍSTICAS • Velocidad de operación: hasta 20 MHz de reloj. • 8K x 14 bits por palabra de memoria de programa FLASH. • 368 x 8 bytes de memoria de datos (RAM) • 256 x 8 bytes de memoria de datos EEPROM. • 14 fuentes de interrupciones.• 14 fuentes de interrupciones. • Memoria de pila (stack) de 8 niveles de profundidad. • Protecciones: – Power-on Reset (POR) – Power-up Timer (PWRT) – Oscillator Start-up Timer (OST) – Watchdog Timer (WDT) independiente del cristal. Prof. Luis Zurita Microcontroladores II
  • 3. CARACTERÍSTICAS (PERIFÉRICOS) • Posee 5 puertos de entrada y salida (PORTA, B, C, D, E) • Timer 0: timer/counter de 8 bits con un preescaler de 8 valores. • Timer 1: 16 bits con timer/counter con preescaler • Timer 2: 8 bits con timer/counter con registro de estado• Timer 2: 8 bits con timer/counter con registro de estado de 8-bit, preescaler y post escaler • Dos módulos de Captura, Comparación y PWM (Modulación por anchura de pulso) – Captura es de 16 bits, máx. resolución es 12.5 ns – Comparación es de 16 bits, máx. resolución es 200 ns – PWM con una resolución de 10 bits máxima. Prof. Luis Zurita Microcontroladores II
  • 4. CARACTERÍSTICAS (PERIFÉRICOS 2) • Convertidor analógico a digital de 10-bit multicanal (de 5 a 8 canales) • Puerto serial síncrono (SSP) con SPI. (modo maestro) e I2C (maestro/esclavo) • Transmisor-Receptor síncrono-asíncrono universal (USART/SCI) con 8 – 9 bits(USART/SCI) con 8 – 9 bits • Puerto paralelo esclavo (PSP) con 8 bits de ancho, con terminales de control RD, WR y CS • Arquitectura HARVARD. • Buses separados (datos e instrucciones). • Memoria de programa : 14 bits. • Memoria de datos: 8 bits. • Recursos mapeados en memoria de datos. Prof. Luis Zurita Microcontroladores II
  • 5. LENGUAJE C. TIPOS DE DATOS. El compilador CCS acepta los siguientes tipos de variables: Especificación Significado Tamaño Rango char carácter 8 bits 0 a 255 (sin signo) Int entero 8 bits 0 a 255 (sin signo) float Coma flotante 32 bits 6 bits de precisión Byte Entero de 8 bits 8 bits 0 a 255 double Float doble precisión No soportado No para PCMdouble Float doble precisión No soportado No para PCM void Sin valor nulo Ninguno int1 Entero de 1 bit 1 bit 0 a 1 int8 Entero de 8 bits 8 bits 0 a 255 (sin signo) int16 Entero de 16 bits 16 bits 0 a 65535 int32 Entero de 32 bits 32 bits 0 a (232-1) Short Entero de 1 bit 1 bit 0 a 1 long Entero de 16 bits 16 bits 0 a 65535 (sin signo) Prof. Luis Zurita Microcontroladores II
  • 6. LENGUAJE C. TIPOS DE DATOS Todos los tipos de datos son por defecto sin signo (unsigned) salvo los de tipo float. Para almacenar datos con signo, hay que introducir el modificador signed delante del tipo. El efecto que se consigue es el recogido en la siguiente tabla. Especificación Significado Tamaño Rango Signed char caractér con signo 8 bits -128 a 128 Signed int Entero con signo 8 bits -128 a 128 Los números negativos se codifican en complemento a 2. Cuando se opera con distintos grupos de datos en una misma expresión, se aplican una serie de reglas para resolver las diferencias. En general se produce una “promoción” hacia los tipos de datos de mayor longitud presentes en la expresión. Signed int Entero con signo 8 bits -128 a 128 Signed long Coma flotante 16 bits -32768 a 32768 Prof. Luis Zurita Microcontroladores II
  • 7. LENGUAJE C. CONSTANTES Constantes 123 Decimal 0123 Octal Valor fijo que no cambiará a lo largo del programa. Tipos aceptados: Prof. Luis Zurita Microcontroladores II 0123 Octal 0x123 Hexadecimal 0b01001101 Binario ‘X’ Carácter ‘010’ Carácter octal ‘X’ Carácter especial; x puede ser: ¿n, t, b, r, f, ‘ , d, v? “abcdef” Cadena (el carácter nulo se agrega al final)
  • 8. LENGUAJE C. CONSTANTES • A una constante se le puede asignar un nombre o etiqueta por medio de la directiva #define: #define PI=3.1416; • Cada vez que se escriba la etiqueta “PI” la compilación se encargará de reemplazarla por el valor 3.1416se encargará de reemplazarla por el valor 3.1416 • A veces es necesario guardar las constantes en la memoria del programa, mediante la declaración: const tipo nombre_constante= valor; Ejemplo: const int TOPECONTADOR=100; Prof. Luis Zurita Microcontroladores II
  • 9. OPERADORES • Las expresiones son una combinación de operandos y operadores. Los operandos son los valores sobre los cuales se van a trabajar y los operadores especifican lo que se va a hacer con los operandos. Ejemplo:los operandos. Ejemplo: C= A + B; • Donde “=“ y “+” son operandos de asignación y suma respectivamente. • Indican la tarea que se va a ejecutar sobre los operandos A, B y C. Prof. Luis Zurita Microcontroladores II
  • 10. OPERADORES ARITMÉTICOS Operador Descripción Ejemplo + Suma (enteros o reales) Resul=var1 + var2 - Resta (enteros o reales) Resul=var1 - var2 * Multiplicación (enteros o reales) Resul=var1 * var2 / División (enteros o reales) Resul=var1 / var2 - Cambio de signo en enteros o reales -var1 % Módulo; resto de una división entera Rango=n[A1]%256 OPERADORES RELACIONALES Prof. Luis Zurita Microcontroladores II % Módulo; resto de una división entera Rango=n[A1]%256 Operador Descripción ˂ Menor que ˃ Mayor que ˂= Menor o igual que ˃= Mayor o igual que == Igual a != Distinto de
  • 11. OPERADORES LÓGICOS OPERADORES A NIVEL DE BITS Operador Descripción ! NO lógico (NOT) && Y lógico (AND) || O lógico (OR) OPERADORES A NIVEL DE BITS Prof. Luis Zurita Microcontroladores II Operador Descripción ~ Negación de bits (complemento a 1) & Y de bits (AND) ˄˄ O exclusivo de bits (XOR) | O de bits (OR)
  • 12. OPERADORES DE INCREMENTO Y DECREMENTO OPERADORES DE CORRIMIENTO Operador Descripción ++ Incremento - - Decremento OPERADORES DE CORRIMIENTO Prof. Luis Zurita Microcontroladores II Operador Descripción ˃˃ Desplazamiento a la derecha ˂˂ Desplazamiento a la izquierda Ejemplo. Sea A= 0b00001000, si se ejecuta: A˃˃3; El nuevo valor de A será= 0b00000001, ya con las 3 rotaciones de posición a la derecha.
  • 13. VARIABLES • Las variables se utilizan para nombrar posiciones de memoria RAM; se deben declarar, obligatoriamente, antes de utilizarlas; para ello se debe indicar el nombre y el tipo de dato que se manejará. Se definen de la siguiente forma: • TIPO NOMBRE_VARIABLE[=VALOR INICIAL] – TIPO hace referencia a cualquiera de los tipos de datos – NOMBRE_VARIABLE puede ser cualquiera y el valor inicial es opcional.– NOMBRE_VARIABLE puede ser cualquiera y el valor inicial es opcional. Ejemplos: byte k = 5; byte const SEMANAS = 52; float temp_limit=500.0; char k, kant=‘0’; int x,y,z; int UNIDAD; int UNIDAD=0, DECENA=0, CENTENA=0; Prof. Luis Zurita Microcontroladores II
  • 14. VARIABLES • Las variables pueden ser de tipo LOCAL o GLOBAL. • Las variables locales sólo se utilizan en la función donde se encuentran declaradas; las variables globales se pueden utilizar en todas las funciones delglobales se pueden utilizar en todas las funciones del programa. Ambas deben declararse antes de ser utilizadas y las globales deben declararse antes de cualquier función y fuera de ellas. Las variables globales son puestas a cero cuando se inicia la función principal main(). Prof. Luis Zurita Microcontroladores II
  • 15. EJEMPLO DE VARIABLES LOCALES Y GLOBALES int16 counter; //Variable global Void FUNCION ( ) { int dato1, dato2=34; //Variables locales }} void main() { int8 suma; //Variable local } Prof. Luis Zurita Microcontroladores II
  • 16. FUNCIONES Las funciones son los bloques constructivos fundamentales en C. Todas las sentencias deben encontrarse dentro de funciones. Las funciones deben ser definidas antes de ser utilizadas. Formato general de definición de una función: Tipo_dato nombre_función (tipo param1, tipo param2, …)Tipo_dato nombre_función (tipo param1, tipo param2, …) { cuerpo de la función (sentencias); } El tipo de dato devuelto se indica mediante tipo_dato. Si no se indica nada, se entiende que devuelve un entero. Si no devuelve nada debe incluirse una especificación tipo void. Prof. Luis Zurita Microcontroladores II
  • 17. La manera que tiene una función para devolver un valor es mediante la sentencia return: return (expresión); ó return expresión; La expresión debe proporcionar el mismo tipo de dato que el especificado en la función. Si no debe devolver nada, se finaliza con: return;return; Cuando una función se encuentra con una sentencia return se vuelve a la rutina de llamada inmediatamente y las sentencias posteriores a return no se ejecutan. Además de con las sentencia return, las funciones terminan su ejecución y vuelven al lugar desde donde se les llamó cuando alcanzan la llave de cierre de función } tras ejecutar la última sentencia de la misma. Prof. Luis Zurita Microcontroladores II
  • 18. Además de devolver valores, una función también puede recibir parámetros (denominados argumentos) según se indicó en su definición. Por ejemplo: int suma(int a, int b) { return(a+b); } main() Parámetros formales main() { int c; c= suma(10 , 23); } Los argumentos se pueden pasar a las funciones por valor o por referencia. La llamada por valor copia el argumento de llamada en el parámetro formal de la función y no modifica su valor en la función de partida. Argumentos de llamada Prof. Luis Zurita Microcontroladores II
  • 19. DECLARACIONES DE CONTROL If-else Cuando la expresión evaluada es verdadera, Las instrucciones de la sentencia 1 son ejecutadas. Si la expresión es falsa, las instrucciones de la sentencia 2 son ejecutadas. La expresión debe ser evaluada a un valor entero. Los paréntesis que encierra la expresión son obligatorios. La palabra especial “else sentencia 2” es opcional. If – else: if (expresión) sentencia1; else sentencia2; If – else: if (expresión) { sentencia1;} else { sentencia2;} La palabra especial “else sentencia 2” es opcional. Prof. Luis Zurita Microcontroladores II
  • 20. Sentencia if. Se ejecuta una sentencia o bloque de código si la expresión que acompaña al if tiene un valor distinto a cero (verdadero). Si es cero (falso) continúa sin ejecutar la sentencia o bloque de sentencias. if (expresión) ó if (expresión) sentencia; { sentencia 1; sentencia 2; … } Sentencia if-elseSentencia if-else Se evalúa una expresión y, si es cierta se ejecuta el primer bloque de código o sentencia 1. Si es falsa, se ejecuta el segundo. if (expresión) sentencia 1; else sentencia 2; Abreviatura: (expresión)?(sentencia 1): (sentencia 2); NOTA: Se pueden combinar varios if-else para establecer múltiples caminos de decisión Prof. Luis Zurita Microcontroladores II
  • 21. A=0? C=5 B=10 If (A==0) B=10; Else C=5; NO SI If (A!=1) B=10; Else C=5; Prof. Luis Zurita Microcontroladores II
  • 22. If (A>10) {IF(A>20) B=5; Else B=15;} A>10? SI NO A>20? B=15 B=5 NO SI Prof. Luis Zurita Microcontroladores II
  • 23. B=5 if (A>10) {IF(A>20) B=15;} else B=5; A>10? SI NO A>20? B=15 B=5 SI NO Prof. Luis Zurita Microcontroladores II
  • 24. Sentencia switch Sustituye a if-else cuando se realiza una selección múltiple que compara una expresión con una lista de constantes enteras o caracteres. Cuando se da una coincidencia, el cuerpo de sentencias asociadas a esa constante se ejecuta hasta que aparezca break. switch (expresión) { case constante 1: grupo de sentencias; Nota: break es opcional. Si no aparece se sigue con el case siguiente. break; case constante 2: grupo de sentencias; break; … default: grupo n de sentencias; } No puede haber dos constantes iguales en dos case de la misma sentencia switch. default es opcional y el bloque asociado se ejecuta sólo si no hay ninguna coincidencia con las constantes especificadas. Prof. Luis Zurita Microcontroladores II
  • 25. A=2? B=2 SI A=0? NO B=1 SI switch (A){ case 0: B=1; break; case 2: B=2; break; A=2? B=2 A=3? B=3 SI NO NO break; case 3: B=3; break; default:break; } Prof. Luis Zurita Microcontroladores II
  • 26. Sentencia de bucle for. Se emplea para repetir una sentencia o bloque de sentencias: for (inicialización; condición; incremento) { sentencia(s); } En la inicialización se le asigna un valor inicial a una variable que se emplea para el control de la repetición delvariable que se emplea para el control de la repetición del bucle. La condición se evalúa antes de ejecutar la sentencia. Si es cierta, se ejecuta el bucle. Si no, se sale del mismo. El incremento establece cómo cambia la variable de control cada vez que se repite el bucle. Es posible anidar bucles for para modificar dos o más variables de control. Prof. Luis Zurita Microcontroladores II
  • 27. N<=10? NO NO SI N=1 for(N=1;N<=10;N++) { Printf(“%u”,N); } for(cont=0;cont<=200;cont++) { PORTB=cont;IMPRIMIR N N=N+1 Prof. Luis Zurita Microcontroladores II PORTB=cont; } for(cont=200;cont<=0;cont--) { PORTB=cont; }
  • 28. Sentencia de bucle while: La repetición se lleva a cabo mientras sea cierta una expresión. while (expresión) { sentencia(s); } La expresión se evalúa antes de cualquier iteración. Si es falsa, ya no se ejecuta la sentencia o bloque de sentencias. Sentencia de bucle do-while:Sentencia de bucle do-while: do { sentencia(s); } while (expresión) Las sentencias se ejecutan antes de que se evalúe la expresión, por lo que el bucle se ejecuta siempre al menos una vez. Prof. Luis Zurita Microcontroladores II
  • 29. Condition True? Statement Block Condition Statement Block Comparación entre loops WHILE y DO WHILE Block Condition True? (a) While loop (b) Do..While loop
  • 30. Comparación entre loops WHILE y DO WHILE // DOWHILE.C // Comparison of WHILE and DO WHILE loops #include "16F877A.H" main() { int outbyte1=0; int outbyte2=0; int count; count=0; // This loop is not while (count!=0) // executedwhile (count!=0) // executed { output_C(outbyte1); outbyte1++; count--; } count=0; // This loop is do // executed { output_C(outbyte2); outbyte2++; count--; } while (count!=0); while(1){}; }
  • 31. OTRAS SENTENCIAS • Return: se emplea para devolver datos en las funciones. • Break: permite salir de un bucle, se utiliza para While, For, Do y Switch. • Goto: provoca un salto incondicional. Prof. Luis Zurita Microcontroladores II label Statement Block Continue Goto Break
  • 32. Diferencia entre Continue, Break & Goto // CONTINUE.C // Continue, break and goto jumps #include "16F877A.H" #use delay(clock=4000000) main() { int outbyte; again: outbyte=0; // Goto destination while(1) { output_C(outbyte); // Loop operation delay_ms(10); outbyte++; if (!input(PIN_D0)) continue; // Restart loop if (!input(PIN_D1)) break; // Terminate loop delay_ms(100); if (outbyte==100) goto again; // Unconditional jump } }
  • 33. COMENTARIOS Los comentarios se incluyen en el código fuente para documentar y orientar al programador sobre el código que se diseña. Son ignorados por el compilador y no afectan a la longitud ni rapidez de ejecución del código final. Un comentario se puede colocar en cualquier lugar del programa y pueden tener la longitud y el número de líneas que se quiera. Hay dos formatos posibles para los comentarios:Hay dos formatos posibles para los comentarios: Formato 1. Empiezan por // y llegan hasta el final de la línea. // Esto es un comentario. Formato 2. Empiezan por /* y finalizan por */. No es posible anidar comentarios con este formato. Ejemplos: /*Esto también es un comentario*/ /*Pero esto que /*parece un comentario válido*/ no lo es*/ Prof. Luis Zurita Microcontroladores II
  • 34. DIRECTIVAS DE INTERÉS Las directivas de pre-procesado comienzan con el símbolo # y continúan con un comando específico. La sintaxis depende del comando. Algunos comandos no permiten otros elementos sintácticos en la misma expresión. #DEVICE chip: permite definir el PIC con el que se realizará la compilación. Ejemplo: #device PIC16F877#device PIC16F877 #FUSES options: permite definir la palabra de configuración para programar un PIC. Ejemplo: #fuses XT,NOWDT,PUT,NOPROTECT, NOLVP #INCLUDE <archivo>: permite incluir un fichero en el programa. Ejemplo: #INCLUDE <16f877.h> Prof. Luis Zurita Microcontroladores II
  • 35. DIRECTIVAS DE INTERÉS #USE DELAY (CLOCK=SPEED): permite definir las frecuencias del oscilador del PIC, el compilador lo utiliza para realizar cálculos de tiempo. Se puede utilizar M, MHZ, K y KHZ para definir la frecuencia. Ejemplo: #use delay(clock=4000000)#use delay(clock=4000000) Luego de definida en las declaraciones se pueden utilizar las funciones: delay_ms(tiempo en milisegundos) delay_us(tiempo en microsegundos) delay_cycles(tiempo en base a los ciclos de máquina) Prof. Luis Zurita Microcontroladores II
  • 36. MANEJO DE LOS PUERTOS FUNCIONES • El compilador CCS suministra una serie de funciones predefinidas para acceder y utilizar el PIC y sus periféricos. Estas funciones facilitan la configuración del PIC sin entrar en el nivel de los registros especiales. MANEJO DE LOS PUERTOS • En lenguaje C se pueden gestionar los puertos de dos formas: – Se declaran los registros TRISX y PORTX definiendo su posición en la memoria RAM como variables de C. – Utilizando las directivas específicas del compilador (#USE FAST_IO,#USE STANDARD_IO) Prof. Luis Zurita Microcontroladores II
  • 37. MANEJO DE LOS PUERTOS • A través de la RAM: #BYTE variable=constante. Ejemplo: #BYTE TRISA=0x85 //variable TRISA en 85h #BYTE PORTA=0x05 //variable PORTA en 05h #BYTE TRISB=0x86 //variable TRISB en 86h #BYTE PORTB=0x06 //variable PORTB en 06h#BYTE PORTB=0x06 //variable PORTB en 06h #BYTE TRISC=0x87 //variable TRISC en 87h #BYTE PORTC=0x07 //variable PORTC en 07h #BYTE TRISD=0x88 //variable TRISD en 88h #BYTE PORTD=0x08 //variable PORTD en 08h #BYTE TRISE=0x89 //variable TRISE en 89h #BYTE PORTE=0x09 //variable PORTE en 09h Prof. Luis Zurita Microcontroladores II
  • 38. MANEJO DE LOS PUERTOS • Una vez definidas estas variables se pueden configurar y controlar los puertos a través de los comandos de asignación. TRISA= 0xFF; TRISB= 0x00;TRISB= 0x00; TRISC=0x0F; • Escritura en los puertos: PORTC=0x0A; • Lectura de puertos: dato=PORTA; // Asigna el valor del puerto A a la // variable dato. Prof. Luis Zurita Microcontroladores II
  • 39. MANEJO DE LOS PUERTOS Existen unas funciones de C que permiten trabajar bit a bit con los registros o variables definidas previamente. Estas funciones son las siguientes: bit_clear(var,bit); //Pone a 0 el bit indicado de la variable bit_set(var,bit); //Pone a 1 el bit indicado de la variable Bit_test(var,bit); // Pregunta por el estado lógico del bitBit_test(var,bit); // Pregunta por el estado lógico del bit Swap(var); // intercambia nibbles de la variable Ejemplos: bit_set(PORTC,4); If (bit_test(PORTB,2)==1) //Si RB2 es igual a uno { bit_clear(PORTB,5); //Pone RB5 a cero } Prof. Luis Zurita Microcontroladores II
  • 40. MANEJO DE LOS PUERTOS • Se puede declarar un bit de un registro mediante la directiva #BIT, lo que permite trabajar directamente con el terminal: #BIT nombre = posición.bit. Ejemplo:#BIT nombre = posición.bit. Ejemplo: #BIT RA2=0x05.2 //PORTA=0x05 #BIT RB4=0x06.4 //PORTB=0x06 RB4=0; RA2=1; Prof. Luis Zurita Microcontroladores II
  • 41. MANEJO DE LOS PUERTOS #include <16F877.h> #fuses XT,NOWDT,NOLVP #use delay (clock=4000000) #BYTE TRISB=0x86 #BYTE PORTB=0x06 #BYTE OPTION_REG=0x81 void main ( ) { bit_clear (OPTION_REG,7);bit_clear (OPTION_REG,7); bit_set (TRISB,0); bit_clear (TRISB,1); bit_clear (PORTB,1); while (1){ if (bit_test(PORTB,0)==1) bit_clear(PORTB,1); else bit_set(PORTB,1); } } Prof. Luis Zurita Microcontroladores II
  • 42. MANEJO DE PUERTOS • Las funciones output_x() e input_x() dependen de la directiva tipo #USE_IO que esté activa. Directivas: #USE FAST_IO(PUERTO)#USE FAST_IO(PUERTO) Con la función output_x() se saca el valor al puerto y con la función input_x() se lee el puerto. La directiva no modifica previamente el registro TRIS correspondiente. (Se utilizarán a partir del segundo proyecto) Prof. Luis Zurita Microcontroladores II
  • 43. MANEJO DE PUERTOS • A través de las directivas (Se utilizarán a partir del segundo proyecto) El compilador ofrece funciones predefinidas para trabajar con los puertos. Estas funciones son: output_X(valor); //X = (PORTA, B, C, D o E) input_X( );input_X( ); set_tris_X(valor); port_b_pullups (valor); //True o FALSE get_tris( ); Ejemplo: output_A(0xFF); valor=input_B( ); set_tris_C(0x0F); Prof. Luis Zurita Microcontroladores II
  • 44. MANEJO DE PUERTOS • Existen una serie de funciones asociadas a un pin*. El parámetro pin se define en el fichero include con un formato del tipo PIN_Xn, donde X es el puerto y n es el número de pin. #define PIN_A0 40 #define PIN_A1 41 Las funciones son:Las funciones son: output_low (pin*); output_high (pin*); output_bit (pin*,valor); output_toggle (pin*); output_float (pin*); // pin de entrada a tensión flotante input_state (pin*); Input (pin*); Prof. Luis Zurita Microcontroladores II
  • 45. MANEJO DE PUERTOS #include <16F877.h> #fuses XT,NOWDT,NOLVP #use delay (clock=4000000) #use fast_io(B) void main ( ) { port_B_pullups (TRUE); set_tris_B(0x01);set_tris_B(0x01); output_low(PIN_B1); while (1){ if (input(PIN_B0)==1) output_low(PIN_B1); else output_high (PIN_B1); } } Prof. Luis Zurita Microcontroladores II
  • 46. MANEJO DE PUERTOS #USE STANDARD_IO(PUERTO) Con la función output_x() el compilador se asegura de que el terminal, o terminales correspondientes sean de salida mediante la modificación del TRIS correspondiente. Con lamodificación del TRIS correspondiente. Con la función input_x() ocurre lo mismo pero asegurando el terminal o terminales como entrada. Es la directiva por defecto. Entonces, el ejemplo anterior quedaría (Se utilizarán a partir del segundo proyecto): Prof. Luis Zurita Microcontroladores II
  • 47. MANEJO DE PUERTOS #include <16F877.h> #fuses XT,NOWDT,NOLVP #use delay (clock=4000000) #use standard_io(B) void main ( ) { port_b_pullups (TRUE); output_low(PIN_B1); port_b_pullups (TRUE); output_low(PIN_B1); while (1){ if (input(PIN_B0)==1) output_low(PIN_B1); else output_high (PIN_B1); } } Prof. Luis Zurita Microcontroladores II
  • 48. ESTRUCTURA DE UN PROGRAMA EN C ( ciclo while ) // Definición de variables globales // Definición de funciones void main(void) { // Definición de variables locales // Configuración de registros (recursos y puertos) // ciclo infinito while ( 1 ) { // Programa de usuario } } Prof. Luis Zurita Microcontroladores II
  • 49. ESTRUCTURA DE UN PROGRAMA EN C ( ciclo for ) // Definición de variables globales // Definición de funciones void main(void) { // Definición de variables locales // Configuración de registros (recursos y puertos) // ciclo infinito for ( ; ; ) { // Programa de usuario } } Prof. Luis Zurita Microcontroladores II
  • 50. ESTRUCTURA DE UN PROGRAMA EN C ( ciclo do - while ) // Definición de variables globales // Definición de funciones void main(void) { // Definición de variables locales // Configuración de registros (recursos y puertos) // ciclo infinito do { // Programa de usuario } while ( 1 ) ; } Prof. Luis Zurita Microcontroladores II