메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

묻고 답하기
WhiteAT2008.01.10 13:01
혹시 위에 올리신게 분리시키신 것인지요?.. 일단 저렇게 하면 icounter == 3 이. ,blink 모드일때 800이후에 다시 들어오기
때문에..
 else{SEGM =fnd_data[icounter];} fnd와 icounter==7 일때 led 그룹이 제대로 들어오지 않게 됩니다.

 => 로직에 대해서는 잘모르겠지만 ㅡㅡ;
     왜 7과 else가왜 실행이 안된다고 하는 거죠?

    count==3일 경우 해당 루틴을 실행하고 
아래 것도(++icounter;      if(icounter ==8) icounter=0;  ) 실행이 됩니다.
    다음에는
LED_timer 가 되면 count==4로 들어오고
                                     다시 count==5로 들어옵니다.


작은 기능에서 시작해서 살을 붙여 가세요^^
- 한번에 저렇게 모두 코딩해서 잡으려고 하면 무지 힘듭니다.
   물론 다른 사람이 봐서는 이해가 전혀 안되고요 ㅡㅡ.

- (다른 사람이 보기에)변수명이 헤갈리게 되어 있습니다.
    (처음에는 LED만 제어하는 줄 알았는데,  지금은 FND 와LED 를 동시에 제어 해야 하는건가요?)

- 변수가 어떤 기능을 하는지 알수가 없어서 변수의 의미를 생각하는데 노력이 더 필요하네요.^^.
               LED_timer = 800; //   LED 를 제어하는 변수?
                if(LEDST[blink_flag-1]==1){ //LED OFF  // LED 상태?
                Led_one = Led_one & ~(1<<(blink_flag-1));//ON  
                SEGM = Led_one;}  // FND?
                 
     - (답이 없으셨는데) 변수는 signed로 하신거죠?


일단 스위치는 재껴두고 FND 만 생각하고, FND 가 깜박이는지만 확인해보세요.
(여기서 문제가 없다면 다른 것을 추가하기가 쉬워질 겁니다.
 여기서 문제가 있다면 해결하면 되겠죠?)

 void Disp_operation(void) {
// Led_two, LED_one 는 무엇인가요?
  
// icount = 0 ===> blink 에서 FND OFF 인상태
// icount = 1 ===> blink 에서 FND ON 인상태



    if(LED_timer>0) return;
  LED_timer=100;

     // DIGM = 1<<icounter; <== 이거 뭐죠?
        ////////////////////////////
        if(icounter == 0){   // ON 하자
          if(blink_flag >0 && blink_flag < 9){
   //           if(LED_timer>0) return;
              
              LED_timer = 800;
              //  if(LEDST[blink_flag-1]==1){ //LED OFF
             //   Led_one = Led_one & ~(1<<(blink_flag-1));//ON   
          //      SEGM = Led_one;
               
           //     else if(LEDST[blink_flag-1]==0) { //LED ON
                Led_one = Led_one | (1<<(blink_flag-1));//OFF
                SEGM = Led_one;
                  }                
          }
          else {
            SEGM = Led_one; 
            }
  
        }
        //////////////////////////////  
        else if(icounter == 1){   // OFF 하자
         if(blink_flag >0 && blink_flag < 9){    //  if(blink_flag >8){
     //         if(LED_timer>0) return;
              
              LED_timer = 800;
                  Led_one = Led_one & ~(1<<(blink_flag-1));//ON   
                SEGM = Led_one;

         //     if(LEDST[blink_flag-1]==1){ //LED OFF
            //    Led_two = Led_two & ~(1<<(blink_flag-9));//ON   
            //    SEGM = Led_two;}
             //   else if(LEDST[blink_flag-1]==0) { //LED ON
              //  Led_two = Led_two | (1<<(blink_flag-9));//OFF
              //  SEGM = Led_two;
                 }                
          }
          else {
            SEGM = Led_two;
}
        }
        ////////////////////////////////
        else{SEGM =fnd_data[icounter];}
   ++icounter;
   if(icounter ==8) icounter=0;
} 

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )