You are on page 1of 10

//include file

#include <pic.h>
//16F84 configuration
__CONFIG(0x3FF1);
#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms(
)
#define _XTAL_FREQ 20000000
#endif
#define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))
static bit LED0 @ PORTBIT(PORTB, 0);
static bit LED1 @ PORTBIT(PORTB, 1);
static bit LED2 @ PORTBIT(PORTB, 2);
static bit LED3 @ PORTBIT(PORTB, 3);
static bit LED4 @ PORTBIT(PORTB, 4);
static bit LED5 @ PORTBIT(PORTB, 5);
static bit LED6 @ PORTBIT(PORTB, 6);
static bit LED7 @ PORTBIT(PORTB, 7);
static bit SW0 @ PORTBIT(PORTA, 0);
static bit SW1 @ PORTBIT(PORTA, 1);
static bit SW2 @ PORTBIT(PORTA, 2);
static bit SW3 @ PORTBIT(PORTA, 3);
static bit SW4 @ PORTBIT(PORTA, 4);
void delay_skjp(void);
void delay_cy(void);
void delay_cy2(void);
void delay_test(void);

void switch0(void);
void switch1(void);
void switch2(void);
void switch3(void);
void switch4(void);
void loop(void);
void loop1(void);
void blink(void);
int a=1,b=1,c=1,d=1;

//main function
int main()
{
while(1){
TRISB = 0x00;
TRISA = 0b11111;
LED0=0;
LED1=0;
LED2=0;
LED3=0;
LED4=0;
LED5=0;
LED6=0;
LED7=0;
if(SW0==0){
a=0;
}
if(SW1==0){
b=0;
}
if(SW2==0){
c=0;
}
if(SW3==0){
c=0;
}

if(a==0){
TRISB = 0x01;
delay_test();
TRISB = 0b00000000;
delay_test();
TRISB = 0b00110000;
delay_test();
TRISB = 0b00000000;
LED2=1;
delay_test();

a=1;
}
if(b==0){
switch1();
b=1;
}
if(c==0){
switch3();
c=1;
}
if(d==0){
switch4();
d=1;
}
if(SW4==0){
switch3();
switch4();
switch0();
switch0();
switch1();
loop();
loop();
loop1();
loop1();
blink();
blink();
switch4();
}
}
return 0;
}

void switch0(void)
{
LED0=1;
LED1=1;
LED2=1;
LED3=1;

delay_cy();
delay_cy();
delay_cy();
LED0=0;
LED1=0;
LED2=0;
LED3=0;
LED4=1;
LED5=1;
LED6=1;
LED7=1;

delay_cy();
delay_cy();
delay_cy();

LED4=0;
LED5=0;
LED6=0;
LED7=0;
}

void switch1(void)
{
LED0=1;
delay_skjp();
LED6=1;
delay_skjp();
LED2=1;
delay_skjp();
LED4=1;
delay_cy();
LED7=1;
delay_skjp();
LED1=1;
delay_skjp();
LED5=1;
delay_skjp();
LED3=1;
delay_cy();

LED0=0;
delay_skjp();
LED6=0;
delay_skjp();
LED2=0;
delay_skjp();
LED4=0;
delay_cy();
LED7=0;
delay_skjp();
LED1=0;
delay_skjp();
LED5=0;
delay_skjp();
LED3=0;

}
void switch2(void)
{
LED0=1;
LED3=1;
LED4=1;
LED7=1;
}
void switch3(void)
{
LED0=1;
delay_cy();
LED1=1;
delay_cy();
LED2=1;
delay_cy();
LED3=1;
delay_cy();
LED4=1;
delay_cy();
LED5=1;
delay_cy();
LED6=1;
delay_cy();
LED7=1;
delay_cy();
LED7=0;
delay_cy();
LED7=1;
delay_cy();
LED7=0;
delay_cy();
LED6=0;
delay_cy();
LED5=0;
delay_cy();
LED4=0;
delay_cy();
LED3=0;
delay_cy();
LED2=0;
delay_cy();
LED1=0;
delay_cy();
LED0=0;
delay_cy();

LED0=1;
delay_cy();
LED0=0;
delay_cy();
}

