led 제어 프로그램 인데염....ㅠㅠ
#include <mega128.h>
void Delay(unsigned int n)
{
unsigned int i;
while(n--)
{
i = 2270;
while(i--);
}
}
void main()
{
unsigned int cnt;
unsigned char prevSw1,prevSw2;
unsigned char sw1,sw2;
unsigned char dir;
float ff;
unsigned int tcnt;
unsigned int mode;
DDRA = 0xFF;
cnt = 0;
sw1 = sw2 = 0;
DDRE.4 = 0;
DDRE.5 = 0;
prevSw1 = prevSw2 = 0;
dir = 0;
ff = 1000.;
mode = 0;
while(1)
{
sw1 = PINE.4;
sw2 = PINE.5;
if(sw1 != prevSw1)
{
if(sw1==0)
{
tcnt = 0;
}
else
{
if(tcnt>1000)
{
dir = ~dir;
}
else
{
ff = ff*0.9;
}
}
}
}
if(sw2 != prevSw2)
{
if(sw2 == 0)
{
tcnt2 = 0;
}
else
{
if(tcnt<1000)
{
ff = ff*1.1;
}
else if(tcnt>1000)
{
mode = ~mode;
if(tcnt>5000)
{
for(;;)
PORTA = 0xFF;
PORTA = 0x00;
}
}
}
}
prevSw1 = sw1;
prevSw2 = sw2;
++cnt;
++tcnt;
if((cnt %((unsigned int)ff)) == 0)
{
if(dir == 0)
{
PORTA = PORTA<<1;
if(PORTA == 0)
PORTA = 0x01;
}
else
{
PORTA = PORTA >>1;
if(PORTA == 0)
PORTA = 0x80;
}
if(mode==0)
{
if(dir)
{
PORTA = 0x80 | 0x01;
if(PORTA == 0x80 | 0x01)
{
PORTA = 0x40 | 0x02;
if(PORTA = 0x40 | 0x02)
{
PORTA = 0x20 | 0x04;
if(PORTA = =0x20 | 0x04)
{
PORTA = 0x10 | 0x08;
}
}
}
}
}
else
{
if(dir)
{
PORTA = 0x10 | 0x08;
if(PORTA = =0x10 | 0x08)
{
PORTA = 0x20 | 0x04;
if(PORTA = =0x20 | 0x04)
{
PORTA = 0x40 | 0x02;
if(PORTA = =0x40 | 0x02)
{
PORTA = 0x80 | 0x01;
}
}
}
}
}
}
Delay(1);
if(cnt >= 50000)
cnt = 0;
}
sw1이 눌리면 속도발라지고 1초이상 누르면 방향이 달라지고 sw2가 눌리면 속도가 느려지는 프로그램인데염...
여기서 sw2가 1초이상 눌리면 led가 모아지고 또 1초이상 눌리면 반대로 led가 퍼지고 5초이상 길게 누를시 led전체가 깜박깜박
나오도록 한건데 잘 안되여...ㅠ 어떻게 하져???