اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه key pad

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در برنامه key pad

    با عرض سلام خدمت دوستان :

    در اجرای یک برنامه کی پد دچار مشکل شدیم ... برنامه برای یک کی پد 4*3 است و یک atmega8 .
    کی پد به port c میکرو ، که تعداد 7 پین دارد متصل است . برنامه به این صورت است که کاربر تا زمان فشار دادن کلید enter (عدد 11 در برنامه )می تواند رقم وارد کند(تا عدد چند رقمی چاپ شود) ولی مشکل اینجاست که در زمان اجرای برنامه اعداد ستون سوم چاپ نمی شوند . :sad:
    4 پین اول portc ورودی هستند که pull up شده اند. کد کامل هم به صورت زیر است و بسیار ممنون

    کد:
    unsigned int keys[4][3] = {{1,4,7,10},{2,5,8,0},{3,6,9,11}} ;
    unsigned char data,h,a[20],c[10] ,temp;
    int i,power, ent_num=0,num_key[40];
    float p = 0, Intense = 0 ;
    
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x00;
    
    // Port C initialization
    // Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
    // State6=0 State5=0 State4=0 State3=T State2=T State1=T State0=T 
    PORTC=0x00;
    DDRC=0x70;
    
    // Port D initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTD=0x00;
    DDRD=0xFF;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    TCCR0=0x00;
    TCNT0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // LCD module initialization
    lcd_init(16);
    
    while (1)
       {
       
      power=-1;
       
        
        do{ 
        power++;
        num_key[power] = 0xff ; 
        while(num_key[power] == 0xff)
     {
     
     
        temp = 0x70;
        h = 0x80 ;
        for(i = 0 ; i <3 ; i++)
        {
        PORTD = temp ;
        delay_ms(100) ;
        data =PIND & 0x0f ;
        if(data == 0x07)
         num_key[power] = keys[0][i] ;
        if(data == 0x0b)              
         num_key[power] = keys[1][i] ;
        if(data == 0x0d)
         num_key[power] = keys[2][i] ;
        if(data == 0x0e)
         num_key[power] = keys[3][i] ;
        temp = 255-(h/(pow(2,i+1))) ;
        }     
        
        
         
     }
     
     
        
        delay_ms(1000);
        lcd_clear();
        lcd_gotoxy(0,0);
        sprintf(a,"key[%d]=%d",power,num_key[power]);
        lcd_puts(a);
        delay_ms(500);
        lcd_clear();
        
       }while(num_key[power]!= 10);
        
       
        for(i=0;i<power;i++)
        {
        
        ent_num=ent_num*10;
        ent_num+=num_key[i];
        
        }
        //power=-1;
        
        lcd_gotoxy(0,0);
        sprintf(c,"key[%d]=%d",ent_num);
        lcd_puts(c);
        delay_ms(500);
        ent_num=0;
    ;{
    }

    #2
    پاسخ : مشکل در برنامه key pad

    تو فیوز بیت ها jtag رو غیره فعال کنید

    دیدگاه


      #3
      پاسخ : مشکل در برنامه key pad

      خیلی خیلی متشکرم ،

      ببخشید فقط ممکنه یه توضیح کوچک هم بدهید که این fusebit چه کاری انجام می دهد ؟؟

      با سپاس ...

      دیدگاه


        #4
        پاسخ : مشکل در برنامه key pad

        سلام
        تنظیمات اوله میکرو توی فیوزبیته هاست. مانند تنظیم کلاک داخلی میکرو، زمان لود، فعال سازی jtag و spi و ......
        تشکر لازم نیست!

        دیدگاه

        لطفا صبر کنید...
        X