ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 3 از 3
  1. #1
    2013/06/30
    281
    2

    مشکل با mikroc و راه اندازی اولیه پورت ها

    سلام دوستان....من برای پروژم ی برنامه نوشتم که وضعیت یک پایه رو توی حافظه eeprom ذخیره میکنه تا اگه برق رفت و اومد توی همون حالت بمونه...در ضمن از طریق کلید و پورت سریال(کامپیوتر هم دسترسی دارم برای کنترل کردنش)یه مشکل خیلی عجیب ترم داشتم این بود که وقتی دوتی پایه مثلا A0 و A1 رو خروجی تعریف میکردم LED ها چشمک میزدن!!!و اصلا درست کار نمیکردن ولی وقتی مثلا A0 و D0 رو تعریف میکردم درست میشد!!!!در صورتی که هیچ ربطی نداره!!دوستان خواهش میکنم کمکم کنید....موقع بالا اومدن ی چشمک میزنه LED ها و بعدش همون حالت ذخیره شده توی EEPROM رو در بر میگیره....راهی هست که اون چشمکه زده نشه؟؟؟
    میکرو استفاده شده هم PIC16F877A هست.
    کد:
    char uart_rd;
    char uart_data_2;
    //int edge_1;
    //int edge_2;
    unsigned char edge_1,pstate=0 ,k,edge_2,kk;
    int butstate_1;
    int butstate_2;
    int last_butstate_1;
    int last_butstate_2;
    
    
    void main() {
     //ANSEL = 0;           // Configure AN pins as digital
     //ANSELH = 0;
      
     //TRISD.F2 = 0;
     //TRISD.F3 = 0;
     
    
     UART1_Init(9600);        // Initialize UART module at 9600 bps
     Delay_ms(200);         // Wait for UART module to stabilize
    
    
     TRISB2_bit = 0;             //output ports
     TRISB1_bit = 0;
    
     TRISD0_bit = 0;             //output ports
     TRISD1_bit = 0;
    
     TRISB4_bit = 1;                // set RB0 pin as input
     TRISB5_bit = 1;
    
    
     /*
     PORTA.F0 = 1;
     Delay_ms(50);
     PORTA.F0 = 0;
     Delay_ms(50);
     PORTA.F0 = 1;
     Delay_ms(50);
     PORTA.F0 = 0;
     Delay_ms(50);
     */
    
     pstate = 1;
    
    
     while (1) { 
     
        __asm CLRWDT;
     
        butstate_1 = PORTB.F4;
        butstate_2 = PORTB.F5;
        
    
        uart_rd = UART1_Read();   // read the received data,
    
      
      
      if( uart_rd == 'W')
      {
    
        {
          edge_1 = 10;
          //s_1=1;
        }
    
      }
      else if( uart_rd == 'w')
      {
         {
          edge_1 = 20;
          //r_1=1;
         }
      }
      
      
      if( uart_rd == 'C')
      {
        {
          edge_2 = 10;
          //ss_1=1;
        }
    
      }
      else if( uart_rd == 'c')
      {
         {
          edge_2 = 20;
          //rr_1=1;
         }
      }
      
    
    
    
      if( butstate_1 != last_butstate_1)
      {
       if(butstate_1 == 1)    // agar kilid 1 feshar dade shod....
        {
        
    
         
    
         edge_1 = 10;
         //s_2 = 1;
    
        }
        else if(butstate_1 == 0)
        {
    
    
         edge_1 = 20;
         //s_2 = 1;
    
        }
        
    
      }
      
      if( butstate_2 != last_butstate_2)
      {
       if(butstate_2 == 1)    // agar kilid 2 feshar dade shod....
        {
         edge_2 = 10;
         //ss_2 = 1;
        }
        else if(butstate_2 == 0)
        {
         edge_2 = 20;
         //rr_2 = 1;
        }
      }
    
    
    
      
       last_butstate_1 = butstate_1;
       last_butstate_2 = butstate_2;
    
    
      
      
      if(pstate == 1)
       {
        pstate = 0;
        k = EEPROM_Read(0x03);
        kk = EEPROM_Read(0x08);
        edge_1 = k;
        edge_2 = kk;
       }
      
    
       if(edge_1 == 10)
       {
       PORTB.F1 = 1;
       PORTD.F0 = 1;
       EEPROM_Write(0x03, 10);
       Delay_ms(150);
       }
       else if(edge_1 == 20)
       {
       PORTB.F1 = 0;
       PORTD.F0 = 0;
       EEPROM_Write(0x03, 20);
       Delay_ms(150);
       }
       
       if(edge_2 == 10)
       {
       PORTB.F2 = 1;
       PORTD.F1 = 1;
       EEPROM_Write(0x08, 10);
       Delay_ms(150);
       }
       else if(edge_2 == 20)
       {
       PORTB.F2 = 0;
       PORTD.F1 = 0;
       EEPROM_Write(0x08, 20);
       Delay_ms(150);
       
       }
       
     }
    }
  2. #2
    2011/08/03
    193
    50

    پاسخ : مشکل با mikroc و راه اندازی اولیه پورت ها

    //TRISD.F2 = 0;
    //TRISD.F3 = 0;
    سلام
    این دستور بالا برای چی نوشتید؟؟؟

    اگر منظورتون d.2 و d.3 هست باید این طوری باشه TRISD.TRISD2

    اول اسم رجیستر رو بنویسید و بعد اسم بیت مورد نظر

    صفحه 59 دیتاشیت رو یه نگاه کنید

    عامل کليدي تمام موفقيتها " عمل کردن" است
  3. #3
    2013/06/30
    281
    2

    پاسخ : مشکل با mikroc و راه اندازی اولیه پورت ها

    اسن استاندارد uc هست توی user manual خودش نوشته شده برای خروجی تعریف کردن اینگونه باید بنویسیم...
نمایش نتایج: از 1 به 3 از 3

موضوعات مشابه

  1. مشکل در راه اندازی اولیه sim908
    توسط aziziphp در انجمن ماژول های GPS - GSM - GPRS
    پاسخ: 48
    آخرين نوشته: 2016/08/08, 21:46
  2. مشکل در راه اندازی اولیه
    توسط milad.ss در انجمن خانواده Raspberry Pi
    پاسخ: 3
    آخرين نوشته: 2016/07/19, 19:54
  3. راه اندازی اولیه At91sam7s256
    توسط alidehghan288 در انجمن پروسسورهای ARM
    پاسخ: 0
    آخرين نوشته: 2015/03/02, 19:27
  4. مشکل در راه اندازی اولیه برد راه انداز sim900 وبسایت eca
    توسط hadi_hashemi_85 در انجمن ماژول های GPS - GSM - GPRS
    پاسخ: 0
    آخرين نوشته: 2015/02/14, 13:06
  5. کنترل یک پین از یک پورت در کامپایلر میکروسی(MikroC Avr
    توسط logicman در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2013/06/10, 16:04

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •