#include <mega128.h>
#include <delay.h>
unsigned long cnt, flag;
void main(void)
{
PORTB=0x00;
DDRB=0xFE;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0xFF;
PORTE=0x00;
DDRE=0xDF;
PORTF=0x00;
DDRF=0xFF;
flag=0;
while (1)
{
cnt++;
if(cnt==1)
{ PORTB.1=1;
PORTD.5=1;
}
else if (cnt==2)
{ PORTB.2=1;
PORTD.6=1;
}
else if (cnt==3)
{ PORTB.3=1;
PORTD.7=1;
}
else if (cnt==4)
{ PORTB.4=1;
PORTE.0=1;
}
else if (cnt==5)
{ PORTB.5=1;
PORTE.1=1;
}
else if (cnt==6)
{ PORTB.6=1;
PORTE.2=1;
}
else if (cnt==7)
{ PORTB.7=1;
PORTE.3=1;
}
else if (cnt==8)
{ PORTC.0=1;
PORTE.4=1;
}
else if (cnt==9)
{ PORTC.1=1;
}
else if (cnt==10)
{ PORTC.2=1;
}
else if (cnt==11)
{ PORTC.3=1;
}
else if (cnt==12)
{ PORTC.4=1;
}
else if (cnt==13)
{ PORTC.5=1;
}
else if (cnt==14)
{ PORTC.6=1;
}
else if (cnt==15)
{ PORTC.7=1;
}
else if (cnt==16)
{ PORTD.0=1;
}
else if (cnt==17)
{ PORTD.1=1;
}
else if (cnt==18)
{ PORTD.2=1;
}
else if (cnt==19)
{ PORTD.3=1;
}
else if (cnt==20)
{ PORTD.4=1;
}
else if (cnt =21)
{ PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
}
else
{
cnt=0;
}
위에 코드가 순차별로 꺼지고 켜지는거인데 스위칭인가? 그걸로 간단하게 간소화 시킬수 있다고
들었는데 간단하게 설명좀 부탁드릴께요 ㅠ..
그리고.. 이 코드를 이용해 변수의 증가 방법을 다른 방법으로 할수 있는지 궁금하네요 조언좀 부탁드릴께요
그리고 만약에 프로그램을 실행 시켰을때 asm 쪽에
;#include <mega128.h>
#ifndef __SLEEP_DEFINED__
#define __SLEEP_DEFINED__
.EQU __se_bit=0x20
.EQU __sm_mask=0x1C
.EQU __sm_powerdown=0x10
.EQU __sm_powersave=0x18
.EQU __sm_standby=0x14
.EQU __sm_ext_standby=0x1C
.EQU __sm_adc_noise_red=0x08
.SET power_ctrl_reg=mcucr <<<<<<<<<<<<<<<<<<<<<<<<이쪽에 에러라고 나온다면 무슨현상이에요?
switch case 문자을 쓰면 보기 좋읍니다.
{
case 1: PORTB.1=1; PORTD.5=1; break;
case 2: PORTB.2=1; PORTD.6=1; break;
case 3: PORTB.3=1; PORTD.7=1; break;
case 4: PORTB.4=1; PORTD.0=1; break;
case 5: PORTB.5=1; PORTD.1=1; break;
case 6: PORTB.6=1; PORTD.2=1; break;
.
.
default: cnt=0; break;
}
이런식??
ㅎㅎ switch case
if 문은 되도록 안쓰는게 좋아요 switch case로 해보세요
설명좀 부탁합니다...
core가 동작하는데 문제점이 있다는 건가요?
case보다 실행할 code가 늘어나고, 프로그램 크기와 속도에도 영향을 줍니다.