//#include "suryaa.h"
#include <avr/interrupt.h>

void pin_configure(void)
{
  volatile char *dirf,*dirb;
 
  dirf=(volatile char*)0x30;
  dirb=(volatile char*)0x24;

  *dirf=0xFF;
  *dirb=0xFF;
}

void set_external_int_0(void)
{
  volatile char*eicr0a,*eimsk0;
  eicr0a=0x69;
  eimsk0=0X3D;

  *eicr0a=0x03;
  *eimsk0=0x01;
}

void output_pwm(int x)
{
  volatile char *ocr0a;
  ocr0a=(volatile char *)0x47;
  *ocr0a=x;
}


void delay_1(int x)
{
  volatile long i;
  while(x)
  {
    for(i=0;i<1000;i++);
    x--;
  }
}


void set_timer(void) //8 bit timer.
{
  volatile char*tccr0a,*tccr0b;   //setings of timer coontrol registers 
  tccr0a=(volatile char*)0x44;
  tccr0b=(volatile char*)0x45;

  *tccr0a=0x83; //set fastpwm non inverted mode;
  *tccr0b=0x03; //setting prescalar clock 64;
  
}

ISR(INT0_vect)
{
  volatile char*eifr;
  eifr=(volatile char*)0x3C;
  volatile long k;
  for(k=0;k<200000;k++);
  *eifr=0x01;
  volatile static long i=0;
  volatile char*outf=0x31;
  if(i!=8)
  {
    *outf=(1<<i);
    i++;
  }
  else
  {
    *outf=(1<<i);
    i=0;
  }
 // sei();
}
void setup() 
{
  pin_configure();
  set_external_int_0();
  set_timer();

  sei();
}



void loop()
{
  volatile int i,j;
  for(i=0;i<255;i++)
  {
    output_pwm(i);
    delay_1(1);
  }

  for(j=255;j>=0;j--)
  {
    output_pwm(j);
    delay_1(1);
  }
}
mega:SCL
mega:SDA
mega:AREF
mega:GND.1
mega:13
mega:12
mega:11
mega:10
mega:9
mega:8
mega:7
mega:6
mega:5
mega:4
mega:3
mega:2
mega:1
mega:0
mega:14
mega:15
mega:16
mega:17
mega:18
mega:19
mega:20
mega:21
mega:5V.1
mega:5V.2
mega:22
mega:23
mega:24
mega:25
mega:26
mega:27
mega:28
mega:29
mega:30
mega:31
mega:32
mega:33
mega:34
mega:35
mega:36
mega:37
mega:38
mega:39
mega:40
mega:41
mega:42
mega:43
mega:44
mega:45
mega:46
mega:47
mega:48
mega:49
mega:50
mega:51
mega:52
mega:53
mega:GND.4
mega:GND.5
mega:IOREF
mega:RESET
mega:3.3V
mega:5V
mega:GND.2
mega:GND.3
mega:VIN
mega:A0
mega:A1
mega:A2
mega:A3
mega:A4
mega:A5
mega:A6
mega:A7
mega:A8
mega:A9
mega:A10
mega:A11
mega:A12
mega:A13
mega:A14
mega:A15
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
led5:A
led5:C
led6:A
led6:C
led7:A
led7:C
led8:A
led8:C
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
r6:1
r6:2
r7:1
r7:2
r8:1
r8:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
r9:1
r9:2
led9:A
led9:C
r10:1
r10:2