اطلاعیه

Collapse
No announcement yet.

[گفتگو و تبادل نظر] سوالات برنامه نویسی در کامپایلر CCS

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

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

    نوشته اصلی توسط RezaMahzoonie
    این میکرو کریستال داخلی نداره اما میکرویی که داشته باشه میتونید با دستور زیر اون رو فعال کنید:
    [code=c]
    #use delay(internal=16mhz)[/code]

    کریستال 10 مشکلی ایجاد نمیکنه
    مدار راه انداز رو دست بستید؟ یه شماتیکی چیزی بذارید. پایه ریست رو چطوری متصل کردید ؟
    تشکر دوست عزیز :applause:
    دوتا مشکل داشتم یکی خازن های کریستال ودومی وصل نبودن پایه ریست .مشکل حل شد :wow:

    با سلام
    1دستور پاک کردن lcd چیه؟ مثلا تو avr اگه دستور lcd_clear بنویسی صفحه چاک میشه
    2 میشه تمام دستورات lcd بگید.مثل %u

    یه سوال دیگه
    اگه بخوام مثلا عدد50 رو بریزم تو پایه های پورت a چه طوریه؟
    و اگه بخوام بریزم تو نیبل 1 پورت a چه طوریه؟
    با تشکر
    جدیدترین ویرایش توسط شاهرخ مستقیمی; ۱۲:۳۰ ۱۳۹۵/۰۳/۲۰.

    دیدگاه


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

      در مورد سوال اخیر:
      اینکه 50 ب پورت آ اختصاص داده بشه:
      کد:
      output_x(value);
      مقدار را به پورت a اختصاص میدهد.
      در مورد اینکه ب نیبل نسبت دهیم اگر منظورتون نیبل پایین باشد، ک عدد اگر کمتر از 16 باشد در یک نیبل جا میشود(نیبل پایین) ولی اگر نیبل بالا منظورتون باشد، عددی ک داری رو 4 تا شیفت بدی حله. با عملگر >>.
      توی هلپ ccs بزنی operators میاره.
      تمام چیزی بود ک میدونستم.
      راهنمایی دقیقتر خواستی ، دقیقتر توضیح بده با مثال.


      اضافه شده در تاریخ :
      نوشته اصلی توسط rasool1370
      با سلام
      1دستور پاک کردن lcd چیه؟ مثلا تو avr اگه دستور lcd_clear بنویسی صفحه چاک میشه
      2 میشه تمام دستورات lcd بگید.مثل %u
      از هلپ کامپایلرت استفاده کن.اینجا منتظر جواب باشی وقتت تلف میشه. یک درایور کامل هم دیدم توی انجمن ccs info شاید دوستان اینجا هم قرار داده باشند.
      جناب مستقیمی زحمت کشیدن لینک های مفید رو گزاشتن اونجا رو هم بگردید.
      درایوری ک تو دایرکتوری نصب کامپایلر هستش فایل lcd.c را باز کن ببین چه دستوراتی داره
      ......
      امیدوارم مفید باشه
      رو به خودت نسبت هستی مده!**دل به چنین مستی و پستی مده! //زانچه نداری ز چه افسردهآ‌ای*و زغم و اندوه دل آزردهآ‌ای؟!//گر ببرد ور بدهد دست دوست*ور بِبَرد ور بنهد مُلک اوست//ور بِکِشی یا بکُشی دیو غم **کج نشود دست قضا را قلم//آنچه خدا خواست همان میآ‌شود**وآنچه دلت خواست نه آن میآ‌شود.
      ....

      دیدگاه


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

        نوشته اصلی توسط amanver
        در مورد سوال اخیر:
        اینکه 50 ب پورت آ اختصاص داده بشه:
        کد:
        output_x(value);
        مقدار را به پورت a اختصاص میدهد.
        در مورد اینکه ب نیبل نسبت دهیم اگر منظورتون نیبل پایین باشد، ک عدد اگر کمتر از 16 باشد در یک نیبل جا میشود(نیبل پایین) ولی اگر نیبل بالا منظورتون باشد، عددی ک داری رو 4 تا شیفت بدی حله. با عملگر >>.
        توی هلپ ccs بزنی operators میاره.
        تمام چیزی بود ک میدونستم.
        راهنمایی دقیقتر خواستی ، دقیقتر توضیح بده با مثال.
        با سلام و تشکر
        من میخوام مثلا عدد 10 بریزم تو چهارتا پایه اول پورت a و عدد5 بریزم تو چهار تا پایه دوم

        دیدگاه


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

          سلام.
          لطفا سوالتون روو در بخش سوالات کامپایلر بپرسید.
          ممنون
          از جناب مستقیمی درخواست میشود،اگر امکانش هست منتقل نمایند.
          اما جواب سوال:
          شما ابتدا عددی را که میخواهید در نیبل بالا ذخیره کنید را در یک متغییر 8 بیتی مثل a ذخیره کنید،سپس 4 بار شیفت بدید تا وارد بیت های پرارزش شوند. سپس این متغییر a را با متغییر دوم b ک عدد نیبل پایین دران ذخیره شده است or کنید و حاصل را روی پورت a قرار دهید. البته یک بار درستی روش را چک فرمایید.
          رو به خودت نسبت هستی مده!**دل به چنین مستی و پستی مده! //زانچه نداری ز چه افسردهآ‌ای*و زغم و اندوه دل آزردهآ‌ای؟!//گر ببرد ور بدهد دست دوست*ور بِبَرد ور بنهد مُلک اوست//ور بِکِشی یا بکُشی دیو غم **کج نشود دست قضا را قلم//آنچه خدا خواست همان میآ‌شود**وآنچه دلت خواست نه آن میآ‌شود.
          ....

          دیدگاه


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

            درود
            آقا توی نرم افزار CCS اگه بخواهیم مستقیم به یک رجیستر آدرس بدیم باید چیکار کنیم
            مثلا من برای آدرس دهی به رجیستر TRIS و PORT باید چیکار کنیم
            باز هم به نرم افزار MIKROC دستوراش همه استاندارده . این برا خودش یه سری دستور تعریف کرده :angry: :angry: :angry:

            دیدگاه


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

              درود :biggrin:
              منظورتون رو متوجه نشدم.
              اگه میشه کمی توضیح بدید شاید، شاید تونستیم کمکی کنیم(انشالله)
              من الله التوفیق
              رو به خودت نسبت هستی مده!**دل به چنین مستی و پستی مده! //زانچه نداری ز چه افسردهآ‌ای*و زغم و اندوه دل آزردهآ‌ای؟!//گر ببرد ور بدهد دست دوست*ور بِبَرد ور بنهد مُلک اوست//ور بِکِشی یا بکُشی دیو غم **کج نشود دست قضا را قلم//آنچه خدا خواست همان میآ‌شود**وآنچه دلت خواست نه آن میآ‌شود.
              ....

              دیدگاه


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

                سلام
                :biggrin:
                این سوال قبلا تو قسمت سوالهای ccs جواب داده شده . . .
                منم این مشکل را داشتم . . .
                با دستورهای #bit و #byte مشکل حل میشه . . .
                به اون قسمت سر بزنید
                :read:

                دیدگاه


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

                  نوشته اصلی توسط S S
                  درود
                  آقا توی نرم افزار CCS اگه بخواهیم مستقیم به یک رجیستر آدرس بدیم باید چیکار کنیم
                  مثلا من برای آدرس دهی به رجیستر TRIS و PORT باید چیکار کنیم
                  باز هم به نرم افزار MIKROC دستوراش همه استاندارده . این برا خودش یه سری دستور تعریف کرده :angry: :angry: :angry:
                  سلام دوست عزیز
                  برای این کار باید آدرس رجیستر رو تعریف کنی برای این کار می تونی مستقیما به هدر برنامه ات در انتها اضافه کنی یا نه در یک هدر دیگه تعریف کنی و در برنامه بخوانی
                  به طور مثال یک رجیستر دار به نام REG و دارای هشت بیت می باشد که هر بیت یک اسم دارد در دیتا شیت آدرس رجیستر رو پیدا می کنی
                  BYTE REG = Adress#
                  #BIT REG.0= Adress.1
                  # در ابتدا هست
                  و مستقیم در برنامه می توانی مقدار دهی کنی هم بایتی هم بیتی
                  موفق باشی

                  دیدگاه


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

                    نوشته اصلی توسط mhs_66
                    سلام. من باید lcd به پورت c وصل کنم.
                    کتابخانه lcd.c برای پورت های b &d قابل تعریف است. پایه های lcd با دستور define روی پورت c ادرس دهی میکنم ولی انگار lcd به میکرو متصل نیست
                    سلام دوستان من lcd 2*16 رو میتونم به پورت d وصل کنم ولی lcd 4*20 وصل نمیشه
                    کسی میتونه کمک کنه؟

                    اضافه شده در تاریخ :
                    نوشته اصلی توسط mohsen68sh
                    سلام دوستان من lcd 2*16 رو میتونم به پورت d وصل کنم ولی lcd 4*20 وصل نمیشه
                    کسی میتونه کمک کنه؟
                    مشکلم رو با lcd 20*4 حل کردم و از اونجا که ممکنه برا کس دیگه ای سوال بشه جوابش رو خودم میزارم
                    راه حل اینه که از کتابخونه ای که آدرسش رو در زیر قرار دادم استفاده کنید جای کتابخونه LCD420.c
                    برید از آدرس زیر کد FLEX_LCD420.c رو بردارید
                    http://www.ccsinfo.com/forum/viewtopic.php?t=28268
                    توی پوشه drivers کپی کنید ولی قبلش باید پایه ها رو توی کد تنظیم کنید(هر پایه ای از lcd رو به هر پایه ای از میکرو که عشقتون کشید وصل کنید)
                    از این کتابخونه های به اصطلاح flexible برای 16*2 و 16*1 هم وجود داره
                    http://www.ccsinfo.com/forum/viewtopic.php?t=24661
                    :nerd: :nerd: :nice: :nice:

                    دیدگاه


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

                      سلام
                      چطور می تونم به جزئیات source file یک میکرو pic در نرم افزار ccs دست پیدا کنم.
                      من با Assembly کد می زدم. الان می خوام بیام سمت c .
                      مشکلم اینه که کلی تابع مثلا توی فایل 16f877a.h هست، مثل :
                      _bif void set_tris_a(int8 value);
                      _bif void set_tris_b(int8 value);
                      _bif void set_tris_c(int8 value);
                      _bif void set_tris_d(int8 value);
                      _bif void set_tris_e(int8 value);
                      _bif int8 get_tris_a(void);
                      _bif int8 get_tris_b(void);
                      _bif int8 get_tris_c(void);
                      _bif int8 get_tris_d(void);
                      _bif int8 get_tris_e(void);

                      که من نمی دونم دقیقا اینها دارن چه رجیستری از میکرو را و چطور اون رو تغییر می دن.
                      برای این نیاز به کدهای داخل این توابع دارم.
                      چطور باید به اینها دسترسی پیدا کنم.

                      خدا خیرتون بده.

                      دیدگاه


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

                        ^
                        نتیجه یک سرچ در گوگل میگه اون خطوط برای شناسوندن توابع Built-in خود CCS به MPLAB X IDE برای هایلایت شدن هستند.

                        شما دسترسی به کد اون توابع ندارید چون داخل خود کتابخانه های CCS هستند و بسته به مدل و خانواده میکرو فرق میکنن.
                        اما اگر میخاید بدونید اون توابع دارن چیکار میکنن میتونید فایل LST رو ببینید.

                        من هم از اسمبلی اومدم. اوایل CCS C یکم برام مبهم بود ولی بعد به کامپایلر اعتماد پیدا کردم. در 99 درصد موارد کارش درسته.

                        برای اطلاعات بیشتر به انجمن خود CCS به آدرس www.ccsinfo.com/forum مراجعه کنید. بحث های عمیق تر همه اونجا انجام شده.

                        دیدگاه


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

                          ممنونم عزیز
                          روشن شدم. این فایل LST هم جالبه .
                          اعتماد شما به ccs هم خبر خوبی هست واسه مثل منی که از اسمبلی میام :biggrin:
                          دو تا سوال ساده:
                          1) توی help ccs نوشته که تابع delay از هیچ تایمری استفاده نمی کنه. این اوکیه دیگه؟ منظورم توی عمل هم اینجوری بوده؟! (می دونم سوال بیخودیه ولی من شنیده بودم که delay همیشه از timer استفاده می کنه!)

                          2) این سوالم بهتره ! :rolleyes:
                          توی data sheet میکرو گفته که وقتی وقفه میکرو فعال می شه برای اینکه تنظیمات رجیسترهای Status,W,Pclath در قبل و بعد از اجرای وقفه تغییر نکنه، باید این رجیسترها را به صورت موقت یه جایی ذخیره کنیم و بعد از اتمام وقفه دوباره با مقادیر اولیه پر کنیم. (قسمت 14.12 از میکرو 16F877A)
                          حالا سوال اینجاست که، آیا وقتی من توی css با وقفه ها کار می کنم، در هر ورود و خروج این موضوع لحاظ می شه یا باید من خودم لحاظ کنم و کد بزنم؟


                          اضافه شده در تاریخ :
                          اینم سندش برای بحث وقفه! :
                          https://www.dropbox.com/s/zk6uad4b564nn48/1.png?dl=0

                          دیدگاه


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

                            1. دستورات Delay از حلقه های مرده استفاده میکنه که تو اسمبلی آشنایی دارید. از تایمری استفاده نمیکنه.
                            2. خود CCS این کار رو انجام میده. خوبیش اینه که میتونید این رو غیر فعال کنید و خودتون کنترلش رو به عهده بگیرید. البته برای اکثر پروژه ها لزومی وجود نداره.

                            کلاً تو CCS اگر بخواید میتونید خودتون همه کارها رو انجام بدید و حتی اسمبلی بنویسید.

                            دیدگاه


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

                              :smile: بله بله، با حلقه های مرده که دوستم!
                              کلا شمام خیلی گلی. ممنون
                              حله.

                              اضافه شده در تاریخ :
                              سلام دوستان
                              من میکرو pic16f887a را با پروگرمر pic kit3 توسط نرم افزار mplab ide 8.92 پروگرم کردم. کد را هم با ccs 5.0 نوشته بودم.
                              الان نمی تونم دیباگ کنم با pic kit 3 یا حتی با ccs?
                              اصلا توی ccsمیشه مثل AVRstudio کد را اجرا کرد و نتیجه عملکرد هر خط را در رجیسترها دید؟ وقتی روی گزینه deguge کلیک می کنم در حالی که کد خطایی نداره، این خطا را برای debug میده.
                              https://www.dropbox.com/s/rels03fplyn6p8x/12.png?dl=0
                              چه کنم برای debug؟ دوست دارم با ccs به صورت نرم افزاری debug کنم و با MPlab به صورت in circuit با pic kit3 .

                              اضافه شده در تاریخ :
                              دوستان عزیز
                              لطفا این دیباگر درccs یا توسط pic kit3 را کمی توضیح بدید.
                              خدا خیرتون بده

                              دیدگاه


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

                                این سوال منم هست.لطفا یکی دیباگ کردن رو با pickit3 توضیح بده.

                                ممنون

                                دیدگاه

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