Fundamentos de Lenguaje C para PIC

16F877A

Lic. Braulio Parizaca Puma

Fundamentos de Lenguaje C para PICs 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

Fundamentos de Lenguaje C para PICs Puertos de entrada y salida  RA2. RE0 ) . RC4. RD1. RC6. RC1. RD3. RC2. RA0 )  PORTA ( RA5. RA3. RD5. RB3. RD0 )  PORTD ( RD7. RB0 )   RD4. RB6. RB2. PORTC ( RC7. RE1. RC5. PORTB ( RB7. RB1. RA4. RC3. RB5. RA1. PORTE ( RE2. RD6. RC0 ) RB4. RD2.

Recursos mapeados en memoria de datos. Buses separados (datos e instrucciones).Fundamentos de Lenguaje C para PICs Arquitectura interna      Arquitectura HARVARD. Memoria de datos: 8 bits. Memoria de programa : 14 bits. .

Fundamentos de Lenguaje C para PICs Puerto PORTA # funciones 3 Funciones Entradas digital Salidas digital Entradas analógicas Entradas digital Salidas digital Entradas digital Salidas digital Medios de comunicación Entradas digital Salidas digital Puerto paralelo esclavo Entradas digital Salidas digital Entradas analógicas Control del puerto paralelo esclavo PUERTOS PORTB 2 PORTC 3 PORTD 3 PORTE 4 .

Fundamentos de Lenguaje C para PICs .

Fundamentos de Lenguaje C para PICs .

Fundamentos de Lenguaje C para PICs .

Fundamentos de Lenguaje C para PICs .

} . } //PROGRAMA void main(void) { int c. output_b(c).int c) { return(a + b .Fundamentos de Lenguaje C para PICs Ejemplo de Funciones: //FUNCIONES int suma(int a.5.1).c).int b. c = suma(1.

Fundamentos de Lenguaje C para PICs .

0).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.1). } } } . } else { output_bit(PIN_C0.

Fundamentos de Lenguaje C para PICs .

//PROGRAMA void main(void) { while(1) { numero = input_b(). break.Fundamentos de Lenguaje C para PICs Ejemplo de sentencia switch: //VARIABLES int numero. break. break. case 2: output_c(2). break. case 7: output_c(64). break. break. case 6: output_c(32). default: output_c(0). break. case 8: output_c(128). switch(numero) { case 1: output_c(1). } } } . case 4: output_c(8). case 3: output_c(4). case 5: output_c(16). break.

} } } . //PROGRAMA void main(void) { while(1) { numero = input_b(). break. switch(numero) { case 6: output_c(32).Fundamentos de Lenguaje C para PICs Ejemplo de sentencia switch: //VARIABLES int numero.

Fundamentos de Lenguaje C para PICs .

) { // Programa de usuario } } .Estructura ( ciclo for ) de un programa en C // 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 ( . .

//variables definidas //PROGRAMA void main(void) { do{ //bucle.i<8. //inicializar. //..i++)//led's on derecha { output_b(cont).cont. } for(i=1. cont=cont*2. //ilumino led correspondiente delay_ms(100). cont=1.. cont=cont/2.... //ilumino led correspondiente delay_ms(100). } }while(TRUE).i++) { output_b(cont).infinito } Lic.i<8.Fundamentos de Lenguaje C para PICs Ejemplo de sentencia for : //VARIABLES int i.. Braulio Parizaca Puma . for(i=1.

Fundamentos de Lenguaje C para PICs .

Estructura ( ciclo while ) de un programa en C // 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 } } .

Fundamentos de Lenguaje C para PICs Ejemplo de sentencia while: //PROGRAMA void main(void) { while(1) { if(!input(PIN_B0)) { output_bit(PIN_C0. } } } .1). } else { output_bit(PIN_C0.0).

Estructura ( ciclo do .while ) de un programa en C // 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 ) . .

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