You are on page 1of 20

// EJEM1.

// **********

// Código ejemplo para el PIC18F2550 que encende y apaga

// un led conectado al PORTC (RC0) cada 50 ms.

// Fecha: Setiembre 2017

// Autor: Mg. Javier Camilo Poma Palacios

#include <18f2550.h>

#fuses HS,NOMCLR,PUT,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOPBADEN

#use delay (clock=8000000)

#use fast_io(c)

void main()

set_tris_c(0x00); // configura los puertos como salidas

output_c (0x00);

WHILE (TRUE)

output_high(PIN_C0);

delay_ms(50);

output_low(PIN_C0);

delay_ms(50);

}
// EJEM2.C

// **********

// Código ejemplo para hacer funcionar luces secuenciales de 8 led´s conectado

// al PORTB en intervalos de 50 ms.

// Fecha: Setiembre 2017

// Autor: Mg. Javier Camilo Poma Palacios

#include <18F2550.h> //archivo de cabecera

#fuses HS,NOMCLR,PUT,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOPBADEN

//Configuración del micrcontrolador

#use delay(clock=20000000) //El clock para el CPU

void main()

set_tris_b(0x00);

output_b (0); //Saca un nivel bajo de salida en los puertos

int8 X=0x01;

while(TRUE)

output_b(X); //Saca un nivel alto en el portb

delay_ms(50); //Retardo de 50 ms
rotate_left(&X,1);

// EJEM3.C

// *******

/* Este es un programa ejemplo para la asignatura

Sistemas Basados en microprocesadores a cargo del Mg. Camilo Poma */

// Pampas, Setiembre 2017

#include <18f2550.h> //archivo de cabecera

#fuses HS,NOMCLR,PUT,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOPBADEN

// el fuse que configuramos anteriormente

#use delay(clock=20000000) // el clock que tendremos a la entrada del CPU

