뉴티씨



  • HOME
  • 고객지원
  • 질문답변

 

 
FOR 문으로 하면 이상이 없는데 While로 하면 1비트가 오버플로우 되는 걸까요?
 글쓴이 : 박미룡
작성일 : 17-11-15 23:03
조회 : 3,120  
먼저, 딜레이 값을 없애면 8비트 255 값 전체 켜집니다.
하지만 내부 딜레이 값을 주면 254까지는 제대로 동작합니다. 7비트까지 켜져 있음.
그런데 255로 값을 주게 되면 계속 무한 루프를 반복합니다. if 문을 주어서 루프를 빠져 나오게 해봐도 안됩니다. 알 수가 없네요. 다만 Char을  int 로 재정의 해 보면 255까지 led가 켜진채로 정지해 있습니다. 이 걸 근거로 본다면 뭔가 1비트를 차지하고 있다는 건지? 모르겠네요. 이유가 뭘까요? ㅋ


#ifndef F_CPU
#define F_CPU 16000000UL // 16 MHz clock speed
#endif
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{

unsigned char z;

DDRC = 0xFF;
// PORTC = 0x00;

z = 0;

while (z <= 255)

{


PORTC = z;

_delay_ms(50);  //255 값으로 딜레이를 사용하면 무한 루프 반복. 이유 모름 254까지는 전혀 이상 없음.

z++;

//      PORTC = 0x00;  //10번까지 카운트 하고 꺼짐

 
}
}

 
   
 

 


1