Está en la página 1de 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

RA2, RA1, RA0 )

PORTA ( RA5, RA4, RA3, PORTB ( RB7, RB6, RB5, PORTC ( RC7, RC6, RC5,
RC4, RC3, RC2, RC1, RC0 )

RB4, RB3, RB2, RB1, RB0 )

RD4, RD3, RD2, RD1, RD0 )

PORTD ( RD7, RD6, RD5, 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


Puerto
PORTA

# funciones
3

Funciones
Entradas digital Salidas digital Entradas analgicas Entradas digital Salidas digital Entradas digital Salidas digital Medios de comunicacin Entradas digital Salidas digital Puerto paralelo esclavo Entradas digital Salidas digital Entradas analgicas Control del puerto paralelo esclavo

PUERTOS

PORTB

PORTC

PORTD

PORTE

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

en

// 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 } }

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

en

// 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 } }

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

en

// 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 ) ;

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

También podría gustarte