Está en la página 1de 4

Ejemplos de programas para microcontrolador PIC

A continuacin se presentan varios proyectos simples para microcontrolador PIC que te permitirn conocer algunos de los fundamentos de esta pequea maravilla. Algunos estn escritos en Assembler, otros en lenguaje C (para compilador CCS). Aunque estn diseados para apuntar a algunos modelos de PIC en particular, son fcilmente modificables para que funcionen en cualquier otro. Parpadeo mltiple en C (sin usar interrupcin)

Para PIC16F874/874A/877/877A, escrito en C para compilador CCS-C Compiler. Este programa sirve para probar el buen funcionamiento de cada uno de los pines de I/O del PIC16F874. Para ello, se prenden y apagan intermitentemente cada 500 ms. Recordar que pin A4 es open drain (debe usarse un resistencia pull-up en ese pin) !

Diagrama esquemtico

Cdigo fuente (C para compilador CCS)


// Este programa sirve para probar el buen funcionamiento de cada uno de los pines de I/O // del PIC16F874. Para ello, se prenden y apagan intermitentemente cada 500 ms. Recordar que // pin A4 es open drain (debe usarse un resistencia pull-up en ese pin) ! #device PIC16F874 #include <16f874.h> #include #use DELAY(Clock=6000000) #use STANDARD_IO(A) #use STANDARD_IO(B) //Usando un cristal de 6 MHz

#use STANDARD_IO(C) #use STANDARD_IO(D) #use STANDARD_IO(E) void main() { short int i; i = 0; while(1) { output_bit(PIN_B0,i); output_bit(PIN_B1,i); output_bit(PIN_B2,i); output_bit(PIN_B3,i); output_bit(PIN_B4,i); output_bit(PIN_B5,i); output_bit(PIN_B6,i); output_bit(PIN_B7,i); output_bit(PIN_A0,i); output_bit(PIN_A1,i); output_bit(PIN_A2,i); output_bit(PIN_A3,i); output_bit(PIN_A4,i); output_bit(PIN_A5,i); output_bit(PIN_E0,i); output_bit(PIN_E1,i); output_bit(PIN_E2,i); output_bit(PIN_C0,i); output_bit(PIN_C1,i); output_bit(PIN_C2,i); output_bit(PIN_C3,i); output_bit(PIN_C4,i); output_bit(PIN_C5,i); output_bit(PIN_C6,i); output_bit(PIN_C7,i); output_bit(PIN_D0,i); output_bit(PIN_D1,i); output_bit(PIN_D2,i); output_bit(PIN_D3,i); output_bit(PIN_D4,i); output_bit(PIN_D5,i); output_bit(PIN_D6,i); output_bit(PIN_D7,i); i=!i; delay_ms(500); } }

Prueba bsica Assembler

Para PIC16F84, escrito en Assembler. Este sencillo programa funciona de la siguiente manera: si el pin RB0 est en 0, entonces apaga el LED conectado a RA0. Si el pin RB0 est en 1, entonces prende el LED conectado a RA0. Qu complicado! Recuerda conectar el pin RA0 al LED a travs de una resistencia de unos 330 ohms.

Diagrama esquemtico

Cdigo fuente (Assembler)


;Este sencillo programa funciona de la siguiente manera: si el pin ;RB0 est en 0, entonces apaga el LED conectado a RA0. Si el pin RB0 ;est en 1, entonces prende el LED conectado a RA0. Qu complicado! ;Recuerda conectar el pin RA0 al LED a travs de una resistencia de unos 330 ohms. ;***** Creado por: Jos Luis Ortiz G. ***** ;***** Junio 2004 ***** list p=16f84 include <p16f84.inc> ORG H'00' GOTO PARTIDA ORG H'04' RETFIE PARTIDA BCF BSF MOVLW MOVWF MOVLW MOVWF

STATUS,RP1 STATUS,RP0 ;banco 1 B'00011110' TRISA ;PORTA output slo RA0 H'FF' TRISB ;PORTB es input, en particular RB0

BCF LOOP BTFSC CALL BTFSS CALL GOTO

STATUS,RP0

;banco 0

PORTB,0 ;RB0 est en 0? PRENDE_LED ;si NO (o sea,RB0=1), entonces prende el LED PORTB,0 ;RB0 est en 1? APAGA_LED ;si NO (o sea,RB0=0), entonces apaga el LED LOOP

PRENDE_LED BSF PORTA,0 ;pone en 1 el pin RA0 RETURN APAGA_LED BCF PORTA,0 ;pone en 0 el pin RA0 RETURN END