Sei sulla pagina 1di 3

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

CHASING LEDs
============
In this project 8 LEDs are connected to PORT B & PORT D of a PIC16F877A
microcontroller and it is operated from a 4 MHz crystal. The program turns on
the LEDs in the direction of LSB to MSB and MSB to LSB one by one in step &
progressive mode with half-second delay betweem each output.
Author: Win Htet Win
Date: 14 March 2013
File: LED_Two_Ports.c
Compiler: mikroC for PIC
*****************************************************************************/
void main()
{
unsigned char i;
unsigned char j;
unsigned char k;
unsigned char l;
unsigned char m;
unsigned char n;

trisb = 0;
trisd = 0;
for(;;)
{
// Right to Left in step mode
i = 1;
k = 0;
loop:
portb = i;
portd = i;
delay_ms(500);
i = i << 1;
k++;
if (k<8) goto loop;
portb = 0;
portd = 0;
delay_ms(500);
// Left to Right in step mode
j = 128;
k = 0;
loop1:
portb = j;
portd = j;
delay_ms(500);
j = j >> 1;
k++;
if (k<8) goto loop1;
portb = 0;
portd = 0;
delay_ms(500);
// Right to Left in progressive mode
l = 1;
m = 0;
n = 1;
portb = l;
portd = l;
delay_ms(500);
k = 0;
loop2:
m = l * 2;
l = m;
n = n + l;
portb = n;
portd = n;
delay_ms(500);
k++;
if (k<8) goto loop2;
portb = 0;
portd = 0;
delay_ms(500);

// Left to Right in progressive mode


l = 128;
m = 0;
n = 128;
portb = l;
portd = l;
delay_ms(500);
k = 0;
loop3:
m = l / 2;
l = m;
n = n + l;
portb = n;
portd = n;
delay_ms(500);
k++;
if (k<8) goto loop3;
portb = 0;
portd = 0;
delay_ms(500);
// PORTB ON & PORTD OFF
portb = 255;
portd = 0;
delay_ms(500);
portb = 0;
portd = 0;
delay_ms(500);
// PORTB OFF & PORTD ON
portb = 0;
portd = 255;
delay_ms(500);
portb = 0;
portd = 0;
delay_ms(500);
// PORTB OFF & PORTD ON
portb = 0;
portd = 255;
delay_ms(500);
portb = 0;
portd = 0;
delay_ms(500);
// PORTB ON & PORTD OFF
portb = 255;
portd = 0;
delay_ms(500);
portb = 0;
portd = 0;
delay_ms(500);
// PORTB & PORTD ON X THREE TIMES
k = 0;
loop4:
portb = 255;
portd = 255;
delay_ms(500);
portb = 0;
portd = 0;
delay_ms(500);
k++;
if (k<3) goto loop4;
portb = 0;
portd = 0;
delay_ms(500);
}
}

Potrebbero piacerti anche