int8 const led[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

int N;

void main()

set_tris_b(0x00);

output_b(0);

WHILE (TRUE)
{

for (N=0;N<8;N++)

output_b(led[N]);

delay_ms(75);

// EJEM4.C

// *******

/* Este es un programa ejemplo para la asignatura

Sistemas Basados en microprocesadores a cargo del Mg. Camilo Poma Palacios*/

// Pmpas, Setiembre 2017

#include <18f2550.h> //identifica uC

#fuses HS,NOMCLR,PUT,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOPBADEN

//el fuse que configuramos anteriormente

#use delay(clock=10000000) //el clock que tendremos a la entrada del CPU

int8 const
led[12]={0x8000001,0x400002,0x200004,0x100008,0x80010,0x40020,0x20040,0x10080,0x810
0,0x4200,0x2400,0x1800};

int N;
void main()

set_tris_b(0x00);

output_b(0);

WHILE (TRUE)

for (N=0;N<12;N++)

output_b(led[N]);

delay_ms(150);

// EJEM5.C

// **********

// Código ejemplo de luces secuenciales de 16 led´s conectado

// al PORTB y PORTA en intervalos de 150 ms a la izquierda.

// Fecha: Octubre 2017

// Autor: Mg. Javier Camilo Poma Palacios

#include <18f2550.h> //archivo de cabecera


#fuses XT,NOMCLR,PUT,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOPBADEN

// el fuse que configuramos anteriormente

#use delay(clock=4000000) // el clock que tendremos a la entrada del CPU

#use fast_io(A)

#use fast_io(B)

int8 const X[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

int8 const Y[6]={0x01,0x02,0x04,0x08,0x10,0x20};

int8 i=0,j=0;

void main()

setup_comparator(NC_NC_NC_NC);

set_tris_a(0x00);

set_tris_b(0x00);

WHILE (TRUE)

for (i=0;i<8;i++)

output_b(X[i]);

delay_ms(150);

output_b(0);

for (j=0;j<6;j++)

output_a(Y[j]);

delay_ms(150);

output_a(0);

}
}

/* EJEM6.C

Luces secuencialea de 8 bits.

Mg. J. Camilo Poma Palacios

Pampas, setiembre 2017. */

#INCLUDE <18F2550.h>

#FUSES HS,PUT,NOWDT,NOPBADEN,NOMCLR,NOLVP //configura PIC

#USE DELAY(clock=24000000) //Reloj

#USE fast_io(a)

#USE fast_io(b)

int8 LEDS=0x80;

void main()

set_tris_b(0x00);

output_b(0x01);

set_tris_a(0x00);
output_a(0x01);

DO

output_b(LEDS);

rotate_right(&LEDS,1);

delay_ms(100);

output_a(LEDS);

rotate_right(&LEDS,0);

delay_ms(0);

WHILE(TRUE);

/* EJEM7.C

*******

Luces secuencialea de 8 bits ida y vuelta tantas veces con X.

Pampas, setiembre 2017 */

// Autor: Mg. Javier Camilo Poma Palacios

#INCLUDE <18F2550.h>
#FUSES XT,PUT,NOWDT,NOPBADEN,MCLR,NOLVP //configura PIC

#USE DELAY(clock=4000000) //Reloj

#USE FAST_IO (A)

#USE FAST_IO (B)

int8 LEDS=0x01,X=0;

void main()

set_tris_a(0);

set_tris_b(0x00);

output_a(0x00);

output_b(0x00);

//WHILE(TRUE)

DO

//Iluminacion hacia la izquierda

DO

output_b(LEDS);

rotate_left(&LEDS,1);

delay_ms(100);

WHILE(bit_test(LEDS,7)==0);

//Iluminacion hacia la derecha

DO

{
output_b(LEDS);

rotate_right(&LEDS,1);

delay_ms(100);

WHILE(bit_test(LEDS,0)==0);

X++;

WHILE(X<6);

/* EJEM8.C

*******

Luces secuencialea de 16 bits a la izquierda.

Pampas, setiembre 2016. */

// Autor: Mg. Javier Camilo Poma Palacios

#INCLUDE <18F2550.h>

#FUSES HS,PUT,NOWDT,NOPBADEN,NOMCLR,NOLVP //configura PIC

#USE DELAY(clock=10000000) //Reloj

#USE fast_io(a)
#USE fast_io(b)

int8 LEDS;

void main()

set_tris_a(0x00);

set_tris_b(0x00);

output_a(0x00);

output_b(0x00);

DO

//Iluminacion hacia la izquierda

LEDS=0x01;

DO

output_b(LEDS);

rotate_left(&LEDS,1);

delay_ms(100);

WHILE(bit_test(LEDS,7)==0);

output_b(LEDS);

delay_ms(100);

output_b(0x00);

LEDS=0x01;

DO

{
output_a(LEDS);

rotate_left(&LEDS,1);

delay_ms(100);

WHILE(bit_test(LEDS,6)==0);

output_a(0x00);

WHILE(TRUE);

// EJEM9.C

// Luces secuencialea de 8 bits de extremo al centro.

// Pampas, setiembre 2015

#INCLUDE <18F2550.h>

#FUSES XT,PUT,NOWDT,NOPBADEN,NOMCLR,NOLVP //configura PIC

#USE DELAY(clock=4000000) //Reloj

#USE fast_io(b)

int CONST DATOS_1[3] = {0x42,0x24,0x18};

int CONST DATOS_2[3] = {0x24,0x42,0x81};


int i,Y=0;

void main()

set_tris_b(0x00);

output_b(0x00);

WHILE(TRUE)

FOR (i=3;i>=1;i--)

output_b(DATOS_1[i-1]);

delay_ms(100);

FOR (i=3;i>=1;i--)

output_b(DATOS_2[i-1]);

delay_ms(100);

}
/* EJEM10.C

********

Luces secuencialea de 8 bits de 2 en 2.

Pampas, setiembre 2017 */

// Autor: Mg. Javier Camilo Poma Palacios

#INCLUDE <18F2550.h>

#FUSES XT,PUT,NOWDT,NOPBADEN,NOMCLR,NOLVP //configura PIC

#USE DELAY(clock=4000000) //Reloj

#USE fast_io(a)

#USE fast_io(b)

int8 LEDS=0x60; //1100000

void main()

set_tris_b(0x00);

output_b(0x00);
WHILE(TRUE)

//Iluminacion hacia la izquierda

WHILE(bit_test(LEDS,0)==0)

output_b(LEDS);

rotate_right(&LEDS,1);

delay_ms(100);

//Iluminacion hacia la derecha

WHILE(bit_test(LEDS,6)==0)

output_b(LEDS);

rotate_left(&LEDS,1);

delay_ms(100);

}
/* EJEM11.C

********

Luces secuencialea de 14 bits ida y vuelta

Pampas, setiembre 2017. */

// Autor: Mg. Javier Camilo Poma Palacios

#INCLUDE <18F2550.h>

#FUSES HS,PUT,NOWDT,NOPBADEN,NOMCLR,NOLVP //configura PIC

#USE DELAY(clock=10000000) //Reloj

#USE fast_io(a)

#USE fast_io(b)

int8 LEDS;

void main()

set_tris_a(0x00);

set_tris_b(0x00);

output_a(0x00);

output_b(0x00);

WHILE(TRUE)

LEDS=0x01;

//Iluminacion hacia la izquierda

WHILE(bit_test(LEDS,7)==0)

output_b(LEDS);

rotate_left(&LEDS,1);

delay_ms(50);
}

