//#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);
}
}