اطلاعیه

Collapse
No announcement yet.

مشکل در مورد میکرو کنترلر pic در برنامه ساده

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

    مشکل در مورد میکرو کنترلر pic در برنامه ساده

    سلام
    تو میکروکنترلر pic امدم و یه برنامه خیلی ساده و در حد چند خط نوشتم واسه شروع کارم اما هم تو کمپایلر XC8 و هم تو Mikro c نتیجه نه تو شبیه ساز پرتیوس گرفتم و نه تو عمل ممکنه کمکم کنید
    #include <stdio.h>
    #include <stdlib.h>
    #include <xc.h>
    #define _XTAL_FREQ 4000000

    void main(void) {
    unsigned char i=255;
    unsigned char a[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
    TRISAbits.TRISA1=1;
    TRISAbits.TRISA0=1;
    TRISAbits.TRISA2=0;
    TRISB=0x00;
    PORTB=0x00;

    while(1){

    PORTB=a[--i];
    __delay_ms(1000);
    if(i==0)
    i=8;

    }


    #2
    پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

    نوشته اصلی توسط mostafa6369 نمایش پست ها
    سلام
    تو میکروکنترلر pic امدم و یه برنامه خیلی ساده و در حد چند خط نوشتم واسه شروع کارم اما هم تو کمپایلر XC8 و هم تو Mikro c نتیجه نه تو شبیه ساز پرتیوس گرفتم و نه تو عمل ممکنه کمکم کنید
    #include <stdio.h>
    #include <stdlib.h>
    #include <xc.h>
    #define _XTAL_FREQ 4000000

    void main(void) {
    unsigned char i=255;
    unsigned char a[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
    TRISAbits.TRISA1=1;
    TRISAbits.TRISA0=1;
    TRISAbits.TRISA2=0;
    TRISB=0x00;
    PORTB=0x00;

    while(1){

    PORTB=a[--i];
    __delay_ms(1000);
    if(i==0)
    i=8;

    }



    آخه عزیز من ، اندازه آرایه شما 8 خانه بیش تر نیست و اونوقت شما اندیس رو از 255 شروع میکنی ؟
    البته در دورهای بعدی ، از 8 شروع میکنید که درسته ولی به هر صورت باید خط زیر رو اصلاح کنی

    کد:
    unsigned char i=255;
    به صورت
    کد:
    unsigned char i=8;
    کد:
    [FONT=Yekan][/FONT]


    الته چون شما در آرایه ، چیزی نمینویسید بلکه میخونید ، اصولا نباید قفل کنه
    با یه برنامه یه خطی که مثلا
    کد:
    PORTB=1[FONT=Yekan][/FONT]

    امتحان کردید که ببینید اصلا میکرو کد رو اجرا میکنه یا نه ؟

    دیدگاه


      #3
      پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

      تشکر بابت پاسختون اما امدم و برنامه ساده زیر هم نوشتم باز جواب نداد.
      unsigned char a0=0x01;
      unsigned char a1=0x03;
      unsigned char a2=0x02;
      unsigned char a3=0x06;
      unsigned char a4=0x04;
      unsigned char a5=0x0c;
      unsigned char a6=0x08;
      unsigned char a7=0x09;
      TRISAbits.TRISA1=1;
      TRISAbits.TRISA0=1;
      TRISAbits.TRISA2=0;
      TRISB=0x00;
      PORTB=0x00;

      while(1){
      PORTB=a0;
      __delay_ms(delays);;;
      PORTB=a1;
      __delay_ms(delays);
      PORTB=a2;
      __delay_ms(delays);
      PORTB=a3;
      __delay_ms(delays);
      PORTB=a4;
      __delay_ms(delays);
      PORTB=a5;
      __delay_ms(delays);
      PORTB=a6;
      __delay_ms(delays);
      PORTB=a7;
      __delay_ms(delays);

      دلیل: ادغام دو پست برای جلوگیری از اسپم

      اصلا دارم دیونه میشم امدم طرف pic اما چندین روزه که یه برنامه ساده هم جواب نگرفتم و به کلی زده شدم.ممکنه واسه کرک لعنتی نرم افزار باشه؟

      دیدگاه


        #4
        پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

        نوشته اصلی توسط mostafa6369 نمایش پست ها
        تشکر بابت پاسختون اما امدم و برنامه ساده زیر هم نوشتم باز جواب نداد.
        unsigned char a0=0x01;
        unsigned char a1=0x03;
        unsigned char a2=0x02;
        unsigned char a3=0x06;
        unsigned char a4=0x04;
        unsigned char a5=0x0c;
        unsigned char a6=0x08;
        unsigned char a7=0x09;
        TRISAbits.TRISA1=1;
        TRISAbits.TRISA0=1;
        TRISAbits.TRISA2=0;
        TRISB=0x00;
        PORTB=0x00;

        while(1){
        PORTB=a0;
        __delay_ms(delays);;;
        PORTB=a1;
        __delay_ms(delays);
        PORTB=a2;
        __delay_ms(delays);
        PORTB=a3;
        __delay_ms(delays);
        PORTB=a4;
        __delay_ms(delays);
        PORTB=a5;
        __delay_ms(delays);
        PORTB=a6;
        __delay_ms(delays);
        PORTB=a7;
        __delay_ms(delays);

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        اصلا دارم دیونه میشم امدم طرف pic اما چندین روزه که یه برنامه ساده هم جواب نگرفتم و به کلی زده شدم.ممکنه واسه کرک لعنتی نرم افزار باشه؟

        این برنامه شما خیلی هم ساده نیست !

        برنامه زیر را امتحان کنید
        کد:
        void main()
        {
         PORTB=1;
        }
        این برای میکرو سی هستش
        برنامه که کمپایل شد ، یک فایل هگز خواهید داشت
        در پروتئوس ، باید این فایل را برای میکرو انتخاب کنید (این کارها را انجام داده اید؟)

        سپس در اجرا باید بیت صفر از portb باید یک شود

        ضمنا ابتدا در پروتئوس امتحان کنید ، روی خود میکرو تنظیمات بیشتری باید انجام شود

        دیدگاه


          #5
          پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

          میکروتون چیه فیوز بیتها رو چطوری تنظیم کردین؟ مقاومت پین MCLR رو گزاشتین؟

          دیدگاه


            #6
            پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

            نوشته اصلی توسط arvinfx نمایش پست ها
            میکروتون چیه فیوز بیتها رو چطوری تنظیم کردین؟ مقاومت پین MCLR رو گزاشتین؟
            با سلام بله پول اپ کردم

            دلیل: ادغام دو پست برای جلوگیری از اسپم

            نوشته اصلی توسط x935418 نمایش پست ها
            این برنامه شما خیلی هم ساده نیست !

            برنامه زیر را امتحان کنید
            کد:
            void main()
            {
             PORTB=1;
            }
            این برای میکرو سی هستش
            برنامه که کمپایل شد ، یک فایل هگز خواهید داشت
            در پروتئوس ، باید این فایل را برای میکرو انتخاب کنید (این کارها را انجام داده اید؟)

            سپس در اجرا باید بیت صفر از portb باید یک شود

            ضمنا ابتدا در پروتئوس امتحان کنید ، روی خود میکرو تنظیمات بیشتری باید انجام شود
            ین برنامه شد اما واسه خودم نشد
            ا

            دیدگاه


              #7
              پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

              شماره میکرو چیه؟

              دیدگاه


                #8
                پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

                شماره میکرو:
                PIC16F84A

                دیدگاه


                  #9
                  پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

                  نوشته اصلی توسط mostafa6369 نمایش پست ها
                  تشکر بابت پاسختون اما امدم و برنامه ساده زیر هم نوشتم باز جواب نداد.
                  unsigned char a0=0x01;
                  unsigned char a1=0x03;
                  unsigned char a2=0x02;
                  unsigned char a3=0x06;
                  unsigned char a4=0x04;
                  unsigned char a5=0x0c;
                  unsigned char a6=0x08;
                  unsigned char a7=0x09;
                  TRISAbits.TRISA1=1;
                  TRISAbits.TRISA0=1;
                  TRISAbits.TRISA2=0;
                  TRISB=0x00;
                  PORTB=0x00;

                  while(1){
                  PORTB=a0;
                  __delay_ms(delays);;;
                  PORTB=a1;
                  __delay_ms(delays);
                  PORTB=a2;
                  __delay_ms(delays);
                  PORTB=a3;
                  __delay_ms(delays);
                  PORTB=a4;
                  __delay_ms(delays);
                  PORTB=a5;
                  __delay_ms(delays);
                  PORTB=a6;
                  __delay_ms(delays);
                  PORTB=a7;
                  __delay_ms(delays);

                  دلیل: ادغام دو پست برای جلوگیری از اسپم

                  اصلا دارم دیونه میشم امدم طرف pic اما چندین روزه که یه برنامه ساده هم جواب نگرفتم و به کلی زده شدم.ممکنه واسه کرک لعنتی نرم افزار باشه؟
                  با سلام
                  بنظر میاد متغیر delays اصلا تعریف نشده و مقدار هم نداره!
                  ضمن اینکه برای ایجاد تاخیر متغیر در میکرو سی باید از تابع vdelay_ms استفاده کنین.
                  عجیبه که کامپایلر خطا نمیگیره!
                  تو پنجره ی مسج اون زیر به پیغامها دقت کنین. حجم فایل خروجی و میزان رم و رام استفاده شده رو ببینین اصلا با حجم برنامه تناسب هست یا نه؟
                  بعضی وقتها که فایل پروژه درست تعریف و تشکیل نشده باشه اصلا کامپایلر یه برنامه ی دیگه رو کامپایل میکنه.
                  کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                  دیدگاه


                    #10
                    پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

                    [QUOTE=نو رسیده;692573]با سلام
                    بنظر میاد متغیر delays اصلا تعریف نشده و مقدار هم نداره!
                    قبلا متغیر delays تعریف کرده بودم

                    دلیل: ادغام دو پست برای جلوگیری از اسپم

                    [QUOTE=mostafa6369;692602]
                    نوشته اصلی توسط نو رسیده نمایش پست ها
                    با سلام

                    قبلا متغیر delays تعریف کرده بودم
                    درضمن کل پروژه ها را بستم تا همین پروژه فقط کامپایل بشه

                    دیدگاه


                      #11
                      پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

                      باسلام و تشکر از همه دوستان که درمورد مشکل قبلیم کمک کردند.مشکل قبلیم بالاخره حل شد
                      اما یه موضوع دیگری که برام پیش اومده این هستش که من تو برنامه امدم و یک حلقه while گذاشتم اما باز میپره بیرون و تو حلقه mail و مجددا وارد while میشه چرا؟
                      int main(){

                      unsigned char i=255;
                      unsigned char a[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
                      PORTB=0x00;
                      while(1){
                      PORTB=0xff;
                      {
                      {
                      تو برنامه بالا با اینکه تو حلقه While پورت را یک میکنم .برنامه از حلقه بیرون میپره و تو تابع main چون اول کار صفر کردم پورتو دوباره پورت را صفر میکنه.دلیلش چیه .لطفا کمکم کنید

                      دیدگاه


                        #12
                        پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

                        نوشته اصلی توسط mostafa6369 نمایش پست ها
                        باسلام و تشکر از همه دوستان که درمورد مشکل قبلیم کمک کردند.مشکل قبلیم بالاخره حل شد
                        اما یه موضوع دیگری که برام پیش اومده این هستش که من تو برنامه امدم و یک حلقه while گذاشتم اما باز میپره بیرون و تو حلقه mail و مجددا وارد while میشه چرا؟
                        int main(){

                        unsigned char i=255;
                        unsigned char a[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
                        PORTB=0x00;
                        while(1){
                        PORTB=0xff;
                        {
                        {
                        تو برنامه بالا با اینکه تو حلقه While پورت را یک میکنم .برنامه از حلقه بیرون میپره و تو تابع main چون اول کار صفر کردم پورتو دوباره پورت را صفر میکنه.دلیلش چیه .لطفا کمکم کنید
                        نمی پره بیرون
                        داره ریست میشه

                        دیدگاه


                          #13
                          پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

                          نوشته اصلی توسط x935418 نمایش پست ها
                          نمی پره بیرون
                          داره ریست میشه
                          واسه چی ریست میشه.خوب تو پرتیوس و عملی این مشکل دارم اما وقتی برنامه را دیباگر خود mplax دیباگ میکنم مشکلی نداره و تو حلقه while تا ابد میمونه .به نظر شما چرا؟؟؟
                          من فکر میکنم فایل هگز تولید شده توسط برنامه مشکل داره

                          دیدگاه


                            #14
                            پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

                            نوشته اصلی توسط mostafa6369 نمایش پست ها
                            واسه چی ریست میشه.خوب تو پرتیوس و عملی این مشکل دارم اما وقتی برنامه را دیباگر خود mplax دیباگ میکنم مشکلی نداره و تو حلقه while تا ابد میمونه .به نظر شما چرا؟؟؟
                            من فکر میکنم فایل هگز تولید شده توسط برنامه مشکل داره
                            دوستمون درست میگن میکرو ریست میشه.
                            اگه زمان ریست شدن تایم ثابتی هست احتمالا واچ داگ فعاله.
                            جدیدترین ویرایش توسط نو رسیده; ۱۹:۲۴ ۱۳۹۷/۱۱/۲۳.
                            کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                            دیدگاه


                              #15
                              پاسخ : مشکل در مورد میکرو کنترلر pic در برنامه ساده

                              نوشته اصلی توسط نو رسیده نمایش پست ها
                              دوستمون درست میگن میکرو ریست میشه.
                              اگه زمان ریست شدن تایم ثابتی هست احتمالا واچ داگ فعاله.
                              خوب تو برنامه برای اینکه از هنگ کردن میکرو جلوگیری کنم اومدم وتایمر واچ داگ را فعال کردم.خوب چرا پس میکرو ریست میشه.در حالیکه باید تو همون حلقه وایل مگه نباید باقی بمونه؟
                              لطفا راهنمایم کنید چون میخوام تایمر واچ داگ هم فعال باشه

                              دیدگاه

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