output_b(LEDS);

delay_ms(50);

output_b(0x00);

LEDS=0x01;

WHILE(bit_test(LEDS,5)==0)

output_a(LEDS);

rotate_left(&LEDS,1);

delay_ms(50);

output_a(LEDS);

delay_ms(50);

//Iluminacion hacia la derecha

LEDS=0x10;

WHILE(bit_test(LEDS,0)==0)

output_a(LEDS);

rotate_right(&LEDS,1);

delay_ms(50);

output_a(LEDS);

delay_ms(50);

output_a(0x00);

LEDS=0x80;

WHILE(bit_test(LEDS,0)==0)

{
output_b(LEDS);

rotate_right(&LEDS,1);

delay_ms(50);

/* EJEM12.C

********

Pampas, setiembre 2017. */

// Autor: Mg. Javier Camilo Poma Palacios

#INCLUDE <18F2550.h>

#FUSES XT,PUT,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,CPUDIV1,NOPBADEN
//configura PIC

#USE DELAY(clock=4000000) //Reloj

#USE rs232(baud=19200,xmit=PIN_C6,rcv=PIN_C7,bits=8,stop=1,parity=N)

#USE fast_io(c)

int8 i,j;
void main()

output_b(0x8F); //10000000

for(i=0,j=10;((i<10)&&(j>0));i++,j--)

printf("%d - %d\n\r",i,j);

delay_ms(500);

/* EJEM13.C

********

Luces secuencialea de 14 bits ida y vuelta

Pampas, setiembre 2017. */

// Autor: Mg. Javier Camilo Poma Palacios

#INCLUDE <18F2550.h>

#FUSES HS,PUT,NOWDT,NOPBADEN,MCLR,NOLVP //configura PIC

#USE DELAY(clock=10000000) //Reloj

#USE fast_io(a)

#USE fast_io(b)

int8 X;

void main()

set_tris_a(0x00);

set_tris_b(0x00);

output_a(0x00);
output_b(0x00);

WHILE(TRUE)

//Iluminacion hacia la izquierda

for (X=0;X<=15;X++)

output_b(X);

delay_ms(1000);

//Iluminacion hacia la derecha

for (X=14;X>=1;X--)

output_b(X);

delay_ms(1000);

You might also like