Sie sind auf Seite 1von 23

Fundamentos de Lenguaje C para PIC

16F877A

Lic. Braulio Parizaca Puma

Fundamentos de Lenguaje C para PICs


Caractersticas

Velocidad de operacin: 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

Fundamentos de Lenguaje C para PICs


Puertos de entrada y salida

PORTA ( RA5, RA4, RA3,

RA2, RA1, RA0 )

PORTB ( RB7, RB6, RB5,

RB4, RB3, RB2, RB1, RB0 )

PORTC ( RC7, RC6, RC5,


RC4, RC3, RC2, RC1, RC0 )

PORTD ( RD7, RD6, RD5,

RD4, RD3, RD2, RD1, RD0 )

PORTE ( RE2, RE1, RE0 )

Fundamentos de Lenguaje C para PICs


Arquitectura interna

Arquitectura HARVARD.

Buses separados (datos e instrucciones).

Memoria de programa : 14 bits.

Memoria de datos: 8 bits.

Recursos mapeados en memoria de datos.

Fundamentos de Lenguaje C para PICs

PUERTOS

Puerto

# funciones

Funciones

PORTA

Entradas digital
Salidas digital
Entradas analgicas

PORTB

Entradas digital
Salidas digital

PORTC

Entradas digital
Salidas digital
Medios de comunicacin

PORTD

Entradas digital
Salidas digital
Puerto paralelo esclavo

PORTE

Entradas digital
Salidas digital
Entradas analgicas
Control del puerto paralelo esclavo

Fundamentos de Lenguaje C para PICs

Fundamentos de Lenguaje C para PICs

Fundamentos de Lenguaje C para PICs

Fundamentos de Lenguaje C para PICs

Fundamentos de Lenguaje C para PICs


Ejemplo de Funciones:
//FUNCIONES
int suma(int a,int b,int c)
{
return(a + b - c);
}
//PROGRAMA
void main(void)
{
int c;
c = suma(1,5,1);
output_b(c);
}

Fundamentos de Lenguaje C para PICs

Fundamentos de Lenguaje C para PICs


Ejemplo de sentencia if-else:
//PROGRAMA
void main(void)
{
while(1)
{
if(!input(PIN_B0))
{
output_bit(PIN_C0,0);
}
else
{
output_bit(PIN_C0,1);
}
}
}

Fundamentos de Lenguaje C para PICs

Fundamentos de Lenguaje C para PICs


Ejemplo de sentencia switch:
//VARIABLES
int numero;
//PROGRAMA
void main(void)
{
while(1)
{
numero = input_b();
switch(numero)
{
case 1:
output_c(1);
break;
case 2:
output_c(2);
break;
case 3:
output_c(4);
break;

case 4:
output_c(8);
break;
case 5:
output_c(16);
break;
case 6:
output_c(32);
break;
case 7:
output_c(64);
break;
case 8:
output_c(128);
break;
default:
output_c(0);
}

Fundamentos de Lenguaje C para PICs


Ejemplo de sentencia switch:
//VARIABLES
int numero;
//PROGRAMA
void main(void)
{
while(1)
{
numero = input_b();
switch(numero)
{
case 6:
output_c(32);
break;

Fundamentos de Lenguaje C para PICs

Estructura
( ciclo for )

de

un

programa

// Definicin de variables globales


// Definicin de funciones
void main(void)
{
// Definicin de variables locales
// Configuracin de registros (recursos y puertos)
// ciclo infinito
for ( ; ; )
{
// Programa de usuario
}

en

Fundamentos de Lenguaje C para PICs


Ejemplo de sentencia for :
//VARIABLES
int i,cont; //variables definidas
//PROGRAMA
void main(void)
{
do{ //bucle...
cont=1; //inicializar...
for(i=1;i<8;i++)//led's on derecha
{
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont*2;
}
for(i=1;i<8;i++)
{
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont/2;
}
}while(TRUE); //...infinito
}

Lic. Braulio Parizaca Puma

Fundamentos de Lenguaje C para PICs

Estructura
( ciclo while )

de

un

programa

// Definicin de variables globales


// Definicin de funciones
void main(void)
{
// Definicin de variables locales
// Configuracin de registros (recursos y puertos)
// ciclo infinito
while ( 1 )
{
// Programa de usuario
}

en

Fundamentos de Lenguaje C para PICs


Ejemplo de sentencia while:
//PROGRAMA
void main(void)
{
while(1)
{
if(!input(PIN_B0))
{
output_bit(PIN_C0,0);
}
else
{
output_bit(PIN_C0,1);
}
}
}

Estructura

( ciclo do - while )

de

un

programa

// Definicin de variables globales


// Definicin de funciones
void main(void)
{
// Definicin de variables locales
// Configuracin de registros (recursos y puertos)
// ciclo infinito
do
{
// Programa de usuario
}

} while ( 1 ) ;

en

Fundamentos de Lenguaje C para PICs


Ejemplo de sentencia do-while:
//VARIABLES
int i,cont; //variables definidas
//PROGRAMA
void main(void)
{
do{ //bucle...
cont=1; //inicializar...
for(i=1;i<8;i++)//led's on derecha
{
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont*2;
}
for(i=1;i<8;i++)
{
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont/2;
}
}while(TRUE); //...infinito
}

Lic. Braulio Parizaca Puma

Das könnte Ihnen auch gefallen