Está en la página 1de 18

AVANSYS

ELECTRNICA INDUSTRIAL

PROGRAMANDO
MICROCONTROLADORES PIC
OBJETIVO:

1. Comparar los diferentes tipos de PICs


2. Manejar y gestionar los puertos del PIC mediante las
directivas y funciones del PIC C COMPILER.

CARACTERSTICAS PIC16F84-16F88-16F628-16F877

RESUMEN

MICROCONTROLADORES PIC II

AVANSYS

ELECTRNICA INDUSTRIAL

DIAGRAMA DE PINES

MICROCONTROLADORES PIC II

AVANSYS

MICROCONTROLADORES PIC II

ELECTRNICA INDUSTRIAL

AVANSYS

MICROCONTROLADORES PIC II

ELECTRNICA INDUSTRIAL

AVANSYS

MICROCONTROLADORES PIC II

ELECTRNICA INDUSTRIAL

AVANSYS

ELECTRNICA INDUSTRIAL

MANEJO DE FUNCIONES EN LENGUAJE C Y EL


COMPILADOR PIC C COMPILER
DIRECTIVAS DE INTERS

MICROCONTROLADORES PIC II

AVANSYS

ELECTRNICA INDUSTRIAL

FUNCIONES

GESTIN DE PUERTOS

MICROCONTROLADORES PIC II

AVANSYS

MICROCONTROLADORES PIC II

ELECTRNICA INDUSTRIAL

AVANSYS

ELECTRNICA INDUSTRIAL

EJEMPLO DE MANEJO DE PUERTOS


MEDIANTE RAM

MICROCONTROLADORES PIC II

AVANSYS

MICROCONTROLADORES PIC II

ELECTRNICA INDUSTRIAL

10

AVANSYS

ELECTRNICA INDUSTRIAL

EJEMPLO MANEJO DE PUERTOS


MANEJANDO PINES

MICROCONTROLADORES PIC II

11

AVANSYS

ELECTRNICA INDUSTRIAL

EJEMPLO MANEJO DE PUERTOS CON


STANDARD _IO

EJEMPLOS APLICATIVOS
MICROCONTROLADORES PIC II

12

AVANSYS

ELECTRNICA INDUSTRIAL

1. EJEMPLO: PROGRAMA QUE ACTIVA LEDS EN EL PUERTO C, SI LA ENTRADA DE EN EL


BIT RB0 DEL PUERTO A ES 1, SI ES 0 DE APAGA LOS LEDS DEL PUERTO C

#INCLUDE <16F877A.H>
#USE DELAY (CLOCK=4MHZ)
VOID MAIN (){
WHILE(TRUE){
IF(INPUT(PIN_B0)){
OUTPUT_HIGH(PIN_C0);
OUTPUT_HIGH(PIN_C1);
}
IF(!INPUT (PIN_B0)){
OUTPUT_LOW(PIN_C0);
OUTPUT_LOW(PIN_C1);
}
}
}

RESULTADO

MICROCONTROLADORES PIC II

13

AVANSYS

ELECTRNICA INDUSTRIAL

2. PROGRAMA QUE LEE EL PUERTO A DEL PIC Y MUESTRA EL CONTENIDO DEL


PUERTO A EN EL PUERTO B.
#include <16f877a.h>//PIC a utilizar
#USE DELAY( CLOCK=4000000 ) //Oscilador
#FUSES XT,NOWDT,NOPROTECT,NOPUT//Ordenes para el programador
/////////Programa principal/////////////
void main(void)//Programa Principal
{
int x;//declaramo x como entero
set_tris_b(0x00);//configuramos el puerto b como salida
set_tris_a(0xff);//configuramos el puerto a como entrada
while(true)//ciclo
{
x=input_a();//pasamos lo que hay en el puerto A a x
output_b(x);//pasamos lo que hay en x al puerto B
}
}
////////////fin del programa principal//////////////

MICROCONTROLADORES PIC II

14

AVANSYS

ELECTRNICA INDUSTRIAL

3. PROGRAMA QUE MANEJA PUERTOS MEDIANTE LA GESTIN DE LA


MEMORIA RAM DEL PIC.
#INCLUDE <16F877A.H>
#USE DELAY (CLOCK=4MHZ)
#FUSES XT,NOWDT,NOPUT,NOPROTECT
#BYTE TRISB=0X86
#BYTE PORTB=0X06
#BYTE OPTION_REG=0X81
//PROGRAMA QUE GESTIONA PUERTOS POR RAM

MICROCONTROLADORES PIC II

15

AVANSYS

ELECTRNICA INDUSTRIAL

// SI BIT RB0 ES 0 PRENDE RB1


//SI RB0 ES 1 APAGA RB1
void main()
{
BIT_CLEAR(OPTION_REG,7);
BIT_SET(TRISB,0);
BIT_CLEAR(TRISB,1);
BIT_SET(PORTB,1);
WHILE(TRUE){
IF (BIT_TEST(PORTB,0)==1)
BIT_CLEAR(PORTB,1);
ELSE
BIT_SET(PORTB,1);
}
}

MICROCONTROLADORES PIC II

16

AVANSYS

ELECTRNICA INDUSTRIAL

4. EJEMPLO4: MANEJO DE DISPLAY DE 7 SEGMENTOS


#INCLUDE <16F877A.H>
#USE DELAY (CLOCK=4MHZ)
#FUSES XT,NOWDT,NOPUT,NOPROTECT
#USE STANDARD_IO(B)
// PROGRAMA CONTADOR 0,1........CON DISPLAY ANODO COMUN
INT16 TIEMPO=500;

VOID MAIN()
{
WHILE(1){
OUTPUT_B(0B1000000);//GFEDCBA ES B7................B0
DELAY_MS(TIEMPO);
OUTPUT_B(0B1111001);
DELAY_MS(TIEMPO);
}
}

MICROCONTROLADORES PIC II

17

AVANSYS

MICROCONTROLADORES PIC II

ELECTRNICA INDUSTRIAL

18

También podría gustarte