اطلاعیه

Collapse
No announcement yet.

آموزش برنامه نویسی pic با زبان pic basic توسط کامپایلر micro code studio plus

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

    آموزش برنامه نویسی pic با زبان pic basic توسط کامپایلر micro code studio plus

    با عرض سلامی دوباره خدمت همه عزیزان
    در این تاپیک هم قصد داریم برنامه نویسی pic با استفاده از pic basic را آموزش بدهیم.
    از همه شما عزیزان دعوت می کنم که تجربیات و آموخته های خود را در این تاپیک قرار دهید تا همه بتوانند از آن ها استفاده کنند .
    خودم هم سعی می کنم که هر چه توانستم قرار بدهم .
    البته من به صورت آموزشی کار می کنم .
    یعنی از اول شروع می کنم و به ترتیب زبان pic basic رو آموزش می دهم .
    از شما خیلی خیلی ممنونم .
    جدیدترین ویرایش توسط شاهرخ مستقیمی; ۱۵:۲۹ ۱۳۹۵/۰۳/۲۳.

    #2
    پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کامپایلر micro code studio

    و این هم اولین آموزش :wow:
    ما قصد دایم که برنامه نویسی میکرو pic را با زبان pic basic آموزش بدیم.
    کامپایلر pic basic pro یکی از ساده ترین کامپایلر ها برای برنامه نویسی میکرو هست .
    برنامه در نرم افزار micro code studio plus و یا به اختصار mcsp نوشته می شود و کامپایلر ، آن را ترجمه کرده و چندین فایل با پسوند های مختلف همچون .hex و .asm و .pbp و.... تبدیل می کند که فایل .hex به درد ما می خورد که باید توسط نرم افزار پروگرمر (مثل icprog یا epic و...) و سخت افزار پروگرمر (که در مباحث بعدی نقششو up می کنم) باید داخل حافظه اجرایی میکرو قرار دهیم تا میکرو بتواند دستورات ما را اجرا کند .
    همچنین می توانید نرم افزار کامپایلر را در انتها دانلود کنید .ابتدا فایل را unzip کنید . سپس داخل پوشه MCStudioPlus فایلی به نام CodeStudio.exe وجود دارد . آن را باز کنید .اگر برای اولین بار است که شما این نرم افزار را باز می کنید ، باید کمی صبر کنید تا نرم افزار به صورت اتوماتیک جستجو را شروع کند و فایل های مورد نیاز خود را روی هاردتان پیدا کند .
    بعد نرم افزار باز می شود .
    در قسمت toolbar یک عدد combobox را می بینید که داخل آن نامی نوشته شده است . مثلا 16f877A که این شماره ، نام میکرو مورد نظرتان را مشخص می کند . یعنی شما با هر میکرویی که می خواهید کار بکنید ، حتما باید نوع آن را مشخص کنید .
    در قسمت زیر این کومبوباکس بخشی را می بینید که داخل یک کادر ستاره ای قرار دارد . این بخش مربوط به توضیحات برنامه ای است که می نویسید و توی برنامه اهمیتی ندارد و دخالتی نمی کند . زیر این کادر محیطی است که شما باید دستورات برنامه تان را وارد کنید . لازم به ذکر است که با نوشتن هر خط باید با زدن کلید enter به خط بعدی بروید .
    بعد از اینکه برنامه تان را نوشتید باید آن را save کنید . سپس برای کامپایل کردن آن دکمه compile (در بالا سمت چپ . کنار کومبوباکس) را بفشارید تا برنامه ای را که نوشته اید کامپایل شود . فایل هگز و بقیه در همان مسیری که برنامه را ذخیره کرده اید ، ایجاد خواهد شد . پس از فشار دادن دکمه کامپایل اگر برنامه شما درست باشد ، پس از اتمام مراحل ، در قسمت پایین نرم افزار(statusbar) عبارت success را مشاهده خواهید کرد و اگر برنامه تان مشکل داشته باشد ، عبارت compilation error درج خواهد شد .
    نحوه برنامه ریزی میکرو
    بعداز اینکه شما برنامع تان را نوشتید و کامپایل کردید باید فایل هگز را داخل میرو قرار بدهید یا به اصطلاح میکرو را پروگرم کنید .
    برای این کار ابتدا سخت افزار پروگرمر را به کامپیوتر خود متصل نمایید . سپس نرم افزار icprog را از همان پوشه ای که کامپایلر قرار دارد اجرا نمایید . سپس فایل هگز خود را load کنید و دکمه program all را فشار دهید تا میکروتان پروگرم شود .(در باره نرم افزار پروگرمر بعدا به طور مفصل صحبت خواهیم کرد ) :bye

    دیدگاه


      #3
      پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کامپایلر micro code studio

      فرمان ها در زبان pic basic pro
      عملیات ریاضی
      + عمل جمع مثال : a=b+c (در مثال قبل مقادیر bو c با یکدیگر جمع می شوند و داخل a قرار می گیرند)
      - عمل تفریق
      * عمل ضرب مثال: a=b*c
      ** 16 بیت بالا از عمل ضرب
      /* 16بیت وسط از عمل ضرب
      / تقسیم
      // باقیمانده تقسیم
      << شیفت به سمت راست
      >> شیفت به سمت چپ
      = انتقال مقدار
      Abs قدر مطلق
      Cos کسینوس یک زاویه
      Dig جدا کردن یک رقم از یک عدد چند رقمی
      Max ماکزیمم دو مقدار
      Min مینیمم دو مقدار
      Sin سینوس یک زاویه
      Sqr ریشه دوم یک مقدار

      نکات و مثال ها :
      عمل ضرب در pic basic pro(pbp) به صورت 32 بیتی است و تقسیم به صورت 16 بیتی می باشد .
      عمل شیفت می تواند یک مقدار باینری را از 0 تا 15 مقدار شیفت دهد .
      مثال : فرض کنید عدد ما برابر 00000100 در مبنای باینری می باشد . حال اگر آن را به تعداد 1 به سمت چپ شیفت بدهیم ، عدد 00001000 حاصل می شود . هر واحد شیفت به سمت راست معادل تقسیم بر 2 و هر واحد شیفت به سمت چپ برابر با ضرب در 2 می باشد . نحوه نوشتن آن به این صورت می باشد:
      w=w>>1 یا w=w<<4

      عملگر dig برای جدا کردن یک رقم از عددی چند رقمی به کار برده می شود . به طور مثال فرض کنید عدد ما 5961 می باشد . ما می خواهیم رقم یکان و دهگان آن را جدا نموده و در دو مکان مختلف از حافظه ذخیره کنیم . برای این منظور ا زعلمگرdig استفاده می کنیم .
      برای جدا کردن رقم یکان s=s dig 0
      برای جدا کردن رقم دهگان s=s dig 1و ........
      ماکزیمم و مینیمم
      B1=b0 max 100
      در مثال فوق مقدار b1 برابر با بزرگترین مقدار از بین مقادیر 100 و ذ0 خواهد بود .
      B1=b0 min 100
      در عبارت فوق ، مقدار b1 برابر با کوچکترین مقدار از بین مقادیر 100 و b0 خواهد بود .بنابراین b1 نمی تواند مقداری بزرگتر ار 100 داشته باشد :bye

      دیدگاه


        #4
        پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کامپایلر micro code studio

        مفاهیم اولیه زبان pic basic :
        متغیر ها : :smile:
        متغیر ها برای مقادیر مختلف ریاضی و منطقی بکار می روند . بعنوان مثال اگر بخواهیم برنامه شمارنده ای بنویسیم که از صفر الی 9 شروع به شمارش نماید ، می بایست عدد صفر را در یک متغیر ذخیره کرده و هر بار یک واحد عدد قبلی را افزایش دهیم . بدین ترتیب به متغیر مذکور مقادیر مختلف را مقدار دهی می کنیم .
        دستور var برای تعریف کردن متغیر به کار می رود .
        در برنامه نویسی به زبان pbp ، سه نوع متغیر مختلف به صورت ذیل می توان تعریف نمود :
        بیت (bit) بایت(byte) کلمه(word)
        بیت : متغیری تک بیتی می باشد که فقط می تواند اعداد 0 و 1 را در خود ذخیره کند .
        بایت : متغیری 8 بیتی می باشد که می تواند اعداد بین 0 تا 255 را د رخود ذخیره کند .
        کلمه : متغیری شامل 2 بایت یا 16 بیت می باشد که می تواند اعداد بین 0 تا 65535 را در خود ذخیره کند . :surprised:
        فرض کنید می خواهیم متغیری به نام m را از نوع بایت تعریف کنیم . به این صورت عمل می کنیم :
        M var byte
        همچنین لازم به ذکر است که کامپایلر pbp نسبت به بزرگ و کوچک بودن حروف حساس نیست . یعنی متغیری با نام b و متغیری با نام B با یکدیگر برابر می باشند .
        مقادیر ثابت (constant)
        مقادیر ثابت را در 3 مبنا می توانیم به مار ببریم : دسیمال(مبنای 10) ، باینری (مبنای 2) و هگزا دسیمال(مبنا 16)
        اعداد در مبنای دسیمال را به صورت معمولی می نویسیم . (بدون هرگونه علامتی).b1=21
        اعداد در مبنای باینری را با علامت % قبل از آن مشخص می کنیم .m=%10001110
        اعداد در مبنای هگزا دسیمال (مبنا 16) را با آوردن علامت $ مشخص می کنیم . k=$4B
        :bye

        دیدگاه


          #5
          پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کامپایلر micro code studio

          دستور tris
          برای کار با میکرو اولین کاری که انجام می دهیم این است که به میکرو بفهمانیم که از کدامیک از پایه هایش می خواهیم استفاده کنیم . یعنی از کدام پورت از میکرو می خواهیم استفاده کنیم و اینکه این پورت به صورت ورودی است یا خروجی .
          این کار را با استفاده از دستور tris انجام می دهیم . اگر با استفاده از این دستور به پایه ای مقدار 0 را اختصاص دهیم ، آن پایه به صورت خروجی تعریف خواهد شد . همچنین اگر به آن مقدار 1 را اختصاص بدهیم ، به صورت ورودی تعریف خواهد شد .
          فرض کنید می خواهیم کلیه بیت های پورت B را به صورت خروجی تعریف کنیم . پس باید بنویسیم :
          Trisb=0 و یا trisb=%00000000 و یا trisb=$00
          حال فرض کنید که از 8 بیت موجود بر روی پورت c ، قصد داریم که بیت های صفرم و اول و پنجم و ششم را به صورت ورودی و بقیه بیت ها را به صورت خروجی تعریف کنیم . پس به این صورت عمل می کنیم :
          Trisc=%01100011

          دیدگاه


            #6
            code studio plus

            سلام برادر ممنون از اینکه مطالب مفیدی گزاشتید :applause:

            فایل دانلود microcode studio تو سایت نزاشتید :eek:
            ممنون اگه پیگیری کنید :job:

            دیدگاه


              #7
              پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کام&

              نوشته اصلی توسط محمد ایجی
              در این تاپیک هم قصد داریم برنامه نویسی pic با استفاده از pic basic را آموزش بدهیم ....
              با سلام و خدا قوت
              چند وقت پیش یک مطلبی را خصوصی خدمت مدیر محترم گروه ، جناب آقای مهندس مستقیمی عرض کردم که الان با اجازه ایشان ، ایجاد این تاپیک فرصتی بسیار خوب و مناسبی است که خدمت جنابعالی "آقای ایجی ، نگارنده محترم" و بقیه دوستان خوب و ارزشمند انجمن PIC و مخصوصاً کسانی که می خواهند PICرا شروع کنند عرض کنم.

              من از جناب آقای مهندس مستقیمی نظرشان را پرسیدم که : آیا همیشه انجام یک کار (یا یک پروژه) از دشوار ترین راه ممکن ؛ در حالتی که راهی آسان تر هم وجود دارد منطقی به نظر می رسد؟ که جواب من به این سوال : استفاده از محیط بیسیک (به دلیل سادگی آن) به جای دشواری های زبان C سی بود و بعد ایشان فرمودند که بیشتر توضیح بدهم. بنده مواردی را خدمت شان عرض کردم که به طور خلاصه چکیده بعضی از آنها را بیان می کنم:

              همانطور که می دانید ، برای کار با میکروهای خانواده PIC محیط ها و کامپایلرهای متفاوتی وجود دارد که معروف ترین آنها بر پایه زبان C ؛ پاسکال ، بیسیک و غیره هستند. و در ایران رغبت بیشتر دوستان استفاده از محیط هایی مبتنی بر زبان C است ، و مدل های مختلف از زبان C.
              درصورتیکه در اروپا و امریکا نزدیکترین رقیب برای زبان C ، زبان بیسیک است و به ویژه همین محیطی که است که شما معرفی می کنید که فکر کنم توسط شرکت Micro Engineering Labs توسعه یافته است.

              به منظور حمایت از این تاپیک باید عرض کنم که هر آنچه شما در زبان C به دست می آورید و یا خلق می کنید در محیط PicBasicPro قابل ایجاد و توسعه است. و صد البته با تفاوت هایی که اولین آن سادگی و قابل فهم بودن دستور العمل هاست. لذا شانس به نتیجه رسیدن و پائین بودن خطا در برنامه نویسی با PicBasicPro بسیار خوب و قابل توجه است.

              من زبان C بلدم اما چون من پروژه های PIC را با همین محیط انجام داده ام به نکاتی رسیدم که اینجا بیان می کنم و صد البته ممکن است نکات ضعف وقوت دیگری وجود داشته باشد که من نمی دانم . لذا تکرار می کنم که این نکات صرفا بر اساس تجربه های عملی این حقیر به دست آمده و بیان دیدگاه ها است و کماکان قضاوت و انتخاب با دوستان ارجمند است :

              1) Micro Engineering Labs یا Melabs. ادعا می کند که فقط تنها یاد گرفتن 34 تابع یا دستور (چیزی که تو ذهن من هست این عدد 34 است و شک دارم که قطعی باشد اما همین حدود است؛ نهایتاً تعدادیکی دو تا پائین بالا) از کل 57 تابع شما را بی نیاز می کند.
              2) یک سری تنظیمات از قبیل WDT & BOR و ... را در بهترین شرائط از قبل تنظیم شده است و نیازی نیست که کاربر به آن بپردازد ؛ مگر این که فعالیت ویژه ای مد نظر داشته باشد.
              3) محیط کاربری آن بسیار بسیار آسان و ساده ، ساخته شده است و پیچیدگی های محیط های مبتنی بر زبان C را اصلا ندارد.
              4) تعریف متغیرهای مثل زبان C دست و پاگیر و پیچیده نیستند.
              5) به قول برنامه نویس ها : "به راحتی امکان نوشتن یک برنامه "ساختار یافته" وجود دارد و هیچ وقت "اسپاگتی" نمی شود.
              6) بر خلاف زبان C نیازی به آکولاد " { و } " ندارد.
              6) Help بسیار کوتاه و روان نوشته شده است و مثال های درون Help در جملاتی کوتاه بهترین نتیجه را منتقل می کند.
              7) شرکت سازنده یک تالار گفتگوی بسیار بسیار قوی دارد و برای هر موضوعی و هر چی که فکر کنید راه کار و سورس کد دارد.
              8) در اروپا استفاده از PIC با زبان بیسیک بیشتر از زبان سی محبوبیت دارد . این یک آدرس نمونه برای تالار گفتگوی بیسیک http://www.picbasic.co.uk/forum/forumdisplay.php?f=11
              9) ...

              طرح یک پیشنهاد

              اگر به آموزش هایی که ؛ قبل از این گفتار؛ در تالار های PIC گذاشته شده اند یک نگاهی بیندازیم می بینیم که بسیار متاسفانه هیچ کدام به انتها نرسیده اند. شروع کار خیلی خوب ، پرقدرت و پر انرژی بوده ! اما بیان بعضی سوالات و ایجاد شاخه های فرعی اجازه نداده که کار به انتها برسد. یا بی رو دربایستی اصلا نویسنده تاپیک های قبلی کلا خسته شده و کار را رها کرده!!
              پیشنهادم این است که من یک فایل پی دی اف PDF فارسی دارم که آموزش بیسیک و توابع آن است. اگر صلاح می دانید این فایل را به عنوان مرجع اینجا قرار بدهیم تا هر کس دوست داشت برود و مطالعه کند . و به جای تعریف و توضیح درباره توابع و متغیرها و نمی دانم نوشتن یک جمله روی LCD و غیره و ذالک ، انرژی مان را متمرکز بر روی آموزش مثال هایی بکنیم که کاربردی است و در ضمن اینکه حالا کسی اگر سوالی هم درباره یک تابع داشت ؛ اگر رفت و فایل آموزشی را خواند و متوجه نشد ، صرفا همان یک تابع را رفع اشکال می کنیم.

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

              اینجوری نتیجه پربار تری می گیریم .
              ************************************************** ***********************************************
              :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::
              ************************************************** ***********************************************
              توجه : زمانی که من داشتم این پاسخ را می نوشتم اصلا متوجه تاریخ شروع این تاپیک (26 تیر 87) نشدم و نمی دانستم که [glow=black,2,300]5 سال[/glow] است کسی سراغ آن نیامده است !!

              و متاسفانه متاسفانه متاسفانه این مطلب آموزشی هم به نتیجه ای نرسیده است.


              لینک دانلودی که در بالا به آن اشاره کرده بودم گذاشتم :

              http://s5.picofile.com/file/8127970484/PICBasic_farsi_ALEMISHOP_.rar.html

              کلیدواژه جستجو در گوگل : آموزش فارسی Picbasic pro

              فایل در قالب PDF است
              رهرو آن نیست که گهی تند و گهی خسته رود / رهرو آن است که آهسته و پیوسته رود





              والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

              هوشمندانه بپرسيد...

              دیدگاه


                #8
                پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کام&

                بسم الله الرحمن الرحیم

                چند تا مثال میگذارم اگر استقبال شد ادامه می دهم...

                اولین مثال :
                راه اندازی سون سگمنت 4 رقمی
                کد:
                ' Name    : 7SEGMENT.pbp
                ' Compiler  : PICBASIC PRO Compiler 2.6
                ' Assembler  : PM or MPASM
                ' Target PIC : 16F, 18F types
                ' Hardware  : 7-segment LED
                ' Oscillator : internal or external
                ' Keywords  : LOOKUP
                ' Description : PICBASIC PRO program to demonstrate 7-segment LED display.
                
                '
                
                Segments Var PORTB
                Digits  Var PORTA
                i    Var Byte
                n    Var Byte
                Value  Var Word
                
                  TRISB = $80     ' Set segment pins to output
                  TRISA = $f0     ' Set digit pins to output
                
                mainloop:
                  For Value = 0 To 9999
                   GoSub display   ' Display the value
                  Next Value
                    
                  GoTo mainloop    ' Do it forever
                
                ' Subroutine to send the number (0 - 9999) in Value to LEDs
                display:
                  For i = 0 To 3   ' Loop through 4 digits
                   n = Value Dig i  ' Get digit to display
                   GoSub display1  ' Display the digit
                   Pause 1      ' Leave it on 1 millisecond
                  Next i       ' Do next digit
                  Return
                
                ' Subroutine to display one digit on LED
                ' i = digit number
                ' n = number to display
                
                display1:
                  Digits = $ff    ' All digits off to prevent ghosting
                
                  ' Convert binary number in n to segments for LED
                  Lookup n, [$40, $79, $24, $30, $19, $12, $02, $78, $00, $18], Segments
                
                  ' Set digit pin i to 0 (on) and the rest of the pins to 1 (off)
                  Digits = ~Dcd i
                  Retu
                والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

                هوشمندانه بپرسيد...

                دیدگاه


                  #9
                  پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کام&

                  بسم الله الرحمن الرحیم

                  مثال دو :

                  چگونگی راه اندازی LCD
                  من به ترتیب زیر پایه های نمایشگر را متصل کرده ام . اما شما هر جور که دوست دارید فقط اگر جایی را فیزیکی تغییر دادید ، فراموش نکنید که در نرم افزار هم ان تغییرات را اعمال کنید.
                  کد:
                  ' Name    : LCD.pbp
                  ' Compiler  : PICBASIC PRO Compiler 2.6
                  ' Assembler  : PM or MPASM
                  ' Target PIC : 16F or 18F
                  ' Hardware  : LCD display
                  ' Oscillator : Any internal or external
                  ' Keywords  : LCDOUT
                  ' Description : PICBASIC PRO program to demonstrate operation of an LCD in 4-bit mode.
                  '
                  
                  ' LCD should be connected as follows:
                  ' LCD  PIC
                  ' DB4  PortA.0
                  ' DB5  PortA.1
                  ' DB6  PortA.2
                  ' DB7  PortA.3
                  ' RS  PortA.4 (add 4.7K pullup resistor to 5 volts)
                  ' E   PortB.3
                  ' RW  Ground
                  ' Vdd  5 volts
                  ' Vss  Ground
                  ' Vo  20K potentiometer (or ground)
                  ' DB0-3 No connect
                  
                   زمان توقف 500 میلی ثانیه Pause 500    ' Wait for LCD to startup
                  @ device hs_osc
                  define osc 20
                  mainloop:
                    Lcdout $fe, 1  ' Clear LCD screen
                    Lcdout "Hello" ' Display Hello
                    Pause 500    ' Wait .5 second
                  
                    Lcdout $fe, 1  ' Clear LCD screen
                    Lcdout "World"
                    Pause 500    ' Wait .5 second
                  
                    Goto mainloop  ' Do it forever
                  
                    End
                  والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

                  هوشمندانه بپرسيد...

                  دیدگاه


                    #10
                    پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کامپایلر micro code studio plus

                    سلام
                    یک لینک برای دانلود picbasic pro ورژن 2.6 یا بالاتر به همراه متعلقاتش سراغ دارید ؟

                    مورد بعد آیا کسی از دوستان تونسته توی این محیط با sd card یا mmc فایل بسازه ( با فرمت FAT )

                    دیدگاه


                      #11
                      پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کام&

                      نوشته اصلی توسط mohsen++


                      مورد بعد آیا کسی از دوستان تونسته توی این محیط با sd card یا mmc فایل بسازه
                      بسم الله الرحمن الرحیم

                      این سورس کد که اینجا هست برای یک نمونه نوشته شده است و داخلش چند تا چیز هست یکی خواندن و نوشتن روی EEPROM Serial I2c به شماره 24LC65 و ارتباط با PC از طریق MAX3222 یا هر چیزی مشابه و SD Card. صرفا به عنوان یک نمونه و مثال تقدیم شد

                      کد:
                      'Brief: The MMC is a 3volt part therefore all data lines
                      '    must be conditioned if interfacing with a 5v mcu.
                      '
                      '    MMC pins in SPI mode:
                      '      Pin1:ChipSelect(SS),Pin2:MMC input(MOSI),Pin3:GND,Pin4:3V+,
                      '      Pin5:Clock(SCK), Pin6:GND, Pin7:MMC output(MISO)
                      '    PIC pins:
                      '      Portd.7 SS,Portd.6 SCK,Portd.5 MOSI, Portd.4 MISO
                      '
                      '    For voltage translation: 
                      '    An LM317 or LM2937-3.3 can be used to provide 3.3 volts
                      '    for the MMC and four 2N3904 transistors with resistors
                      '    can be used forfor MMC power and data line conditioning
                      '    See the SanDisk website for more details
                      '         http://www.sandisk.com
                      '==============================================================
                      '
                      '          I M P O R T A N T
                      '            PLEASE NOTES
                      ' ************** This code is written for a PIC16F876 operating on 3.3volts **************
                      @ device pic16F876, xt_osc, wdt_on, pwrt_off, bod_off, lvp_off, cpd_off, wrt_off, protect_off
                      ' ****************************************************************************************
                      '
                      ' This application uses a external 3.3v FRAM FM24CL64 for temporary storage
                      ' which does not require a wait state after a write and it does not have
                      ' any limit on the number of lifetime writes!
                      '
                      ' IF YOU USE a standard I2C EEprom you will have to insert a 5 or 10 ms pause
                      ' after each write statement depending on the eeprom used.
                      '
                      '******************************************************************************************
                      
                      
                      DEFINE	ONINT_USED	1	'If using ISP
                      
                      DEFINE OSC 10			'Adjust to suit your design
                      ADCON1	= 7			'Adjust ADC for your needs
                      
                      '*****************************
                      
                      include "modedefs.bas"
                      
                      
                      'I2C Variables
                      ctl   con  $A0		'EEPROM control code
                      edata	 var	BYTE		'Data byte to be written
                      
                      '***************** PIC PIN ASSIGNMENTS *****************
                      
                      'I2C Eeprom Pins
                      scl	 var 	PORTC.3		'I2C SCL for ext eeprom 
                      sda	 var	PORTC.4		'I2C SDA for ext eeprom
                      
                      'Serial Pins
                      out_pin	 var	PORTC.6		'Serial OUT pin
                      in_pin	 var  PORTC.7		'Serial IN pin
                      ser_baud con	32		'19200 Baud
                      
                      
                          TRISC.0 = 1           'SO Set pin directions
                      	TRISC.1 = 0
                      	TRISC.2 = 0
                      	TRISC.5 = 0
                      
                      'MMC Connections
                      SCK   var   PORTC.1         ' Clock pin MMC pin 5
                      SO   var   PORTC.0         ' Data from MMC pin 7
                      SS   var   PORTC.5         ' Slave select pin 1
                      SI   var   PORTC.2         ' Data to MMC pin 2
                      
                      
                      '***************** General MMC Variables used **************************
                      
                      'Variables used (may be some that are no longer in use -- haven't cleaned up as yet!)
                      
                      mmc_status  var   byte
                      mmc_status = $0000
                      
                      addr  var   word
                      addr_H var   word          ' MMC Address is a 32 bit address, addr_h is bits 31-16
                      addr_L var   word			' and addr_l is is bits 0-15
                      arg0  var   byte			' args used
                      arg1  var   byte
                      arg2  var   byte
                      arg3  var   byte
                      arg4  var   byte
                      cmd   var   byte			'command var
                      crc   var   byte			'crc var
                      dat   var   byte          'data var
                      i	var   byte			'counter var
                      x    var   word			'counter var
                      y	var	byte			'counter var
                      res	var   byte			'response var
                      reswr  var   byte			'response w/r
                      res2  var   word			'response var
                      
                      erase_flag var byte
                      erase_flag = 0
                      
                      eaddr1 var   word			'ext eeprom addr vars
                      eaddr2 var	word
                      e_addr var   word
                      
                      
                      in_dat var   byte          'Serial vars
                      chk   var   byte
                      cntr  var   byte
                      
                      addr   =   $0000			'Used for eeprom etc			
                      
                      pause 500				'Let things settle a bit
                      
                      'For debugging
                      serout2 out_pin,ser_baud,["Start",10,13] 'Display on terminal
                      
                      ' ***** Jump over the subroutines **************
                      goto main
                      
                      'Initialize MMC
                      init_mmc:
                      	SS = 1
                      	dat =$ff
                          cntr = 10
                          gosub shiftout_dat
                      	ss = 0 
                       	pause 50
                      	cmd = $40					'MMC Command 0
                      	crc = $95
                      cmd0:
                      
                       	dat = cmd
                          Shiftout SI, SCK, MSBFIRST,[dat]
                      	dat = 0
                          cntr = 4
                          gosub shiftout_dat
                      	dat = crc
                          Shiftout SI, SCK, MSBFIRST,[dat]
                          chk = 1
                          gosub chk_res
                      	ss = 1
                      	pause 50
                      	ss = 0
                      CMD1:
                      'TO DO: Need to insert a 'time-out' after 255 attempts and branch to error routine
                      	while res <> 0
                      	ss = 1
                      	dat = $ff
                          Shiftout SI, SCK, MSBFIRST,[dat]
                          gosub shiftin_res
                      	ss = 0
                      	dat = $41					 'MMC Command 1
                          Shiftout SI, SCK, MSBFIRST,[dat]
                          'arg4 = $41
                          'gosub shiftout1
                      	dat = 0
                          cntr = 4
                          gosub shiftout_dat
                      
                      	dat = $ff
                          gosub shiftout2
                          gosub shiftin_res
                      	wend
                      	dat = $ff
                          'MMC now successfully initialized in SPI mode
                      'For debugging
                      serout2 out_pin,ser_baud,["INIT OK!",10,13] 'Display on terminal
                      return
                      
                      'MMC Writing subroutine write 512 bytes stored in the I2C eeprom
                      'This routine will write whatever is in I2C eeprom locations eaddr1 to eaddr2
                      
                      'Check response
                      chk_res:
                      'TO DO: Need to insert a 'time-out' after 255 attempts and branch to error routine
                      	while res <> chk			
                          Shiftin SO, SCK, MSBPRE, [res]		
                      	wend
                      return
                      
                      mwrite:
                      	ss = 1
                      	arg4 = $ff
                          gosub shiftout1
                          gosub shiftin_res
                      	ss = 0
                       	arg0 = $58
                          arg1 = addr_H.BYTE1
                          arg2 = addr_H.BYTE0
                          arg3 = addr_L.BYTE1
                          arg4 = addr_L.BYTE0
                          gosub shiftout5
                      	arg4 = $ff
                          gosub shiftout1
                          gosub shiftin_res
                          chk = 0
                          gosub chk_res
                      
                      'Write command was a success
                      	'File token tells the MMC data is to follow
                      	arg4 = $FE
                          gosub shiftout1
                      
                      
                      'MMC now ready to write data in blocks of 512 bytes assumes eeprom address in eaddr1, eaddr2
                      
                      	for addr = eaddr1 to eaddr2
                      		'READ addr,dat		'Read from internal eeprom if it has 512 byte capacity
                      
                          	I2CREAD sda,scl,ctl,addr,[dat]	'Read from I2C ext eeprom
                      		Shiftout SI, SCK, MSBFIRST,[dat]
                      	next addr
                      
                      
                      	dat=$ff
                          cntr = 2
                          gosub shiftout_dat
                          gosub shiftin_res
                      	y=res & $0f
                          gosub shiftin_res
                      
                      'TO DO: Need to insert a 'time-out' after 255 attempts and branch to error routine
                      	while res = 0		'MMC is busy writing until response is not = 0
                           Shiftin SO, SCK, MSBPRE, [res]
                      	wend
                      	gosub mstatus		'Get write status	
                      return
                      
                      'MMC Reading routine, assumes addr_H and addr_L have the MMC 32 bit address
                      mread:
                      	ss = 1
                      	arg4 = $ff
                          gosub shiftout1
                          gosub shiftin_res
                      	ss = 0
                      	arg0 = $51
                          arg1 = addr_H.BYTE1
                          arg2 = addr_H.BYTE0
                          arg3 = addr_L.BYTE1
                          arg4 = addr_L.BYTE0
                          gosub shiftout5
                      	arg4 = $ff
                          gosub shiftout1
                          gosub shiftin_res
                      	chk = 0
                      	gosub chk_res
                      	chk = $FE
                      	gosub chk_res
                      
                      'Read cmd successful
                      
                      'Read the MMC data and save in eeprom assumes eaddr1 and eaddr2 is given
                        for e_addr = eaddr1 to eaddr2		'We will read 512 bytes can be any number
                        
                           Shiftin SO, SCK, MSBPRE, [dat]
                          'We now have a byte do something with it!
                           I2CWRITE sda,scl,ctl,e_addr,[dat]		'Write to eeprom from eaddr1 to eaddr2
                       
                        next e_addr
                      
                      'Required after a MMCread
                          gosub shiftin_res
                          gosub shiftin_res
                      
                       	 gosub mstatus		'Get read status
                      
                      return
                      
                      'Set block length (must lie with sector boundaries minimum default is 512)
                      mset_blk:
                      'Cmd16:
                      	cmd = $50
                          crc = $ff
                          gosub send_cmd
                      return
                      
                      'MMC tag beginning and end of an earse block
                      tag_start:
                      'MMC tag block
                      'Block START TAG
                      'Cmd32
                      	cmd = $60
                          gosub send_cmd
                      return
                      
                      tag_end:
                      'Cmd33
                      	cmd = $61
                          gosub send_cmd
                      return
                      
                      'MMC erase tagged block
                      merase:
                      
                      'For debugging
                      'ERASE BLOCK at addr_h,addr_L
                      'Cmd38
                      	erase_flag = 1
                      	cmd = $66
                          gosub send_cmd
                      	erase_flag = 0   
                      return
                      
                      '=============================
                      
                      'Send a command to the mmc assumes CMD, addr_H and addr_L
                      send_cmd:
                          ss = 1
                      	arg4 = $ff
                          gosub shiftout1
                          gosub shiftin_res
                          ss = 0
                          arg0 = cmd
                          arg1 = addr_H.BYTE1
                          arg2 = addr_H.BYTE0
                          arg3 = addr_L.BYTE1
                          arg4 = addr_L.BYTE0
                          gosub shiftout5
                      	Dat = $FF
                          cntr = 2
                          gosub shiftout_dat
                          gosub shiftin_res
                      	if erase_flag = 1 then return
                      	chk = 0
                      	gosub chk_res
                      return
                      
                      
                      
                      'MMC status
                      mstatus:
                      	ss = 1
                      	dat = $ff
                          Shiftout SI, SCK, MSBFIRST,[dat]
                          gosub shiftin_res
                      
                      	ss = 0
                      	arg4 = $4D
                          gosub shiftout1
                      	dat = 0
                          cntr = 4
                          gosub shiftout_dat
                      	arg4 = $ff
                          gosub shiftout1
                          Shiftin SO, SCK, MSBPRE, [res2\16]
                          mmc_status = res2
                      return
                      
                      'Shift out the same data. Assumes DAT and cntr
                      shiftout_dat:
                            for y = 1 to cntr
                          	Shiftout SI, SCK, MSBFIRST,[dat]
                            next y
                      return
                      
                      'Shift out 5 (ARG0-ARG4)
                      shiftout5:
                          Shiftout SI, SCK, MSBFIRST,[arg0]
                      shiftout4:
                          Shiftout SI, SCK, MSBFIRST,[arg1]
                      shiftout3:
                          Shiftout SI, SCK, MSBFIRST,[arg2]
                      shiftout2:
                          Shiftout SI, SCK, MSBFIRST,[arg3]
                      shiftout1:
                          Shiftout SI, SCK, MSBFIRST,[arg4]
                      return
                      
                      'Shiftin RES
                      shiftin_res:
                           Shiftin SO, SCK, MSBPRE, [res]
                      return
                      
                      '====================== END OF MMC GENERAL ROUTINES =========================
                      
                      'Subroutine used by this application
                      disp:
                      serout2 out_pin,ser_baud,["Data from MMC",10,13] 'Display on terminal
                      'Display data to terminal, assumes eaddr1,eaddr2 are given
                      	for e_addr = eaddr1 to eaddr2
                            I2CREAD sda,scl,ctl,e_addr,[dat]
                            serout2 out_pin,ser_baud,[dat]  'Display on terminal
                          next e_addr
                      return
                      
                      '*************** M A I N  P R O G R A M ****************
                      main:
                      
                      'Initialize the MMC
                      	gosub init_mmc
                      
                      'Set block length (minimum 512 bytes when writing) default is 512 bytes
                      	addr_H = $0000
                      	addr_L = $0200
                      	gosub mset_blk
                      
                      'Set an I2C eeprom address (512 bytes)
                      	eaddr1 = 0
                      	eaddr2 = $01FF
                      
                      'Load the eeprom with some data to simulate this we
                      'write 512 bytes to the eeprom
                      	Dat = "A"
                      	for e_addr = eaddr1 to eaddr2
                            I2CWRITE sda,scl,ctl,e_addr,[dat]
                          next e_addr
                      
                      'Set some MMC address 0 - to the end. (However, it must remain within sector boundaries)
                      'Since we are reading/writing 512 bytes at a time just make sure that the address is a integer
                      'multiple of 512 bytes. Such as: 0, $0200,$0400...$0A00...$00010A00 etc
                      
                      	addr_H = $0001
                      	addr_L = $0000 'Multiple of 512 bytes
                      
                      'Now transfer the data from the eeprom to the MMC
                      	gosub mwrite
                      
                      'For debugging
                      serout2 out_pin,ser_baud,["Data Written to MMC",10,13] 'Display on terminal
                      
                      'Next, we read the data back from the MMC and load it into the eeprom
                      'using the same addresses as above
                      	gosub mread
                      
                      'Now, read it back from the eeprom and display it
                      gosub disp
                      
                      'If you want to erase the data you need to set the start and end addresses
                      'But, they must not cross block boundaries
                      
                      '*** Note*****
                      'If the program hangs at the erase command
                      'Sandisk documentation states that the erase command in SPI mode can
                      'sometimes not work correctly. Depends on the version of the card.
                      'However,it works fine on the Viking MMC's
                      
                      'For debuggin
                      serout2 out_pin,ser_baud,[10,13,"Erasing...",10,13] 'Finished!
                      'Set the start erase TAG
                      gosub tag_start
                      
                      'Set the end erase TAG
                      addr_H = $0001
                      addr_L = $01FF
                      gosub tag_end
                      
                      
                      'Issue the erase command
                      gosub merase	
                      
                      'Verify it by reading the MMC again
                      addr_L = $0000
                      gosub mread
                      
                      'And finally display the results
                      'Display data to terminal, assumes eaddr1,eaddr2 are given
                      
                      'Debugging
                      serout2 out_pin,ser_baud,["Data from MMC after erase",10,13] 'Display on terminal
                      
                      	for e_addr = eaddr1 to eaddr2
                            I2CREAD sda,scl,ctl,e_addr,[dat]
                            serout2 out_pin,ser_baud,[hex2 dat]  'Display on terminal
                          next e_addr
                      
                      'For debugging
                      serout2 out_pin,ser_baud,[10,13,"All Done!",10,13] 'Finished!
                      end
                      '******************* END OF CODE ************************
                      والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

                      هوشمندانه بپرسيد...

                      دیدگاه


                        #12
                        پاسخ : آموزش برنامه نویسی pic با زبان pic basic توسط کام&

                        نوشته اصلی توسط rezaasgharian نمایش پست ها
                        با سلام و خدا قوت
                        چند وقت پیش یک مطلبی را خصوصی خدمت مدیر محترم گروه ، جناب آقای مهندس مستقیمی عرض کردم که الان با اجازه ایشان ، ایجاد این تاپیک فرصتی بسیار خوب و مناسبی است که خدمت جنابعالی "آقای ایجی ، نگارنده محترم" و بقیه دوستان خوب و ارزشمند انجمن PIC و مخصوصاً کسانی که می خواهند PICرا شروع کنند عرض کنم.

                        من از جناب آقای مهندس مستقیمی نظرشان را پرسیدم که : آیا همیشه انجام یک کار (یا یک پروژه) از دشوار ترین راه ممکن ؛ در حالتی که راهی آسان تر هم وجود دارد منطقی به نظر می رسد؟ که جواب من به این سوال : استفاده از محیط بیسیک (به دلیل سادگی آن) به جای دشواری های زبان C سی بود و بعد ایشان فرمودند که بیشتر توضیح بدهم. بنده مواردی را خدمت شان عرض کردم که به طور خلاصه چکیده بعضی از آنها را بیان می کنم:

                        همانطور که می دانید ، برای کار با میکروهای خانواده PIC محیط ها و کامپایلرهای متفاوتی وجود دارد که معروف ترین آنها بر پایه زبان C ؛ پاسکال ، بیسیک و غیره هستند. و در ایران رغبت بیشتر دوستان استفاده از محیط هایی مبتنی بر زبان C است ، و مدل های مختلف از زبان C.
                        درصورتیکه در اروپا و امریکا نزدیکترین رقیب برای زبان C ، زبان بیسیک است و به ویژه همین محیطی که است که شما معرفی می کنید که فکر کنم توسط شرکت Micro Engineering Labs توسعه یافته است.

                        به منظور حمایت از این تاپیک باید عرض کنم که هر آنچه شما در زبان C به دست می آورید و یا خلق می کنید در محیط PicBasicPro قابل ایجاد و توسعه است. و صد البته با تفاوت هایی که اولین آن سادگی و قابل فهم بودن دستور العمل هاست. لذا شانس به نتیجه رسیدن و پائین بودن خطا در برنامه نویسی با PicBasicPro بسیار خوب و قابل توجه است.

                        من زبان C بلدم اما چون من پروژه های PIC را با همین محیط انجام داده ام به نکاتی رسیدم که اینجا بیان می کنم و صد البته ممکن است نکات ضعف وقوت دیگری وجود داشته باشد که من نمی دانم . لذا تکرار می کنم که این نکات صرفا بر اساس تجربه های عملی این حقیر به دست آمده و بیان دیدگاه ها است و کماکان قضاوت و انتخاب با دوستان ارجمند است :

                        1) Micro Engineering Labs یا Melabs. ادعا می کند که فقط تنها یاد گرفتن 34 تابع یا دستور (چیزی که تو ذهن من هست این عدد 34 است و شک دارم که قطعی باشد اما همین حدود است؛ نهایتاً تعدادیکی دو تا پائین بالا) از کل 57 تابع شما را بی نیاز می کند.
                        2) یک سری تنظیمات از قبیل WDT & BOR و ... را در بهترین شرائط از قبل تنظیم شده است و نیازی نیست که کاربر به آن بپردازد ؛ مگر این که فعالیت ویژه ای مد نظر داشته باشد.
                        3) محیط کاربری آن بسیار بسیار آسان و ساده ، ساخته شده است و پیچیدگی های محیط های مبتنی بر زبان C را اصلا ندارد.
                        4) تعریف متغیرهای مثل زبان C دست و پاگیر و پیچیده نیستند.
                        5) به قول برنامه نویس ها : "به راحتی امکان نوشتن یک برنامه "ساختار یافته" وجود دارد و هیچ وقت "اسپاگتی" نمی شود.
                        6) بر خلاف زبان C نیازی به آکولاد " { و } " ندارد.
                        6) Help بسیار کوتاه و روان نوشته شده است و مثال های درون Help در جملاتی کوتاه بهترین نتیجه را منتقل می کند.
                        7) شرکت سازنده یک تالار گفتگوی بسیار بسیار قوی دارد و برای هر موضوعی و هر چی که فکر کنید راه کار و سورس کد دارد.
                        8) در اروپا استفاده از PIC با زبان بیسیک بیشتر از زبان سی محبوبیت دارد . این یک آدرس نمونه برای تالار گفتگوی بیسیک http://www.picbasic.co.uk/forum/forumdisplay.php?f=11
                        9) ...

                        طرح یک پیشنهاد

                        اگر به آموزش هایی که ؛ قبل از این گفتار؛ در تالار های PIC گذاشته شده اند یک نگاهی بیندازیم می بینیم که بسیار متاسفانه هیچ کدام به انتها نرسیده اند. شروع کار خیلی خوب ، پرقدرت و پر انرژی بوده ! اما بیان بعضی سوالات و ایجاد شاخه های فرعی اجازه نداده که کار به انتها برسد. یا بی رو دربایستی اصلا نویسنده تاپیک های قبلی کلا خسته شده و کار را رها کرده!!
                        پیشنهادم این است که من یک فایل پی دی اف PDF فارسی دارم که آموزش بیسیک و توابع آن است. اگر صلاح می دانید این فایل را به عنوان مرجع اینجا قرار بدهیم تا هر کس دوست داشت برود و مطالعه کند . و به جای تعریف و توضیح درباره توابع و متغیرها و نمی دانم نوشتن یک جمله روی LCD و غیره و ذالک ، انرژی مان را متمرکز بر روی آموزش مثال هایی بکنیم که کاربردی است و در ضمن اینکه حالا کسی اگر سوالی هم درباره یک تابع داشت ؛ اگر رفت و فایل آموزشی را خواند و متوجه نشد ، صرفا همان یک تابع را رفع اشکال می کنیم.

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

                        اینجوری نتیجه پربار تری می گیریم .
                        ************************************************** ***********************************************
                        :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::
                        ************************************************** ***********************************************
                        توجه : زمانی که من داشتم این پاسخ را می نوشتم اصلا متوجه تاریخ شروع این تاپیک (26 تیر 87) نشدم و نمی دانستم که [glow=black,2,300]5 سال[/glow] است کسی سراغ آن نیامده است !!

                        و متاسفانه متاسفانه متاسفانه این مطلب آموزشی هم به نتیجه ای نرسیده است.


                        لینک دانلودی که در بالا به آن اشاره کرده بودم گذاشتم :



                        کلیدواژه جستجو در گوگل : آموزش فارسی Picbasic pro

                        فایل در قالب PDF است
                        رهرو آن نیست که گهی تند و گهی خسته رود / رهرو آن است که آهسته و پیوسته رود
                        سلام پسورد فایل دانلودی چیه؟

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

                        نوشته اصلی توسط rezaasgharian نمایش پست ها
                        با سلام و خدا قوت
                        چند وقت پیش یک مطلبی را خصوصی خدمت مدیر محترم گروه ، جناب آقای مهندس مستقیمی عرض کردم که الان با اجازه ایشان ، ایجاد این تاپیک فرصتی بسیار خوب و مناسبی است که خدمت جنابعالی "آقای ایجی ، نگارنده محترم" و بقیه دوستان خوب و ارزشمند انجمن PIC و مخصوصاً کسانی که می خواهند PICرا شروع کنند عرض کنم.

                        من از جناب آقای مهندس مستقیمی نظرشان را پرسیدم که : آیا همیشه انجام یک کار (یا یک پروژه) از دشوار ترین راه ممکن ؛ در حالتی که راهی آسان تر هم وجود دارد منطقی به نظر می رسد؟ که جواب من به این سوال : استفاده از محیط بیسیک (به دلیل سادگی آن) به جای دشواری های زبان C سی بود و بعد ایشان فرمودند که بیشتر توضیح بدهم. بنده مواردی را خدمت شان عرض کردم که به طور خلاصه چکیده بعضی از آنها را بیان می کنم:

                        همانطور که می دانید ، برای کار با میکروهای خانواده PIC محیط ها و کامپایلرهای متفاوتی وجود دارد که معروف ترین آنها بر پایه زبان C ؛ پاسکال ، بیسیک و غیره هستند. و در ایران رغبت بیشتر دوستان استفاده از محیط هایی مبتنی بر زبان C است ، و مدل های مختلف از زبان C.
                        درصورتیکه در اروپا و امریکا نزدیکترین رقیب برای زبان C ، زبان بیسیک است و به ویژه همین محیطی که است که شما معرفی می کنید که فکر کنم توسط شرکت Micro Engineering Labs توسعه یافته است.

                        به منظور حمایت از این تاپیک باید عرض کنم که هر آنچه شما در زبان C به دست می آورید و یا خلق می کنید در محیط PicBasicPro قابل ایجاد و توسعه است. و صد البته با تفاوت هایی که اولین آن سادگی و قابل فهم بودن دستور العمل هاست. لذا شانس به نتیجه رسیدن و پائین بودن خطا در برنامه نویسی با PicBasicPro بسیار خوب و قابل توجه است.

                        من زبان C بلدم اما چون من پروژه های PIC را با همین محیط انجام داده ام به نکاتی رسیدم که اینجا بیان می کنم و صد البته ممکن است نکات ضعف وقوت دیگری وجود داشته باشد که من نمی دانم . لذا تکرار می کنم که این نکات صرفا بر اساس تجربه های عملی این حقیر به دست آمده و بیان دیدگاه ها است و کماکان قضاوت و انتخاب با دوستان ارجمند است :

                        1) Micro Engineering Labs یا Melabs. ادعا می کند که فقط تنها یاد گرفتن 34 تابع یا دستور (چیزی که تو ذهن من هست این عدد 34 است و شک دارم که قطعی باشد اما همین حدود است؛ نهایتاً تعدادیکی دو تا پائین بالا) از کل 57 تابع شما را بی نیاز می کند.
                        2) یک سری تنظیمات از قبیل WDT & BOR و ... را در بهترین شرائط از قبل تنظیم شده است و نیازی نیست که کاربر به آن بپردازد ؛ مگر این که فعالیت ویژه ای مد نظر داشته باشد.
                        3) محیط کاربری آن بسیار بسیار آسان و ساده ، ساخته شده است و پیچیدگی های محیط های مبتنی بر زبان C را اصلا ندارد.
                        4) تعریف متغیرهای مثل زبان C دست و پاگیر و پیچیده نیستند.
                        5) به قول برنامه نویس ها : "به راحتی امکان نوشتن یک برنامه "ساختار یافته" وجود دارد و هیچ وقت "اسپاگتی" نمی شود.
                        6) بر خلاف زبان C نیازی به آکولاد " { و } " ندارد.
                        6) Help بسیار کوتاه و روان نوشته شده است و مثال های درون Help در جملاتی کوتاه بهترین نتیجه را منتقل می کند.
                        7) شرکت سازنده یک تالار گفتگوی بسیار بسیار قوی دارد و برای هر موضوعی و هر چی که فکر کنید راه کار و سورس کد دارد.
                        8) در اروپا استفاده از PIC با زبان بیسیک بیشتر از زبان سی محبوبیت دارد . این یک آدرس نمونه برای تالار گفتگوی بیسیک http://www.picbasic.co.uk/forum/forumdisplay.php?f=11
                        9) ...

                        طرح یک پیشنهاد

                        اگر به آموزش هایی که ؛ قبل از این گفتار؛ در تالار های PIC گذاشته شده اند یک نگاهی بیندازیم می بینیم که بسیار متاسفانه هیچ کدام به انتها نرسیده اند. شروع کار خیلی خوب ، پرقدرت و پر انرژی بوده ! اما بیان بعضی سوالات و ایجاد شاخه های فرعی اجازه نداده که کار به انتها برسد. یا بی رو دربایستی اصلا نویسنده تاپیک های قبلی کلا خسته شده و کار را رها کرده!!
                        پیشنهادم این است که من یک فایل پی دی اف PDF فارسی دارم که آموزش بیسیک و توابع آن است. اگر صلاح می دانید این فایل را به عنوان مرجع اینجا قرار بدهیم تا هر کس دوست داشت برود و مطالعه کند . و به جای تعریف و توضیح درباره توابع و متغیرها و نمی دانم نوشتن یک جمله روی LCD و غیره و ذالک ، انرژی مان را متمرکز بر روی آموزش مثال هایی بکنیم که کاربردی است و در ضمن اینکه حالا کسی اگر سوالی هم درباره یک تابع داشت ؛ اگر رفت و فایل آموزشی را خواند و متوجه نشد ، صرفا همان یک تابع را رفع اشکال می کنیم.

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

                        اینجوری نتیجه پربار تری می گیریم .
                        ************************************************** ***********************************************
                        :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::
                        ************************************************** ***********************************************
                        توجه : زمانی که من داشتم این پاسخ را می نوشتم اصلا متوجه تاریخ شروع این تاپیک (26 تیر 87) نشدم و نمی دانستم که [glow=black,2,300]5 سال[/glow] است کسی سراغ آن نیامده است !!

                        و متاسفانه متاسفانه متاسفانه این مطلب آموزشی هم به نتیجه ای نرسیده است.


                        لینک دانلودی که در بالا به آن اشاره کرده بودم گذاشتم :

                        http://s5.picofile.com/file/8127970484/PICBasic_farsi_ALEMISHOP_.rar.html

                        کلیدواژه جستجو در گوگل : آموزش فارسی Picbasic pro

                        فایل در قالب PDF است
                        رهرو آن نیست که گهی تند و گهی خسته رود / رهرو آن است که آهسته و پیوسته رود
                        سلام پسورد فایل دانلودی چیه؟

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

                        نوشته اصلی توسط rezaasgharian نمایش پست ها
                        با سلام و خدا قوت
                        چند وقت پیش یک مطلبی را خصوصی خدمت مدیر محترم گروه ، جناب آقای مهندس مستقیمی عرض کردم که الان با اجازه ایشان ، ایجاد این تاپیک فرصتی بسیار خوب و مناسبی است که خدمت جنابعالی "آقای ایجی ، نگارنده محترم" و بقیه دوستان خوب و ارزشمند انجمن PIC و مخصوصاً کسانی که می خواهند PICرا شروع کنند عرض کنم.

                        من از جناب آقای مهندس مستقیمی نظرشان را پرسیدم که : آیا همیشه انجام یک کار (یا یک پروژه) از دشوار ترین راه ممکن ؛ در حالتی که راهی آسان تر هم وجود دارد منطقی به نظر می رسد؟ که جواب من به این سوال : استفاده از محیط بیسیک (به دلیل سادگی آن) به جای دشواری های زبان C سی بود و بعد ایشان فرمودند که بیشتر توضیح بدهم. بنده مواردی را خدمت شان عرض کردم که به طور خلاصه چکیده بعضی از آنها را بیان می کنم:

                        همانطور که می دانید ، برای کار با میکروهای خانواده PIC محیط ها و کامپایلرهای متفاوتی وجود دارد که معروف ترین آنها بر پایه زبان C ؛ پاسکال ، بیسیک و غیره هستند. و در ایران رغبت بیشتر دوستان استفاده از محیط هایی مبتنی بر زبان C است ، و مدل های مختلف از زبان C.
                        درصورتیکه در اروپا و امریکا نزدیکترین رقیب برای زبان C ، زبان بیسیک است و به ویژه همین محیطی که است که شما معرفی می کنید که فکر کنم توسط شرکت Micro Engineering Labs توسعه یافته است.

                        به منظور حمایت از این تاپیک باید عرض کنم که هر آنچه شما در زبان C به دست می آورید و یا خلق می کنید در محیط PicBasicPro قابل ایجاد و توسعه است. و صد البته با تفاوت هایی که اولین آن سادگی و قابل فهم بودن دستور العمل هاست. لذا شانس به نتیجه رسیدن و پائین بودن خطا در برنامه نویسی با PicBasicPro بسیار خوب و قابل توجه است.

                        من زبان C بلدم اما چون من پروژه های PIC را با همین محیط انجام داده ام به نکاتی رسیدم که اینجا بیان می کنم و صد البته ممکن است نکات ضعف وقوت دیگری وجود داشته باشد که من نمی دانم . لذا تکرار می کنم که این نکات صرفا بر اساس تجربه های عملی این حقیر به دست آمده و بیان دیدگاه ها است و کماکان قضاوت و انتخاب با دوستان ارجمند است :

                        1) Micro Engineering Labs یا Melabs. ادعا می کند که فقط تنها یاد گرفتن 34 تابع یا دستور (چیزی که تو ذهن من هست این عدد 34 است و شک دارم که قطعی باشد اما همین حدود است؛ نهایتاً تعدادیکی دو تا پائین بالا) از کل 57 تابع شما را بی نیاز می کند.
                        2) یک سری تنظیمات از قبیل WDT & BOR و ... را در بهترین شرائط از قبل تنظیم شده است و نیازی نیست که کاربر به آن بپردازد ؛ مگر این که فعالیت ویژه ای مد نظر داشته باشد.
                        3) محیط کاربری آن بسیار بسیار آسان و ساده ، ساخته شده است و پیچیدگی های محیط های مبتنی بر زبان C را اصلا ندارد.
                        4) تعریف متغیرهای مثل زبان C دست و پاگیر و پیچیده نیستند.
                        5) به قول برنامه نویس ها : "به راحتی امکان نوشتن یک برنامه "ساختار یافته" وجود دارد و هیچ وقت "اسپاگتی" نمی شود.
                        6) بر خلاف زبان C نیازی به آکولاد " { و } " ندارد.
                        6) Help بسیار کوتاه و روان نوشته شده است و مثال های درون Help در جملاتی کوتاه بهترین نتیجه را منتقل می کند.
                        7) شرکت سازنده یک تالار گفتگوی بسیار بسیار قوی دارد و برای هر موضوعی و هر چی که فکر کنید راه کار و سورس کد دارد.
                        8) در اروپا استفاده از PIC با زبان بیسیک بیشتر از زبان سی محبوبیت دارد . این یک آدرس نمونه برای تالار گفتگوی بیسیک http://www.picbasic.co.uk/forum/forumdisplay.php?f=11
                        9) ...

                        طرح یک پیشنهاد

                        اگر به آموزش هایی که ؛ قبل از این گفتار؛ در تالار های PIC گذاشته شده اند یک نگاهی بیندازیم می بینیم که بسیار متاسفانه هیچ کدام به انتها نرسیده اند. شروع کار خیلی خوب ، پرقدرت و پر انرژی بوده ! اما بیان بعضی سوالات و ایجاد شاخه های فرعی اجازه نداده که کار به انتها برسد. یا بی رو دربایستی اصلا نویسنده تاپیک های قبلی کلا خسته شده و کار را رها کرده!!
                        پیشنهادم این است که من یک فایل پی دی اف PDF فارسی دارم که آموزش بیسیک و توابع آن است. اگر صلاح می دانید این فایل را به عنوان مرجع اینجا قرار بدهیم تا هر کس دوست داشت برود و مطالعه کند . و به جای تعریف و توضیح درباره توابع و متغیرها و نمی دانم نوشتن یک جمله روی LCD و غیره و ذالک ، انرژی مان را متمرکز بر روی آموزش مثال هایی بکنیم که کاربردی است و در ضمن اینکه حالا کسی اگر سوالی هم درباره یک تابع داشت ؛ اگر رفت و فایل آموزشی را خواند و متوجه نشد ، صرفا همان یک تابع را رفع اشکال می کنیم.

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

                        اینجوری نتیجه پربار تری می گیریم .
                        ************************************************** ***********************************************
                        :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::
                        ************************************************** ***********************************************
                        توجه : زمانی که من داشتم این پاسخ را می نوشتم اصلا متوجه تاریخ شروع این تاپیک (26 تیر 87) نشدم و نمی دانستم که [glow=black,2,300]5 سال[/glow] است کسی سراغ آن نیامده است !!

                        و متاسفانه متاسفانه متاسفانه این مطلب آموزشی هم به نتیجه ای نرسیده است.


                        لینک دانلودی که در بالا به آن اشاره کرده بودم گذاشتم :

                        http://s5.picofile.com/file/8127970484/PICBasic_farsi_ALEMISHOP_.rar.html

                        کلیدواژه جستجو در گوگل : آموزش فارسی Picbasic pro

                        فایل در قالب PDF است
                        رهرو آن نیست که گهی تند و گهی خسته رود / رهرو آن است که آهسته و پیوسته رود
                        سلام پسورد فایل دانلودی چیه؟

                        دیدگاه

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