void switch4(void)
{
LED0=1;
delay_cy();
LED0=0;
delay_cy();
LED1=1;
delay_cy();
LED1=0;
delay_cy();
LED2=1;
delay_cy();
LED2=0;
delay_cy();
LED3=1;
delay_cy();
LED3=0;
delay_cy();

LED4=1;
delay_cy();
LED4=0;
delay_cy();
LED5=1;
delay_cy();
LED5=0;
delay_cy();
LED6=1;
delay_cy();
LED6=0;
delay_cy();
LED7=1;
delay_cy();
LED7=0;
delay_cy();
}

void loop(void)
{
LED3=1;
LED4=1;
delay_cy();
LED2=1;
LED5=1;
delay_cy();
LED1=1;
LED6=1;
delay_cy();
LED0=1;
LED7=1;
delay_cy();

LED0=0;
LED7=0;
delay_cy();
LED1=0;
LED6=0;
delay_cy();
LED2=0;
LED5=0;
delay_cy();
LED3=0;
LED4=0;
delay_cy();
}

void loop1(void){
LED0=1;
LED4=1;
delay_cy();
LED1=1;
LED5=1;
delay_cy();
LED2=1;
LED6=1;
delay_cy();
LED3=1;
LED7=1;
delay_cy();
delay_cy();

LED0=0;
LED4=0;
delay_cy();
LED1=0;
LED5=0;
delay_cy();
LED2=0;
LED6=0;
delay_cy();
LED3=0;
LED7=0;
delay_cy();
delay_cy();

LED0=1;
LED4=1;
delay_cy();
LED1=1;
LED5=1;
delay_cy();
LED2=1;
LED6=1;
delay_cy();

LED3=1;
LED7=1;
delay_cy();
delay_cy();

LED3=0;
LED7=0;
delay_cy();
LED2=0;
LED6=0;
delay_cy();
LED1=0;
LED5=0;
delay_cy();
LED0=0;
LED4=0;
delay_cy();
}

void blink(void)
{
LED0=1;
LED1=1;
LED2=1;
LED3=1;
LED4=1;
LED5=1;
LED6=1;
LED7=1;
delay_cy();

LED0=0;
LED1=0;
LED2=0;
LED3=0;
LED4=0;
LED5=0;
LED6=0;
LED7=0;
delay_cy();
LED0=1;
LED1=1;
LED2=1;
LED3=1;
LED4=1;
LED5=1;
LED6=1;
LED7=1;
delay_cy2();

LED0=0;
LED1=0;
LED2=0;
LED3=0;
LED4=0;
LED5=0;
LED6=0;
LED7=0;
LED0=1;
LED1=1;
LED2=1;
LED3=1;
LED4=1;
LED5=1;
LED6=1;
LED7=1;
delay_cy2();

LED0=0;
LED1=0;
LED2=0;
LED3=0;
LED4=0;
LED5=0;
LED6=0;
LED7=0;
delay_cy();
}

void delay_cy(void)
{
NOP();
_delay(10000); // delay for 1000 instruction cycles
CLRWDT();
__delay_us(40000); // delay for 400 microseconds
CLRWDT();
__delay_ms(20); // delay for 2 milliseconds
CLRWDT();
}

void delay_skjp(void)
{
NOP();
_delay(10000); // delay for 1000 instruction cycles
CLRWDT();
__delay_us(40000); // delay for 400 microseconds
CLRWDT();
__delay_ms(20); // delay for 2 milliseconds
CLRWDT();
}
void delay_cy2(void)
{
NOP();
_delay(1000); // delay for 1000 instruction cycles
CLRWDT();
__delay_us(400); // delay for 400 microseconds
CLRWDT();
__delay_ms(2); // delay for 2 milliseconds
CLRWDT();
}

void delay_test(void)
{
NOP();
_delay(1000); // delay for 1000 instruction cycles
CLRWDT();
__delay_us(400); // delay for 400 microseconds
CLRWDT();
__delay_ms(200); // delay for 2 milliseconds
CLRWDT();
}

You might also like