اطلاعیه

Collapse
No announcement yet.

آموزش جامع AVR با نرم افزار Bascom

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

    آموزش جامع AVR با نرم افزار Bascom

    سلام

    قصد دارم در این تاپیک به طور کامل میکروکنترلرهای AVR رو براتون آموزش بدم و مراحل رو یک به یک پیش بریم.

    میکرو کنترلر مورد بحث ATMEGA32 بوده و مدارات مطرح شده بر مبنای برد آموزشی AVR تولیدی توسط شرکت ECA می باشد.

    امیدوارم که مورد استقبال شما قرار بگیره

    فهرست مطالب :
    مقدمه
    شروع کار با کامپایلر بسکام
    متغیرها و دستورات مربوطه
    حلقه ها و دستورات شرطی
    راه اندازی سون سگمنت
    راه اندازی نمایشگرهای کاراکتری
    اتصال کیپد به میکروکنترلر
    راه اندازی واحد آنالوگ به دیجیتال
    وقفه ها
    راه اندازی تایمر کانتر
    راه اندازی نمایشگرهای گرافیکی سری SED
    قابلیت OVERLAY
    زیرروال ها و تعریف توابع
    راه اندازی استپ موتور
    راه اندازی پروتکل SPI
    ارتباط سریال دو سیمه
    اتصال کیبرد کامپیوتر به میکروکنترلر
    پیکربندی پروتکل ارتباطی UART
    .
    .
    .
    فایل PDF مطالب
    جدیدترین ویرایش توسط سوران آراسته; ۱۷:۱۶ ۱۳۹۵/۰۴/۲۱.
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    #2
    پاسخ : آموزش جامع AVR با نرم افزار Bascom

    مقدمه
    الکترونیک دیجیتال کار خود را با به وجود آوردن منطق صفر و یک، اختراع میکروپروسسورها و طراحی کامپیوترها آغاز کرد.میکروپروسسورهایی نظیر 8086 از شرکت اینتل و Z80 از شرکت زایلوگ، شروع کار بودند.
    با ورود خانواده میکروکنترلر 8051 از شرکت اینتل، تحولی عظیم در این صنعت رخ داد و میکروکنترلرها تنها یک پردازشگر نبودند و عملیات محاسبه و منطق تنها بخشی از این تراشه بود.امکاناتی نظیر حافظهآ‌ها، تایمرها و ارتباطات به این تراشه افزوده شد و این تراشه مانند یک کامپیوتر کوچک به بازار عرضه شد.طولی نکشید که شرکتآ‌هایی نظیر MicroChip و Atmel سری جدیدتری از میکروکنترلرها را عرضه کردند.
    میکروکنترلرهای 8 بیتی AVR ساخت شرکت Atmel از پرکاربردترین نوع میکروکنترلرهای موجود در دنیا میآ‌باشند و دلیل آن وجود امکانات متمایز از سایر میکروکنترلرها است.


    تاریخچه میکروکنترلرهای AVR
    اولین میکروکنترلر در سال 1971 توسط شرکت نام آشنایIntelساخته شد و این شرکت اولین میکروکنترلر کاربردی خود را در سال 1980 بانام 8080 روانه بازار کرد.
    کلمه میکروکنترلر از دو عبارت میکرو و کنترل تشکیل شده است که اولی واحدی یونانی به معنای یک میلیونم ودومی به معنای تحت نظارت داشتن کاری است.
    با توجه به حرکت جوامع بشری به سوی هر چه کوچکآ‌تر کردن وسایل کاربردی، طراحان الکترونیک به تبعیت از این قانون، سعی در کوچک کردن مدار کنترلی یک پروسه وکاهش هزینه های مربوط نمودند که این امر موجب پیدایش میکروکنترلرها به عنوان وسیله ای که دارای حافظه، CPU، پورتآ‌های ورودی و خروجی و ...در یک چیپ گردید.
    ما امروزه شاهد معماریآ‌های مختلفی از میکروکنترلرها هستیم که مهمآ‌ترین آنآ‌ها عبارتند از:
    1- AVR
    2- PIC
    3- 8051
    اما تفاوت میکروکنترلرهای 3 خانواده مذبور علاوه بر تکنولوژی ساختشان، در برنامه نویسی مورد نیاز و نحوه پروگرام کردن آنها نیز میآ‌باشد.


    میکروکنترلرهای AVR
    AVR ها میکروکنترلرهایی 8 بیتی از نوع Cmos با توان مصرفی پایین هستند که بر اساس ساختار پیشرفته RISC با معماری Harvard ساخته شدهآ‌اند.
    RISC مخفف (Reduced Instruction Set Computer) به معنی مجموعه دستورالعملآ‌های کاهش یافته وHarvardبه نوعی معماری گفته میآ‌شود که در آن حافظه ذخیره برنامه و حافظه ذخیره داده، از هم جدا میآ‌باشند.
    در میکروکنترلرهای AVR دستورات تنها در یک پالس ساعت اجرا میآ‌شوند و به این ترتیب به ازای هر یک مگاهرتز میآ‌تواند یک مگا دستور را در ثانیه اجرا کند، در نتیجه برنامه از لحاظ سرعت پردازش و مصرف توان بهینه میآ‌شود.
    این میکروکنترلرها دارای 32 رجیستر همه منظوره و مجموعه دستورات قدرتمندی هستند که تمام این 32 رجیستر مستقیما به ALU (بخش پردازش) متصل شدهآ‌اند، بنابراین دسترسی به دو رجیستر در یک سیکل ساعت هم امکان پذیر بوده که باعث میآ‌شود سرعت این میکروها نسبت به میکروکنترلرهای CISC تا 10 برابر افزایش یابد.


    انواع میکروکنترلرهای AVR
    میکروکنترلرهای AVR با دو معماری 8 بیتی و 16 بیتی ساخته میآ‌شوند که در اینجا به شرح کارکرد مدل 8 بیتی میآ‌پردازیم.
    میکروکنترلرهای 8 بیتی AVR به سه دسته تقسیم میآ‌شوند:
    1. Tiny AVR
    2. Mega AVR
    3. Xmega AVR
    تفاوت بین این سه نوع به امکانات موجود در آنآ‌ها مربوط میآ‌شود.Tiny AVR ها غالبا تراشهآ‌هایی با تعداد پین و مجموعه دستورات کمتری نسبت به Mega AVRمیآ‌باشند و به عبارتی از لحاظ پیچیدگی حداقل امکانات را دارند و Xmega AVR ها حداکثر امکانات را داشته و Mega AVR ها در بین این دو نوع قرار گرفته اند.



    امکانات کلیATMEGA 32
    • 32 رجیستر همه منظوره.
    • دارای سه نوع حافظه شامل:Flash,EEprom,Sram
    • توانایی برنامه ریزی تراشه در داخل مدار بدون احتیاج به پروگرامر (In System Programing ).
    • حفاظت از کدهای برنامه در مقابل خواندن (با قفل فیوزبیت های آن).
    • قابلیت تنظیم نوسانگر برای کار توسط کریستال خارجی و داخلی و نوسانگر RC داخلی و خارجی.
    • مجهز به پروتکل JTAG برای انجام عمل دیباگ، تست و اسکن وسایل جانبی تراشه و ...
    • شمارنده و تایمر 8 بیتی و 16 بیتی.
    • RTC با نوسانگر جداگانه.
    • کانالآ‌هایPWM با استفاده از تایمرها به صورت 8 و 16 بیتی.
    • ADC های 10 بیتی.
    • ارتباط سریال USART با قابلیت برنامه ریزی.
    • تایمر watch dogبا قابلیت برنامه ریزی با نوسانگر مجزا (WTD).
    • مقایسه کننده آنالوگ با امکان تعریف وقفه برای آن.
    • منابع وقفه داخلی و خارجی.
    • دارای حدود 130 دستور که اکثر آنآ‌ها در یک سیکل ساعت اجرا میآ‌شوند.


    تشریح پایه های ATMEGA 32
    در تراشه های AVRپایه های آن ها علاوه بر استفاده به عنوانI\Oبرای یک یا چند خصوصیت دیگر نیز مورد استفاده قرار میآ‌گیرند که در زیر به تشریح آن ها میآ‌پردازیم:
    • پایه OC1A:
    خروجی مد مقایسه تایمر– کانتر 1 و نیز خروجی موج PWM1.
    • پایه OC1B:
    خروجی مد مقایسه تایمر– کانتر 1 و نیز خروجی موج PWM2.
    • پایه SCK:
    به عنوان کلاک ورودی و خروجی Master و Slave در ارتباط SPI استفاده میآ‌شود.
    • پایهMISO:
    به عنوان ورودی داده میکرو Master و خروجی داده میکرو Slave استفاده میآ‌شود.
    • پایه MOSI:
    به عنوان خروجی داده میکرو Master و ورودی داده میکرو Slave استفاده میآ‌شود.
    • پایه AIN0:
    به عنوان ورودی پایه مثبت مقایسه کننده آنالوگ استفاده میآ‌شود.
    • پایه AIN1:
    به عنوان ورودی پایه منفی مقایسه کننده آنالوگ استفاده میآ‌شود.
    • پایه OC0:
    در خروجی مد مقایسه ای تایمر– کانتر صفر مورد استفاده قرار میآ‌گیرد.
    • پایه T0:
    در ورودی کلاک برای کانتر صفر استفاده میآ‌شود.
    • پایه T1:
    در ورودی کلاک برای کانتر یک استفاده میآ‌شود.
    • پایه TOSC1:
    در زمان استفاده از RTC به این پایه کریستال 32768 هرتز وصل میآ‌شود.
    • پایه TOSC2:
    در زمان استفاده از RTC به این پایه کریستال 32768 هرتز وصل میآ‌شود.
    • پایه TDI:
    ورودی داده سریال در ارتباطJTAGمیآ‌باشد.
    • پایهTDO:
    خروجی داده سریال در ارتباطJTAGمیآ‌باشد.
    • پایه TMS:
    به عنوان ارتباط JTAG استفاده میآ‌شود.
    • پایه TCK:
    به عنوان ارتباط JTAG استفاده میآ‌شود.
    • پایه SDA:
    به عنوان خط داده در ارتباط دو سیمه (I2C) استفاده میآ‌شود.
    • پایه SCL:
    به عنوان خط کلاک در ارتباط دو سیمه (I2C) استفاده میآ‌شود.
    • پایه OC2:
    مد مقایسه¬ای تایمر– کانتر 2 و به عنوان خروجی موج PWM2 استفاده میآ‌شود.
    • پایه ICP:
    به عنوان ورودی Capture تایمر– کانتر 1 استفاده میآ‌شود.
    • پایه RXD:
    به عنوان ارسال کننده داده در ارتباط سریال USART استفاده می شود.
    • پایه TXD:
    به عنوان دریافت کننده داده در ارتباط سریال USART استفاده می شود.
    • پایه AREF و AVCC:
    پایه های تعیین کننده ولتاژ مرجع برای مبدل آنالوگ به دیجیتال می باشند.
    • پایه SS:
    با فعال شدن در ارتباط SPI میکروکنترلررا به میکروی SLAVE تبدیل میآ‌کند.
    • پایه XCK:
    به عنوان کلاک خروجی در ارتباط UART در زمان مد آسنکرون استفاده میآ‌شود.
    • پایه Reset:
    به عنوان پایه ای برای ریست کردن میکرو به کار میآ‌رود.
    • پایه هایXtal1و Xtal2:
    پایهآ‌هایی جهت اتصال کریستال خارجی به میکرو می باشند.
    • پایه های ADC0 تا ADC7:
    پایه های ورودی مبدل آنالوگ به دیجیتال می باشند.
    • پایه های INT0 تا INT3:
    پایه های ورودی وقفه خارجی میآ‌باشند.


    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


      #3
      شروع کار با کامپایلر Bascom AVR

      فرم کلی نوشتن یک برنامه در کامپایلر بسکام
      1- میکروکنترلر مورد استفاده خود را انتخاب کنید.
      2- فرکانس کار میکرو را انتخاب کنید.
      3- امکانات میکروکنترلری را که میآ‌خواهید در برنامه از آنآ‌ها استفاده کنید را پیکربندی کنید.
      4- متغیرهای مورد نیاز خود را نام گذاری کنید.
      5- برنامه اصلی خود را پیاده سازی کنید.


      تشریح پورت ها و پین های میکروکنترلر

      در میکروکنترلر ATMEGA 32 چهار پورت به نام های A، B، C و D وجود دارد که هر کدام خود دارای 8 پین میآ‌باشند.هر پورت دارای 3 رجیستر به نامآ‌هایPORT، PIN و DDRمی باشد که در زبان بیسیک به رجیستر DDR دسترسی نداریم (منظور از نداشتن دسترسی به رجیستر DDR غیر قابل استفاده بودن آن نیست بلکه منظور وجود دستورات پیکربندی (config portx)در بسکام به جای مقدا دهی مستقیم رجیسترهاست.)بنابراین رجیسترهای PORT و PIN باقی میآ‌ماند که PORT رجیستر خروجی و PIN رجیستر ورودی میآ‌باشد یعنی اگر پورت را به عنوان ورودی استفاده کنید باید از PIN و اگر از آن به عنوان خروجی استفاده شود باید از رجیستر PORT استفاده کنید.

      دستورات مربوط به پیکربندی وسایل I/O و تنظیمات کامپایلر

      معرفی میکروکنترلر به کامپایلر
      $regfile = "MxDef.Dat"

      که نام میکروی مورد استفاده به جای x نوشته میآ‌شود.مثلا برای Atmega32 داریم:
      $regfile = "M32Def.Dat"

      انتخاب فرکانس کاری میکرو
      $crystal = X Hz

      توسط این دستور سرعت پردازش اطلاعات به کامپایلر معرفی می شودکه مقدار آن از صفر تا 16 مگاهرتز میآ‌باشد که تا فرکانس 8 مگاهرتز توسط اسیلاتور داخلی تامین میآ‌شود و برای استفاده از فرکانس بالاتر از 8 مگاهرتز باید از کریستال خارجی استفاده کرد.
      نکته:تعیین این فرکانس فقط برای کامپایلر است و در عمل باید فیوزبیت کلاک را برای فرکانس مورد نظر چه در هنگام استفاده از اسیلاتور داخلی و چه کریستال خارجی تنظیم کنیم، چون مسیر حافظه فلاش و فیوزبیت ها در میکروکنترلرهای AVR از هم جدا بوده و این یکی از معایب میکروکنترلرهای AVR محسوب میآ‌شود.
      پیکربندی پورتآ‌ها به عنوان ورودی و خروجی
      Config portX=Input/Output

      پورت مورد نظر جایگزین Xمیآ‌شود و همچنین میآ‌توانیدپینآ‌های مورد نظر را تک تک نیز به عنوان ورودی یا خروجی تعیین کنید.
      انتخاب پورت C به عنوان خروجی
      Config portc = output

      انتخاب پین C.0 از پورت C به عنوان خروجی
      Config portc.0 = output

      مقدار دهی پین و پورت
      portx.y=constant

      با این دستور میآ‌توان مقدار دلخواه 8 بیتی را به پورتآ‌ها داد و همچنین میآ‌توان پینآ‌ها را نیز مقداردهی نمود.
      Portc.2= 0

      مقداری که به پورت اختصاص میآ‌یابدمیآ‌تواند باینری، هگز و یا محتویات یک متغیر باشد.
      برای مقادیر باینری از l&bو برای مقادیر هگزادسیمال از h& استفاده میآ‌شود.
      PORTD= &B00001100
      PORTD= &H7f

      ست کردن پین و پورت
      set pin/port

      با این دستور میآ‌توان یک پورت یا پین را 1 کرد.
      Set Pind.5
      Set PORTD

      ریست کردن پین و پورت
      Reset pin/port

      با این دستور میآ‌توان یک پورت یا پین را 0 کرد.
      Reset Pind.5
      Reset PORTD


      چرا ناراحتی پاتریک!
      + امروز ی بچه دیدم سرچهارراه گل میفروخت
      - از دیدنش ناراحت شدی؟
      + نه
      پس چی ناراحتت کرده
      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
      ------------------------------------------------------------------------------------------------------
      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
      ------------------------------------------------------------------------------------------------------
      محصولات

      دیدگاه


        #4
        متغییرها و دستورات مربوطه

        متغیر و دستورات مربوطه
        معرفی متغیرها
        متغیر چیست؟متغیر نامی برای کلمات حافظه است که دادهآ‌ها در آن قرار میآ‌گیرند و ممکن است در طول اجرای برنامه تغییر کنند.برای دسترسی به متغیرها از نامشان استفاده میآ‌شود.
        متغیرها دارای نوع میآ‌باشند که هنگام نام گذاری باید آن را مشخص کرد.در جدول زیر انواع متغیرها نمایش داده شده است.
        تعریف متغیر
        DIM var AS Data Type

        var نام متغیر و Data Type نوع یا جنس متغیر را تعیین میآ‌کند که میآ‌توان آن را بسته به نیاز از روی جدول بالا انتخاب کرد.مانند:
        Dim A AS Word

        حالت دیگری هم برای تعریف متغیر وجود دارد که به صورت زیر است:
        DEF Data Type Var، که Data Typeنوع متغیر و Var نام متغیر میآ‌باشد.

        افزایش یک واحدی
        Incr var

        با این دستور یک واحد به متغیر عددی اضافه میآ‌شود.

        کاهش یک واحدی
        Decr var

        با این دستور یک واحد از متغیر عددی کم میآ‌شود.

        استخراج داده از جدول دادهآ‌ها
        جدول Lookup

        فرم کلی دستور:
        var = Lookup(Value,Lable)

        Var:متغیری که مقدار استخراج شده در آن قرار میآ‌گیرد.
        Value:اندیس (شماره) داده دلخواه است به طور مثال اگر Value=0باشد، اولین داده جدول در متغیر قرار میآ‌گیرد.
        Lable:برچسب جدول است که معمولا پس از دستور End و در پایان برنامه نوشته میآ‌شود.
        نکات مربوط به دستور:
        • حداکثر مقدار Value (تعداد اندیسآ‌ها) 255 میآ‌باشد.
        • حداکثر مقدار داده برگشتی 65535 (Integer,Word) میآ‌باشد.
        • در داده های دو بایتی (Integer,Word) هر داده بایستی به علامت % ختم شود.

        مانند:
        Dim B As Integer
        B = Lookup( 1 , Dta )
        lcd B
        End
        Dta:
        Data 1000% , 2000%


        نسبت دادن اسم به متغیر و پورتآ‌ها
        NewName ALIAS OldNmae

        NewNmae:نام دلخواه
        OldName:متغیر یا پورت و یا پایه مورد نظر برای تغییر نام

        کاربرد:در زمان کار با پورتآ‌ها برای مثال یک پایه از پورت C را به یک بلندگو وصل کردهآ‌ایم، حال به جای آنکه در طی برنامه شماره پایه مورد نظر را حفظ کنید با این دستور میآ‌توان نام آن را به Speaker تبدیل کرده و از آن استفاده کنید.
        معکوس کردن بیت
        Toggle pin/var

        با این دستور میآ‌توان یک بیت از متغیر یا یک پین از پورتآ‌ها را معکوس کرد.
        Toggle PORTd.0

        ایجاد تاخیر در برنامه
        wait X

        با این دستور میآ‌توان در برنامه به مقدار مورد نظر x تاخیر ایجاد کرد که مقدارتاخیر میآ‌تواند میکرو ثانیه، میلی ثانیه و ثانیه باشد.
        ایجادتاخیر 10 ثانیه
        wait 10

        ایجاد تاخیر 50 میکرو ثانیه
        waitus 50

        نکته:xمیآ‌تواند مقدار یک متغیر هم باشد.
        تعریف آرایه
        DIM Name(X) AS Data Type

        آرایه مجموعه ای از عناصر هم نوع است.هر آرایه دارای نامی است که مشابه متغیرهای معمولی نامگذاری میآ‌شود.برای دسترسی به عناصر آرایه از اندیس آرایه استفاده میآ‌شود و از صفر شروع میآ‌شود.
        X:تعداد مورد نیاز متغیر است.
        Data Type:نوعیا جنس متغیر میآ‌باشد.
        مثالIM A(10) AS Byte
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


          #5
          حلقه ها و دستورات شرطی

          حلقه ها و دستورات شرطی

          ایجاد حلقه تکرار
          Do ..Loop

          فرم کلی دستور به شکل زیر است:
          Do
          Statements
          Loop [Until expression:تا زمان درستی شرط]

          تا زمانی که شرط درست باشد این حلقه تکرار میآ‌شود و چون شرط حلقه در پایان آن است پس حداقل یک بار اجرا میآ‌شود.
          نکته:از این حلقه در اکثر موارد به عنوان حلقه بی نهایت و بدون شرط استفاده میآ‌شود و همچنین با دستور Exit DOمیآ‌توان از حلقه خارج شد.
          حلقه تکرار محدود
          For … Next

          شکل کلی حلقه:
          For Var=Start To End [Step Value]Next var

          Var:مانند یک شمارنده عمل میآ‌کند.
          Start:مقدار اولیه (ثابت یا متغیر عددی)
          End:مقدار نهایی (ثابت یا متغیر عددی)
          Step Value:مقدار گام حلقه میآ‌باشد که میآ‌تواند مثبت یا منفی باشد و اگر نوشته نشود مقدار 1 در نظر گرفته میآ‌شود.

          حلقه while
          شکل کلی دستور:
          WHILE condition
          statements
          WEND

          Condition : شرط حلقه
          Statements : دستورات حلقه
          Wend : پایان حلقه

          انجام عملیات شرطی
          IF ... THEN

          دستور IF به صورتآ‌های مختلفی مورد استفاده قرار میآ‌گیرد که در زیر 3 نمونه از آن نشان داده میآ‌شود:
          شکل ساده دستور:IF comp or( comps )Then Statement
          Comp:شرط مورد نظر است.در صورتیکه بیش از یک شرط داشته باشیم، شروط را در داخل پرانتز قرار داده و با توابع منطقی مانند OR و AND از هم جدا میآ‌کنیم.
          Statement:دستوری که در صورت درستی شرط اجرا میآ‌شود و در صورت عدم درستی شرط برنامه به خط بعد از شرط IF منتقل میآ‌شود.
          اگر بیش از یک دستور Statement داشته باشیم دستور IF به شکل زیر استفاده میآ‌شود:
          IF comp or( comps ) Then
          Statement
          End IF

          در صورتی که هم تعداد شروط و هم تعداد Statement ها بیش از یکی باشد از فرم زیر استفاده میآ‌شود:
          IF comp or( comps ) Then
          Statement 1
          Elseif comp or( comps ) Then
          Statement 2
          Elseif comp or( comps ) Then
          Statement 3
          .
          .
          .
          Else
          Statement n
          End IF


          اتصال کلید به پین با دستور Debounce
          شکل کلی دستور:
          Debounce Px.y , state , label

          Px.y:X نام پورت و Y نام پایه ای از پورت است که به عنوان ورودی تعریف شده است.
          State:وضعیت کلید که 0 یا 1 میآ‌باشد.پردازنده بابررسی وضعیت پایهY و مقایسه آن با State، در صورت برابری به برچسب Lable پرش میآ‌کند و در غیر این صورت برنامه از خط بعد از دستور Debounce ادامه پیدا میآ‌کند.
          Lable:نام یک تابع است که خود شامل یک سری دستورات است و در انتهای آن باید از دستور Return استفاده کرد تا به برنامه اصلی بعد از Debounce برگردد.
          نکته:در اتصال کلیدها به میکرو باید از مقاومتآ‌های بالاکش (Pull Up) و یا پایین کش (PullDown) مطابق با برنامه خود استفاده کنید در غیر این صورت میکرو دچار مشکل خواهد میآ‌شود.
          مناسبآ‌ترین مقاومتآ‌ها برای PullDown و یا Pull Up کردن کلیدها،مقاومتآ‌های 3.3 کیلواهم تا 10 کیلواهم میآ‌باشند.
          نکته:بر روی برد آموزشی از مقاومتآ‌هایPullup استفاده نشده و باید از Pullup داخلی استفاده کنید.

          انتظار برای بیتBITWAIT
          شکل کلی دستور:
          BITWAIT Pinx.y,Set/Reset

          Px.y:X نام پورت و Y نام پایه ای از پورت است که به عنوان ورودی تعریف شده است.
          این دستور تا زمانی که پین مورد نظر به دلخواه SET یا Reset نشود، برنامه را در همان خط متوقف میآ‌کند.

          استفاده از عملگرها و توابع در برنامه نویسی
          نرم افزار بسکام این امکان را فراهم کرده که بتوان در برنامه نویسی از عملگرها و توابع ریاضی مانند جمع، ضرب، سینوس، کسینوس و...و یا توابعی آماده غیر از توابع ریاضی استفاده کرد.در جداول زیر لیست تمام عملگرها و یک سری از توابع ریاضی آورده شده است.




          نکات:
          • نوع متغیرهای Var و X باید از نوع Single باشد.
          • تمامی توابع مثلثاتی بر حسب رادیان هستند.


          تا این قسمت یک سری از اصول برنامه نوسی به زبان بیسیک را آموختید. برای فهم بهتر دستورات در پایان هر بخش مثال هایی عملی آورده خواهد شد.
          همانطور که در پست اول ذکر شد این مثال ها بر مبنای برد آموزشی AVR شرکت ECA می باشند.
          ----------------------------------------------------------------------------------------------------------------------------
          مثال اول : رقص نور ساده با 8 LED
          http://vip.eca.ir/sharing/uploads/13416650481.rar
          مثال دوم : رقص نور پیشرفته با 8 LED
          http://vip.eca.ir/sharing/uploads/13417395221.rar
          مثال سوم : شمارنده باینری 0 تا 15 با چهار LED
          http://vip.eca.ir/sharing/uploads/13417419361.rar
          مثال چهارم : روشن و خاموش کردن LED با کلید
          http://vip.eca.ir/sharing/uploads/13418122051.rar
          چرا ناراحتی پاتریک!
          + امروز ی بچه دیدم سرچهارراه گل میفروخت
          - از دیدنش ناراحت شدی؟
          + نه
          پس چی ناراحتت کرده
          + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
          ------------------------------------------------------------------------------------------------------
          تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
          ------------------------------------------------------------------------------------------------------
          محصولات

          دیدگاه


            #6
            پاسخ : آموزش جامع AVR با نرم افزار Bascom

            سوران جان خیلی عالیه.
            لطفا با همین نظم ادامه بده که مرجع کاملی برای نسل های آینده بشه

            موفق باشی

            دیدگاه


              #7
              راه اندازی سون سگمنت

              نکاتی قبل از شروع آموزش :
              • با استفاده از تک کتیشن (&#039 میآ‌توانید توضیحات خود را جلوی دستور یا هر قسمت از برنامه که احتیاج به توضیح دارد، استفاده کنید.چون علایم و توضیحات بعد از تک کتیشن توسط کامپایلر نادیده گرفته میآ‌شود.
              • اگر خطی از برنامه طولانی شد میآ‌توانید از خط Under Line (شیفت + منها) در پایان خط اول استفاده کرده و بقیه دستور را در خط بعد بنویسید.


              راه اندازی سون سگمنت
              سون سگمنت از 8 LED تشکیل شده است که از 7 عدد آن برای نمایش اعداد و حروف A تا F و از Led هشتم برای نمایش ممیز (Dot) استفاده میآ‌شود.
              هر سون سگمنت تک رقمی دارای 10 پایه به شرح زیر است:
              • 7 پایه که با حروف a تا g نام گذاری شدهآ‌اند.
              • 1 پایه که با Dot نام گذاری شده است.
              • 2 پایه که پایه های مشترک بوده و در داخل IC به هم متصل میآ‌باشند.


              سون سگمنت ها به دو دسته تقسیم میآ‌شوند:
              1- آند مشترک: پایه آند هر 8 LED در داخل به هم وصل است و پایه کاتد آنآ‌ها آزاد میآ‌باشد.
              2- کاتد مشترک: پایه کاتد هر 8 LED در داخل به هم وصل است و پایه آند آنآ‌ها آزاد میآ‌باشد.


              اتصال سون سگمنت به میکروکنترلر و نمایش عدد بر روی آن
              برای اتصال سون سگمنت به میکرو دو راه وجود دارد:
              - اتصال پایه های a تا g مستقیم به یکی از پورتآ‌ها
              - استفاده از ای سیآ‌های دیکودر مانند 7447 و 7448

              نمایش اعداد تک رقمی روی سون سگمنت به روش معمولی
              در این روش برای نمایش هر رقم یا حرف روی سون سگمنت ابتدا بایستی کد هگزادسیمال معادل آن را بدست آوریم.برای این کار بایستی به دو نکته توجه داشته باشیم:
              1- آند یا کاتد مشترک بودن سون سگمنت.
              2- در نمایش هر رقم یا حرف کدامLED ها روشن و کدام LEDها خاموش خواهند شد.

              با توجه به دو نکته بالا کد هگزادسیمال را برای ارقام 0 تا 9 جهت نمایش توسط سون سگمنت کاتد مشترک را بدست میآ‌آوریم:


              نمایش اعداد تک رقمی روی سون سگمنت با استفاده از دیکودر دیتا
              برای انجام این روش به دونکته بایستی توجه داشت:
              • انتخاب دیکدر مناسب با توجه به نوع سون سگمنت
              • وصل خروجی های دیکدر(QA…..QG)نظیربه نظیر به ورودی های سون سگمنت (a…..g )
              برای راه اندازی سون سگمنت آند مشترک از دیکدر 7447 و برای راه اندازی سون سگمنت کاتد مشترک از دیکدر 7448 استفاده میآ‌شود.
              در برنامه نویسی برای نمایش عدد روی سون سگمنت با استفاده از دیکدر مستقیم از معادل دسیمال اعداد در برنامه استفاده میآ‌شود.

              -----------------------------------------------------------------------------------------------------
              مثال : نمایش اعداد 0 تا 9 بر روی سون سگمنت
              http://vip.eca.ir/sharing/uploads/13418136341.rar
              -----------------------------------------------------------------------------------------------------
              نمایش اعداد چند رقمی با استفاده از سون سگمنت
              برای نمایش اعداد چند رقمی بر روی سون سگمنت یک راه این است که به ازای هر رقم از یک پورت استفاده کنیم اما چون تعداد پورتآ‌های یک میکرو محدود است این روش، روش مناسبی نیست.همانطور که میآ‌دانیم چشم انسان در صورتی که 25 تصویر یا بیشتر از یک شی پشت سر هم در یک ثانیه پخش شود آن را پیوسته میآ‌بیند و میآ‌توان از این خطای چشم استفاده کرد.که به روش مالتی پلکس کردن معروف است.
              در این روش خطوط دیتا یعنی پایه های a تا g را به یکی از پورتآ‌ها وصل کرده و پایه های دیگر میکرو برای کنترل پایه مشترک سون سگمنت ها مورد استفاده قرار میآ‌گیرد.در این روش در هر لحظه فقط یک سون سگمنت روشن است و بقیهآ‌ی سون سگمنت ها خاموش میآ‌باشند ولی چون این عمل با سرعت بالا انجام میآ‌گیرد ما همه ی آن ها را روشن می بینیم.

              -----------------------------------------------------------------------------------------------------
              مثال اول : نمایش عدد 55 بر روی سون سگمنت
              http://vip.eca.ir/sharing/uploads/13418141071.rar
              مثال دوم : نمایش ارقام 1 تا 4
              http://vip.eca.ir/sharing/uploads/13418141591.rar

              چرا ناراحتی پاتریک!
              + امروز ی بچه دیدم سرچهارراه گل میفروخت
              - از دیدنش ناراحت شدی؟
              + نه
              پس چی ناراحتت کرده
              + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
              ------------------------------------------------------------------------------------------------------
              تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
              ------------------------------------------------------------------------------------------------------
              محصولات

              دیدگاه


                #8
                راه اندازی LCD کاراکتری

                راه اندازی LCD کاراکتری

                LCD های کاراکتری نمایشگرهایی با سطر و ستون مشخص برای نمایش دادهآ‌هامیآ‌باشند.
                در تمام این LCD تعداد پایهآ‌ها ثابت و برابر 16 پایه بوده که نحوه اتصال آن ها به شرح زیر است:



                این LCDها را میآ‌توان به دو صورت به میکروکنترلر وصل کرد:
                1- مد 4 سیمه: از چهار پایه گذرگاه برای اتصال LCD به میکرو استفاده میآ‌شود.
                2- مد 8 سیمه: از هشت پایه گذرگاه برای اتصال LCD به میکرو استفاده میآ‌شود.

                معایب و محاسن:
                در مد هشت سیمه سرعت انتقال داده بیشتر است اما پایه بیشتری از میکرو را اشغال میآ‌کند ولی در مد چهار سیمه سرعت انتقال داده کمتر است اما پایه کمتری از میکرو را اشغال کرده و شلوغی سیم کشی مدار نیز نسبت به مد هشت سیمه کمتر است.
                تقریبا در اکثر موارد از مد چهار سیمه استفاده میآ‌شود چون سرعت انتقال دادهآ‌ی آن برای کارهایی که ما با میکرو انجام میآ‌دهیم مناسب است.

                نحوه سیم بندی ارتباط LCD با میکروکنترلر AVR در مد چهار سیمه
                1- خطوط دیتای Db4 الی Db7 جهت دریافت دادهآ‌ها به 4 پین از یک پورت میکرو که به صورت خروجی تعریف شده متصل میآ‌گردند.
                2- خط RS برای دریافت دستورالعمل به یک پایه از پورت متصل میآ‌شود.
                3- خط E برای فعال سازی LCD به یک پایه از پورت متصل میآ‌شود.
                4- خط RW در مد چهار سیمه استفاده نمیآ‌شود در نتیجه به GND وصل میآ‌شود.
                5- خطوط Vss و Vdd به ترتیب به GND و +5V جهت تغذیه LCD متصل میآ‌شوند.
                6- خط Vo جهت تنظیم کنتراست به یک پتانسیومتر 5 تا 10 کیلواهم متصل میآ‌شود.



                نکات مهم:
                • جهت تنظیم کنتراست هیچ گاه آن را مستقیم به Vcc یا GND نزنید.
                • برای جلوگیری از اثر نویز روی مدار بهتر است پایه های Db0 تا Db3 را به همراه RW به GND وصل کنید.
                • پایه های 15 و 16 مربوط به LED پس زمینه را مستقیم به Vcc و GND وصل نکنید چون جریان زیادی از مدار میآ‌کشند.در مسیر Vcc یا GND یک مقاومت 100 تا 470 اهم قرار دهید.


                دستورات کار را LCD
                تعیین نوع ارتباط
                Config LcdBus

                از این دستور برای تعیین نحوه سیم بندی LCD استفاده میآ‌شود که با انتخاب 4 از مد چهار سیمه و با انتخاب 8 از مد هشت سیمه استفاده میآ‌شود.
                Config LcdBus = 4 OR 8

                تعیین سایز یا نوع نمایشگر
                Config LCD

                در این دستور سایز LCD مورد نظر را به کامپایلر معرفی میآ‌کنیم.منظور از سایز LCDتعداد سطرها و ستونآ‌های آن است.
                که در اینجا LCD دارای 2 سطر و 16 ستون میآ‌باشد.Config LCD = 16*2
                نحوه اتصال پایه های LCD به میکرو
                Config Lcdpin

                با این دستور پایه های LCD متصل شده به میکرو برای کامپایلر مشخص می شود که شکل کلی آن به صورت زیر است:
                Config Lcdpin = pin , Rs = Portx.y , E = portx.y , Db4 = portx.y , Db5 = portx.y , Db6 = portx.y , Db7 = portx.y

                X = نام پورت مورد نظر
                Y = شماره پین مورد نظراز پورت X

                نکته:برای پیکربندی پایه های LCd کاراکتری میآ‌توان از طریق خود نرم افزار هم عمل کرد که در این صورت به مسیر زیر در داخل نرم افزار BASCOM رفته و تنظیمات مربوطه را لحاظ میآ‌کنیم.
                Option⇒Compiler ⇒Lcd

                تا این قسمت تمام دستورات مربوط به پیکربندی LCd بحث شد از این به بعد به شرح دستورات مربوط به نوشتن علایم و پیغامآ‌ها رویLCD بحث میآ‌کنیم.
                نمایش کاراکتر یا مقدار متغیر روی
                LCD X

                با این دستور میآ‌توان مقدار متغیر مورد نظر را که به جای X قرار میآ‌گیرد را روی LCD نمایش داد.
                نکته:اگر حرف یا حروف مربوطه داخل جفت کتیشن قرار گیرند خود آنآ‌ها نمایش داده خواهد شد.به مثال زیر دقت کنید:
                نمایش محتویات متغیر A:LCD A
                نمایش خود حرف A روی نمایشگر:LCD "A"

                نکته:برای نمایش رشته کاراکترهای متفاوت در یک سطر بین آنآ‌ها ازعلامت «؛» میآ‌توان استفاده کرد.
                Lcd " ECA " ; " AVR "

                پاک کردن صفحه نمایش
                Cls

                توسط این دستور صفحه LCD کاملا پاک شده و آمادهآ‌ی نوشتن مجدد میآ‌شود.
                انتخاب شروع محل نوشتن
                Locate Y,X

                با این دستور میآ‌توان محل مورد نظر،جهت نمایشنوشتهرا انتخاب کرد.
                Y = شماره ستون مورد نظر.
                X = شماره سطر مورد نظر که نوشتن از این سطر آغاز میآ‌شود.

                تنظیمات مکان نما Cursor
                برای مکان نما چهار حالت وجود دارد که به شرح زیر میآ‌باشند:
                1- روشن کردن مکان نما
                Cursor on

                2- خاموش کردن مکان نما
                Cursor off

                3- مکان نما به صورت چشمک زن
                Cursor Blink

                4- مکان نما به صورت غیرچشمک زن
                Cursor Noblink

                انتقال مکان نما به سطر و ستون اول
                Home

                با این دستور مکان نما به سطر و ستون اول LCD پرش کرده و شروع به نوشتن اطلاعات جدید میآ‌کند.
                تفاوت این دستور با دستور Cls در این است که دستور Cls کل محتویات صفحه را پاک میآ‌کند سپس اطلاعات جدید را میآ‌نویسد ولی با این دستور مکان نما به اولین قسمت LCD آمده و بدون پاک کردن اطلاعات قبل، روی آنآ‌ها اطلاعات جدید را میآ‌نویسد.

                انتقال مکان نما به سطر دلخواه
                Line

                توسط دستورات زیر میآ‌توان مکان نما را مستقیم به سطر مورد نظرانتقال داد:
                - Upperline:پرش مکان نما به یک سطر بالاتر.
                - Lowerline:پرش مکان نما به یک سطر پایینآ‌تر.
                - Thirdline:پرش به سطر سوم درصورت داشتن بیش از دو سطر.
                - Fourthline:پرش به سطر چهارم در صورت داشتن حداقل چهار سطر.

                نکته:دستورات مربوط به انتقال مکان نما به سطر سوم و چهارم برای LCD هایی مورد استفاده قرار میآ‌گیرد که دارای بیشتر از دو سطر باشند.
                شیفت متن و مکان نما
                Shift

                با این دستور میآ‌توان متن و مکان نما را به سمت چپ یا راست به اندازه یک واحد شیفت داد.که شکل کلی آن به صورت زیر است:
                شیفت کل متن به اندازه یک ستون به چپ یار است:
                Shiftlcd Left / Right

                شیفت مکان نما به اندازه یک ستون به چپ یار است:
                Shiftcursor Left / Right

                استخراج داده از جدول رشته
                LOOKUPSTR

                شکل کلی دستور:
                Var = Lookupstr(Value,Lable)

                Var:متغیری که مقدار استخراج شده در آن قرار میآ‌گیرد.
                Value:اندیس (شماره) داده دلخواه است، به طور مثال اگر Value=0باشد اولین داده جدول در متغیر قرار میآ‌گیرد.
                Lable:برچسب جدول است که معمولا پس از دستور End و در پایان برنامه نوشته میآ‌شود.

                نکته:تعداد رشته های جدول تنها میآ‌تواند تا مقدار 255 داشته باشد.
                نکات:
                • در صورتی که بخواهیم Shiftبه دفعات معین انجام شود بایستی از دستورات حلقه مانند حلقه For …Next استفاده کنید.
                • توجه داشته باشید موقع شبیه سازی این مدارات در پروتئوس متن و مکان نما برعکس شیفت میآ‌خورند یعنی وقتی نوشتهآ‌اید که به راست شیفت بخورد به چپ حرکت میآ‌کند ولی در عمل چنین نیست.

                خاموش و روشن کردن صفحه
                LCDDisplay On/Off

                توسط این دستور میآ‌توان صفحه نمایش را خاموش و روشن کرد.
                نکته:توجه کنید هیچ گاه در آخرین خط برنامه از دستور Display Off استفاده نکنید چون صفحه نمایش خاموش شده و اگر بعد از آن قصد نمایش اطلاعات روی صفحه را داشته باشید قادر به مشاهده آنآ‌ها نخواهید بود مگر اینکه مجددا صفحه را روشن کنید.
                -----------------------------------------------------------------------------------------------------------
                مثال اول : چاپ پیغام بر روی LCD
                http://vip.eca.ir/sharing/uploads/13419035031.rar


                اضافه شده در تاریخ :
                ایجاد کاراکترهای ویژه و نمایش آنآ‌ها بر روی نمایشگرهای کاراکتری

                LCD های کاراکتری دارای یک حافظه دائم هستند که درون آن کد کاراکترهای اسکی حروف انگلیسی وجود دارد و همچنین دارای یک حافظه موقت هستند که در آن میآ‌توان در هر لحظه حداکثر 8 کاراکتر دلخواه را قرار داد.
                برای ساخت کاراکتر دلخواه در برنامه بسکام، نرم افزار مورد نیاز تعبیه شده که در این محیط هر کاراکتر از یک ماتریس 5*8 تشکیل شده است، که با روشن و یا خاموش کردن هر پیکسل، می-توان کاراکتر مورد نظر را طراحی کرد.
                برای ساخت کاراکتر به مسیر Tools⇒LCDdesigner رفته و مراحل زیر را دنبال میآ‌کنیم:



                برای مثال میآ‌خواهیم کاراکتر فلش را طراحی کنیم:


                بعد از روشن کردن پیکسلآ‌های مورد نظر Ok را میآ‌زنیم، با این کار یک خط به صورت زیر به برنامه اضافه میآ‌شود:
                Deflcdchar ?,32,17,21,17,17,31,32,32

                که به جای علامت سوال باید یکی از ارقام 0 تا 7 را قراردهید.
                بعد از ساخت کاراکتر جدید با دستور زیر میآ‌توان آن را روی LCD نمایش داد.
                نمایش کاراکتر ویژه
                LCD CHR

                با این دستور که شکل کلی آن به صورت زیر است میآ‌توان کاراکتر ساخته شده را روی LCD نمایش داد:
                Lcd chr ( ? )

                که به جای علامت سوال شماره کاراکتر موردنظر که بین 0 تا 7 بود را وارد میآ‌کنیم.
                نکته : قبل از دستور Lcd chr صفحه نمایش توسط دستور Cls پاک شود.
                نکته : با استفاده از علامت دو نقطه ( : ) می توان چندین دستور را در یک خط نوشت.
                سوالات متداول در مورد کار باLCD های کاراکتری
                1- آیا میآ‌توان فقط یک سطر از LCD را شیفت داد و بقیهآ‌ی سطرها را ثابت نگه داشت؟ در LCD های کاراکتری همچنین عملی مقدور نیست، هرچند که میآ‌توان با تغییر Locateهای متن مورد نظر فقط یک سطر را شیفت داد ولی چون LCD چشمک میآ‌زند مورد استفاده قرار نمیآ‌گیرد.
                2- چرا در ساخت کاراکتر ویژه، اعدادی که به جای علامت سوال قرار میآ‌گیرند باید یکی از اعداد 0 تا 7 باشند؟ در پاسخ این سوال باید گفت همانطور که در بالا توضیح داده شد حافظه موقت این نمایشگرها فقط میآ‌تواند تا 8 کاراکتر را در خود جای دهد و 0 تا 7 هم 8 کاراکترمیآ‌شود.
                ----------------------------------------------------------------------------------------------------------------------------------------------
                مثال اول : نمایش ارقام 1 تا 10
                http://vip.eca.ir/sharing/uploads/13419849461.rar
                مثال دوم : شمارنده
                http://vip.eca.ir/sharing/uploads/13419850401.rar
                مثال سوم : نمایش کلمه « سلام »
                http://vip.eca.ir/sharing/uploads/13419853261.rar
                چرا ناراحتی پاتریک!
                + امروز ی بچه دیدم سرچهارراه گل میفروخت
                - از دیدنش ناراحت شدی؟
                + نه
                پس چی ناراحتت کرده
                + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                ------------------------------------------------------------------------------------------------------
                تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                ------------------------------------------------------------------------------------------------------
                محصولات

                دیدگاه


                  #9
                  اتصال کی پد به میکروکنترلر

                  اتصال کی پد به میکروکنترلر

                  همانطور که در بالا توضیح داده شد برای اتصال وسایل I/O خارجی به میکروکنترلر ابتدا باید آن را پیکربندی نمود.
                  کی پدها شامل کلیدهایی هستند که به صورت ماتریسی به هم متصل شدهآ‌اند که باعث شده تعداد پایه های کلیدها کمتر شده و پورت کمتری را در میکروکنترلرها اشغال کند.
                  کی پدها در انواع گوناگونی در بازار یافت میآ‌شوند که متداولآ‌ترین آنآ‌ها کی پدهای 4*3 و 4*4 میآ‌باشد.در زیر نحوه اتصال کی پد 4*4 و یک نمونه از کی پدهای4*4 موجود در بازار، نمایش داده شده است.



                  بر روی برد آموزشی یک کی پد 4*4 قرار داده شده است که به پورت B متصل میآ‌باشد و به راحتی میآ‌توان از آن استفاده کرد.بنابراین دیگر نیاز به تهیه کی پد خارجی نخواهد بود.

                  دستورات مربوط به پیکربندی و کار با کی پد
                  پیکربندی کی پد
                  ConfigKBD

                  با این دستور کی پد پیکربندی میآ‌شود که شکل کلی آن به صورت زیر است:
                  Config Kbd = PortX , Debounce= value

                  که X نام پورت مورد نظر است که کی پد به آن وصل شده است و Debounce مربوط به مدت زمانی است که میکرو کلید را چک میآ‌کند و همچنین مدت زمان سرکشی یا تاخیر کلید هم نامیده میآ‌شود و مقدار valueمیآ‌تواند از 20ms تا 255ms تغییر کند.
                  نکته:هنگامی که یک کلید فشارداده میآ‌شود، بر اثر لرزش دست، دوکنتاکت آن چندین بار به هم برخورد میآ‌کند و در نهایت ثابت میآ‌شود. درصورتیکه ازدستور Debounce استفاده نشود هرلرزشی به منزله فشارداده شدن یک کلید محسوب میآ‌شود.
                  اسکن کی پد
                  GetKbd

                  جهت استفاده از کی پد و گرفتن (خواندن) اعداد وارد شده توسط کی پد از این دستور استفاده میآ‌شود و شکل کلی آن به صورت زیر است:
                  Var = متغیری ازقبل تعریف شده که کلید فشارداده شده در آن قرار میآ‌گیرد.
                  Var = Getkbd ( )

                  پرش به برچسب
                  GOTO

                  شکل کلی دستور:
                  Goto Lable

                  برای پرش به برچسب Lable مورد استفاده قرار میآ‌گیرد.این پرش یک پرش بدون بازگشت است.
                  پرش به برچسب با بازگشت
                  GOSUB

                  شکل کلی دستور:
                  GOSUB Lable

                  از این دستور برای پرش به برچسب Lable استفاده میآ‌شود و در صورت نیاز میآ‌توان با دستور Return به خط بعد از دستور پرش بازگشت.
                  انتخاب اجرای کدامین دستور
                  SELECT CASE

                  اجرای یک سری دستورات با توجه به مقادیر یک متغیر.
                  شکل کلی دستور:

                  Dim A As Byte
                  Select Case A
                  Case test1:Statements 1
                  Case test2:Statements 2
                  Case test3:Statements 3
                  .
                  .
                  Case Else:Statements n
                  End Select


                  در صورتی که مقدار test1 برابر با مقدار متغیر A باشد، دستورات اول (Statements 1) اجرا شده، سپس اجرای برنامه بعد از خط End Select ادامه پیدا میآ‌کند.
                  در صورتی کهمقدار test2 برابر با مقدار متغیر A باشد، دستورات دوم (Statements 2) اجرا شده، سپس اجرای برنامه بعد از خط End Select ادامه پیدا میآ‌کند.
                  در صورتی که مقدار متغیر A با هیچکدام از testها برابر نباشد، دستورات مربوط به Case Else اجرا شده، سپس اجرای برنامه بعد از خط End Select ادامه پیدا میآ‌کند.

                  نکته:میآ‌توان چندین Case را که دستوراتشان از یک نوع باشد به صورت یک Case کلی نوشت:
                  Dim A As Byte
                  Select Case A
                  Case 0 - 2:Lcd A
                  Case 3:Lcd " Micro AVR ":Goto Main
                  Case Else:Cls
                  End Select

                  تفاوت دستور IF با Select case :
                  در دستور IF می توان از نابرابری، کوچکتر، مساوی، بزرگتر و غیره استفاده کرد اما در موقع استفاده از ساختار selec case فقط شرط برابری ملاک انتخاب می باشد.
                  ------------------------------------------------------------------------------------------------------------------------------------------------------
                  مثال اول : نمایش ارقام کیپد
                  http://vip.eca.ir/sharing/uploads/13420748311.rar
                  مثال دوم : وارد کردن اعداد چند رقمی
                  http://vip.eca.ir/sharing/uploads/13420748741.rar
                  مثال سوم : نمایش کاراکتر ستاره (وارد کردن پسورد)
                  http://vip.eca.ir/sharing/uploads/13420750061.rar
                  توضیح : در این مثال با زدن هر کدام از کلیدهای کیپد، به جای نمایش رقم مورد نظر یک ستاره در نمایشگر چاپ می شود.
                  چرا ناراحتی پاتریک!
                  + امروز ی بچه دیدم سرچهارراه گل میفروخت
                  - از دیدنش ناراحت شدی؟
                  + نه
                  پس چی ناراحتت کرده
                  + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                  ------------------------------------------------------------------------------------------------------
                  تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                  ------------------------------------------------------------------------------------------------------
                  محصولات

                  دیدگاه


                    #10
                    راه اندازی واحد آنالوگ به دیجیتال

                    راه اندازی واحد آنالوگ به دیجیتال


                    گاهی نیاز است که یک کمیت بیرونی مانند دما ،شدت نور و ... اندازه گیری شود. جهت این کار از سنسورهای مربوطه استفاده میآ‌شود. سنسورها کمیت موردنظر را به ولتاژ ، جریان و... تبدیل میآ‌کنند. ولتاژ تهیه شده توسط سنسور را میآ‌توان به یک ADC اعمال کرده و مقدار دیجیتال آن را تولید کنیم و این مقدار دیجیتال را با محاسبات ریاضی به عددی دسیمال جهت نمایش تبدیل کرد.
                    ADC موجود در این سری میکروکنترلرها 10 بیتی بوده و بنابراین میآ‌توانند اعداد بین 0 تا 1023 را در خود ذخیره کنند. مثلا برای صفر ولت عدد صفر، برای پنج ولت عدد 1023 و برای 2.5 ولت عدد 511 را در خود ذخیره میآ‌کنند.برای استفاده از این توانایی باید ابتدا مثل سایر امکانات پیکربندی آن را انجام دهیم.

                    پیکربندی ADC
                    config ADC

                    شکل کلی دستور:
                    Config ADC = Single / Free , Prescaler = Auto , Reference = Opt

                    Single / Free:مربوط به مد انتخاب نمونه برداری میآ‌باشد که در حالت Single نمونه برداری از کانال دلخواه انتخاب شده و در متغیری از نوع Word ذخیره میآ‌شود و در حالت Free مقدار نمونه برداری در رجیستر مربوط به ADC ریخته میآ‌شود.
                    Prescaler:تعیین کلاک برای ADCمیآ‌باشد که در حالت Auto کامپایلر با توجه به کریستال انتخاب شده بهترین کلاک را برای ADC در نظر میآ‌گیرد.
                    Reference:تعیین کننده ولتاژ مرجع است که یکی از حالات زیر میآ‌باشد:
                    Off:ولتاژ مرجع داخلی که برابر 2.56 ولت است خاموش شده و ولتاژ وصل شده به پایه Aref به عنوان ولتاژ مرجع در نظر گرفته میآ‌شود.
                    AVcc:ولتاژ پایه AVcc به عنوان ولتاژ مرجع در نظر گرفته میآ‌شود.
                    Internal:از ولتاژ مرجع داخلی 2.56 ولت استفاده میآ‌شود.

                    نکته:پایه AVcc تغذیه قسمت ADCمیآ‌باشد و دلیل جدا بودن آن از تغذیه اصلی خود IC جلوگیری از تاثیر نویز بر روی مبدل انالوگ به دیجیتال میآ‌باشد.
                    نکته:وقتی که از ADCها استفاده میآ‌شود دیگر نمیآ‌توان از پورتآ‌A به عنوان I/O استفاده کرد.
                    فعال سازی ADC
                    Enable ADC

                    توسط این دستور ADC آماده نمونه برداری میآ‌شود.
                    راه اندازی ADC
                    Start ADC

                    با این دستور ADC شروع به کار میآ‌کند.
                    خواندن مقدار آنالوگ
                    GetADC

                    شکل کلی دستور:
                    Var = Getadc (channel)

                    توسط این دستور مقدار نمونه برداری شده در مد Single، در متغیر Var از جنس Word ذخیره میآ‌شود.
                    Chanel:شماره ADC (پایه ای از پورتی که ADCمیآ‌باشد) که سیگنال آنالوگ به آن اعمال میآ‌شود.
                    تعیین تعداد ارقام صحیح و اعشار
                    Fusing(X, "#.##&quot

                    توسط دستور بالا میآ‌توان تعداد ارقام صحیح و اعشار را با کم و زیاد کردن (#) در طرفین ممیز به دلخواه برای متغیر X که از جنس Single است را انتخاب کرد.
                    برای این کار روش دیگری هم به صورت زیر وجود دارد :
                    Config single =Scientific , Digits = 2

                    که عدد 2 همان تعداد ارقام اعشار است که میآ‌توان به دلخواه آن را تغییر داد.
                    -----------------------------------------------------------------------------------------------------------------
                    مثال : نمایش مقدار دیجیتال ولتاژ انالوگ اعمال شده به ADC
                    http://vip.eca.ir/sharing/uploads/13428045201.rar
                    -----------------------------------------------------------------------------------------------------------------
                    همانطور که در مثال بالا ملاحظه شد این اعداد بین 0 تا 1023 هستند.برای اینکه بتوان از این اعداد استفاده کرد باید با استفاده از محاسبات ریاضی آن ها را به صورت مورد نیاز تبدیل کرد.به مثال زیر دقت کنید.
                    مثال:برنامهآ‌ی یک ولت متر 0 تا 5 ولت را بنویسید؟
                    کد:
                    $regfile = "m32def.dat"
                    $crystal = 1000000
                    '------------------------
                    Config Portc = Output
                    Config Lcd = 16 * 2
                    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
                    Cursor Off
                    Config Adc = Single , Prescaler = Auto , Reference = Off
                    Enable Adc
                    Start Adc
                    '-------------------------
                    Dim A As Word
                    Dim B As Single
                    '-------------------------
                    Do
                     A = Getadc(0)
                     B = A / 204.6
                     Locate 1 , 2:Lcd Fusing(b , "#.#") ; "Volt"
                     Wait 1
                     Cls
                    Loop
                    End


                    همانطور که در بالا گفته شد ماکزیمم ولتاژ اعمالی به ADCها باید 5 ولت باشد، خوب حالا اگر بخواهیم یک ولت متر 0 تا 100 ولت بسازیم باید چکار کنیم؟؟؟؟؟
                    دراین موارد باید ولتاژ اعمالی تا 5 ولت کاهش پیدا کند که یکی از راه های کاهش ولتاژ، استفاده از مدارات مقاومتی است.به مثال زیر که نحوه ساخت یک ولتمتر 0 تا 100 ولت و فرمولات مربوطه را نمایش میآ‌دهد دقت کنید.

                    مثال:برنامه یک ولتمتر 0 تا 100 را بنویسید؟
                    برای این کار ابتدا مدار مقاومتی کاهش ولتاژ 100 را به 5 ولت طراحی میآ‌کنیم:


                    دراین فرمولآ‌ها شما مقدار یکی از مقاومتآ‌ها را قید کرده و مقاومت دیگر با توجه به دو فرمول بالا بدست میآ‌آید.در این دو فرمول مقدار Va ثابت و برابر 5 ولت و همچنین Vin را با توجه به نیاز خود تعیین میآ‌کنید.
                    برای طراحی این مدار مقدار R2را برابر 10 کیلواهم انتخاب کرده و با توجه به آن و قید در فرمول R1، مقدار R1 برابر 190 کیلواهم بدست خواهد آمد که مقاومت استانداردی نیست و باید با سری و موازی کردن مقاومتآ‌های استاندارد، آن را بدست آورد.
                    تنها چیزی که باقی مانده است تبدیل 1023 گرفته شده توسط ADC و تبدیل آن به 100 ولت به جای 5 ولت است که برای این کار از فرمول زیر استفاده میآ‌شود:

                    X = 1023/Vin
                    که X در اینجا میآ‌شود:10.23
                    حالا با توجه به مطالب بالا برنامه مدار رامیآ‌نویسیم:
                    کد:
                    $regfile = "m32def.dat"
                    $crystal = 1000000
                    '------------------------
                    Config Portc = Output
                    Config Lcd = 16 * 2
                    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
                    Config Adc = Single , Prescaler = Auto , Reference = Off
                    Start Adc
                    Enable Adc
                    '-------------------------
                    Dim A As Word , B As Single
                    Config Single = Scientific , Digits = 2
                    Cursor Off
                    '-------------------------
                    Do
                     A = Getadc(0)
                     B = A / 10.23
                     Locate 1 , 2:Lcd B ; "Volt"
                     Wait 1
                     Cls
                    Loop
                    End


                    نکات مهم:
                    * ماکزیمم ولتاژ قابل تحمل ADC 5 ولت بوده و اعمال ولتاژ بالاتر موجب سوختن پین مورد استفاده می شود.
                    * در مداراتی که احتمال رسیدن ولتاژ بالا به ADC انتظار میآ‌رود، باید از مدارات محافظ استفاده شود.
                    * برای طراحی مداراتی که ولتاژ آنآ‌ها کمتر از 1 ولت است میآ‌توان با استفاده از تقویت کننده های Op-Amp ولتاژ مورد نظر را تقویت کرد و به 5 ولت یا بالاتر که کار با آنآ‌ها راحتر است تبدیل کرد.
                    * برای اندازه گیری ولتاژهای منفی ابتدا باید آن را توسط مدارات Op-Amp به ولتاژ مثبت تبدیل کرده، سپس آن را به ADC اعمال کرد، چراکه ADC توانایی تشخیص ولتاژ در رنج های 0 تا 5 ولت را دارد.
                    * اختلاف ولتاژ پایه های AVCC و VCC نباشد بیشتر از + ̅ 0.3 ولت باشد.
                    -------------------------------------------------------------------------------------------------------------------------------
                    مثال : ساخت دماسنج با استفاده از سنسور LM35
                    http://vip.eca.ir/sharing/uploads/13428046991.rar
                    چرا ناراحتی پاتریک!
                    + امروز ی بچه دیدم سرچهارراه گل میفروخت
                    - از دیدنش ناراحت شدی؟
                    + نه
                    پس چی ناراحتت کرده
                    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                    ------------------------------------------------------------------------------------------------------
                    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                    ------------------------------------------------------------------------------------------------------
                    محصولات

                    دیدگاه


                      #11
                      وقفه ها

                      وقفهآ‌ها

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

                      وقفه های داخلی
                      برای اکثر امکانات و خصوصیات یک میکروکنترلر طراحی شده و برای هر یک بیت، پرچمی که به آن بیت وقفه گفته میآ‌شود تعبیه شده است، تا یک شدن آن بیت، نشان دهنده وقوع وقفه برای خصوصیت مورد نظر باشد.

                      وقفه های خارجی
                      تعدادی از پایه های میکروکنترلرهای AVR را میآ‌توان به عنوان یک عمل دهنده وقفه پیکربندی نمود.این پایهآ‌ها در هر میکروکنترلر با کلمه INTx مشخص شده است که در آن x، عدد وقفه خارجی را نشان میآ‌دهد.
                      فعال سازی کلی وقفهآ‌ها
                      Enable Interrups

                      توسط این دستور وقفه کلی فعال شده و میآ‌توان با توجه به نیاز از وقفه مورد نظر استفاده کرد.
                      فعال سازی وقفه مورد نظر
                      Enable Interrupt

                      بعد از فعال سازی وقفه کلی میآ‌توان هر وقفه را با ذکر نام آن فعال کرد که در اینجا Interrupt نام وقفه مورد نظر است.
                      نکته:برای غیر فعال سازی وقفهآ‌ها از دستور Disable استفاده میآ‌شود.
                      پرش به وقفه
                      On Interrupt Lable

                      ما وقفه را لازم داریم تا در زمان اجرای برنامه اصلی یک برنامه فرعی هم اجرا شود.برای این کار باید در زمان وجود وقفه به یک زیربرنامه پرش کنیم.این کار توسط دستور بالا انجام میآ‌شود.
                      Interrupt:نام وقفه مورد نظر.
                      Lable:نام برچسب زیربرنامه وقفه.
                      ------------------------------------------------------------------------------------------------------------------------
                      مثال :http://vip.eca.ir/sharing/uploads/13429785241.rar
                      چرا ناراحتی پاتریک!
                      + امروز ی بچه دیدم سرچهارراه گل میفروخت
                      - از دیدنش ناراحت شدی؟
                      + نه
                      پس چی ناراحتت کرده
                      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                      ------------------------------------------------------------------------------------------------------
                      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                      ------------------------------------------------------------------------------------------------------
                      محصولات

                      دیدگاه


                        #12
                        پاسخ : آموزش جامع AVR با نرم افزار Bascom

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

                        1-
                        در زبان بیسیک به رجیستر DDR دسترسی نداریم
                        من به شخصه و دوستان دیگه از دستور DDRx که x بیانگر اسم پورت هست برای فعال سازی مقاومت داخلی یا غیرفعال کردن آن استفاده کرده ایم و توانسته ایم این ریجستر رو تحت تاثیر قرار بدیم می شه منظورتون رو از عبارت بالا بیان کنین؟

                        2-نحوه خواندن از روی LCD توسط پایه R/W رو می شه توضیح بدین ؟ چون جدیدا در حال نوشتن کتابخانه ای برای PIC هستم روش و نحوه کار رو بدونم کمک شایانی بهم در زمینه LCD می کنین

                        3-در ساخت کارکترهای LCD اگر بخواین مثلا حروف زبان یا لحجه ی دیگه رو بنویسیم با حجم بیش از 8 کارکتر باید چی کار کرد؟

                        پیشاپیش از راهنماییاتون ممنونم
                        هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                        دیدگاه


                          #13
                          پاسخ : آموزش جامع AVR با نرم افزار Bascom

                          سلام
                          از اینکه مطالب مورد توجهتون بوده بی نهایت سپاس گذارم.


                          1- در مورد رجیستر DDR و نحوه دسترسی به اون در بسکام :
                          ببینید کامپایلر بسکام هم مثل کامپایلر کدویژن می تونه به صورت مستقیم با رجیسترهای میکروکنترلر در ارتباط باشه و اونها رو مقدار دهی کنه.در این جا که بنده نوشتم به این رجیستر دسرسی نداریم قبول می کنم که اصطلاح اشتباهیه و حتما تصحیح خواهد شد. در این بخش هدفم از بیان این جمله این بوده که برای کانفیگ کردن پورت ها در بسکام دستوری به اسم configportX وجود داره و ما از طریق این دستور پورت ها رو ورودی یا خروجی می کنیم.
                          همانطور که می دونید زبان بیسیک یک زبان سطح بالاست و به دلیل نزدیکی که با زبان حاوره ای داره از خونایی بالایی برخورداره. در این جا هم با توجه به اینکه اکثر خوانندگان این مبحث افراد مبتدی هستن در اوایل بحث هایی چون مقدار دهی مستقیم رجیسترها رو نمی خوام توضیح بدم.
                          البته باز هم شایان ذکر که بگم از شما بخاطر توجهتون بی نهایت ممنونم و اون قسمت حتما ویرایش میشه.

                          سوال دوم و سوم شما رو می تونم به این صورت توضیح بدم :
                          LCD کاراکتری دارای سه نوع حافظه هستند.
                          حافظه CGROM : در این حافظه کاراکترهای از پیش تعیین شده مثل حروف، ارقام و یک سری کاراکتر خاص دیگر مثل علامت #، $ و.... قرار دارند. این اطلاعات توسط شرکت سازنده در این حافظه ثبت شده و LCD با دریافت کد اسکی هر کدوم از این کاراکترها اون رو نمایش میده.
                          حافظه DDRAM : این حافظه یک حافظه موقته که اطلاعاتی رو که کاربر می خواد رو نمایشگر نشان داده شود را در خودش ذخیره می کنه.
                          اطلاعاتی که در این حافظه وجود دارند توسط کاربر تولید و در حافظه ثبت میشه همچنین کاربر می تونه مجددا این اطلاعات رو بخونه تا از صحت نمایش اطلاعات گاه بشه.
                          حافظه CGRAM : این حافظه یک حافظه ی 64 بایتی می باشد که می توان در داخل این حافظه حداکثر 8 کاراکتر جدید را برای نمایشگر تعریف کرده و دراون ثبت کنیم.

                          پایه ی RW دارای دو سطح منطقی 0و 1 می باشد . با قرار دادن اون در منطق صفر ما قادریم در حافظه ی DDRAM نمایشگر اطلاعات مورد نظر رو ثبت کنیم (منظور کد اسکی کاراکترهایی که می خواهیم نمایش داده شوند.) در بعضی مواقع و به ندرت می خوام بدونیم اطلاعاتی که ما در حافظه ثبت کردیم و در حال نمایش هستند همان اطلاعات مورد نظر ما می باشد و یا بر اثر نویز یا سایر عوامل این دیتاها تغییر کرده اند. در این حالت پایه ی RW در منطق 1 قرار می گیرد و می توان در این حالت اطلاعات موجود در DDRAM را مجددا بازخوانی کرد. baby_1 عزیز من خودم تا حالا این کار رو نکردم و به همین دلیل هم توابعی برای این کار ننوشتم ولی در زیر یک فایل رو براتون می زارم که از طریق خوندن اون می تونید نحوه خوندن دیتا رو بدست بیارید.
                          در مورد آخرین سوال یادمه که یکی از کاربرا بیش از 8 کاراکتر رو ساخته بود که لینک اون پست رو هم می زارم البته در هر بار نمایش فقط قادر به دیدن 8 کاراکتر هستیم. این دوستمون هم درسته که بیش از 8 کاراکتر رو تعریف کردن ولی در هر بار نمایش فقط از 8 کاراکتر استفاده کردن.

                          امیدوارم مطالب به دردتون خورده باشه.

                          لینک دیتاشیت :http://vip.eca.ir/sharing/uploads/13430683491.rar
                          لینک پست :http://www.eca.ir/forum2/index.php?topic=58506.msg319939#msg319939
                          چرا ناراحتی پاتریک!
                          + امروز ی بچه دیدم سرچهارراه گل میفروخت
                          - از دیدنش ناراحت شدی؟
                          + نه
                          پس چی ناراحتت کرده
                          + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                          ------------------------------------------------------------------------------------------------------
                          تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                          ------------------------------------------------------------------------------------------------------
                          محصولات

                          دیدگاه


                            #14
                            راه اندازی تایمر کانتر

                            راه اندازی تایمر کانتر 1

                            در میکروکنترلر ATmega32 چندین تایمر که هر کدام دارای اسم به خصوص خود می باشند وجود دارد. این تایمرها به صورت 8 بیتی و 16 بیتی موجود می باشد که کاربر می تواند طبق نیاز خود از ان ها استفاده کند.
                            تایمر کانتر یک، یک تایمر 16 بیتی بوده که دارای امکانات مختلفی همچون : تولید موج PWM. حالت CTC، کانتر یا شمارنده و ... می باشد.


                            پیکربندی تایمر کانتر یک در مد تایمر:
                            پیکربندی تایمر کانتر 1 به عنوان تایمر
                            Config Timer1

                            configTIMER1= TIMER, PRESCALE=1|8|64|256|1024, Clear Timer = 0|1

                            توسط دستور بالا، تایمر کانتر یک به عنوان تایمر، پیکربندی میآ‌شود.این تایمر 16 بیتی بوده و حداکثر تا 65535 را می شمارد.
                            مقادیر 1|8|64|256|1024 یا PRESCALE که همواره باید فقط یکی از آنآ‌ها انتخاب شود برای تقسیم فرکانس کار میکروکنترلر و بدست آوردن فرکانس تایمر استفاده میآ‌شود که رابطه آن به شکل زیر است:
                            PRESCALE / فرکانس کار میکرو = فرکانس تایمر
                            این فرکانس نشان میآ‌دهد که برای هر بار شمارش چقدر زمان نیاز است.
                            Clear Timer = 0|1:اگر 0 باشد در صورت متوقف شدن و فعال سازی مجدد به ادامه شمارش مقدار قبلی ادامه میآ‌دهد، اما اگر 1 باشد بعد از متوقف شدن و فعال سازی مجدد مقدار آن صفر میآ‌شود.

                            فعال سازی و روشن کردن تایمر
                            START Timer

                            توسط دو دستور زیر تایمر شروع به شمارش خواهد کرد.
                            Enable TIMER1
                            Start TIMER1

                            نکته:با استفاده از دستور Stop TIMER1میآ‌توان در جاهای مختلف برنامه تایمر را متوقف کرد.
                            نوشتن و خواندن تایمر
                            Var=TIMER1

                            توسط دستورات زیر میآ‌توان مقدار تایمر را در یک متغیر قرار داد و یا به تایمر مقدار داد تا از مقدار مشخص شده شروع به شمارش کند.
                            TIMER1=Var
                            Var=TIMER1

                            متغیر Var باید از جنس Word باشد، چرا که تایمر مورد استفاده یک تایمر 16 است.
                            وقفه تایمر 1
                            ENABLE OVF1

                            با رسیدن مقدار تایمر یک به 65535 مقدار تایمر باز به صفر برگشته اما وقفه آن با نام OVF1 یک میآ‌شود و میآ‌تواند به یک زیربرنامه پرش کند.شکل کلی دستور به صورت زیر است:
                            On OVF1 Lable

                            نکته:در موقع کار با این وقفهآ‌ها حتما باید وفقه سراسری فعال باشد.
                            ---------------------------------------------------------------------------------------------------------------------------------------------------
                            مثال اول : ایجاد تاخیر 1 ثانیه و نمایش بر روی LCD
                            http://vip.eca.ir/sharing/uploads/13433002451.rar
                            مثال دوم : ساخت ساعت با تایمر 1
                            http://vip.eca.ir/sharing/uploads/13433004541.rar

                            چرا ناراحتی پاتریک!
                            + امروز ی بچه دیدم سرچهارراه گل میفروخت
                            - از دیدنش ناراحت شدی؟
                            + نه
                            پس چی ناراحتت کرده
                            + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                            ------------------------------------------------------------------------------------------------------
                            تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                            ------------------------------------------------------------------------------------------------------
                            محصولات

                            دیدگاه


                              #15
                              پیکربندی تایمر کانتر 1 به عنوان کانتر

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

                              پیکربندی تایمر کانتر 1 به عنوان کانتر

                              پیکربندی کانتر 1
                              Config Timer1=Counter

                              شکل کلی دستور:
                              Config Timer1 = Counter , Edge = Rising|falling

                              EDGE:در حالتRisingپایه به لبه بالارونده و در حالت Falling پایه به لبه پایین رونده حساس است.مثلا اگر کلید را طبق شکل 1 وصل کنید مدار در حالت حساس به لبه پایین رونده قرار داده شده که با فشار دادن کلید و برداشتن دست مقدار کانتر یک واحد افزایش خواهد یافت.
                              توسط دستورات بالا کانتر 1 پیکربندی شده و برای اعمال پالس یا تحریک از طریق کلید باید از پین T1 استفاده کرد.



                              فعال سازی و روشن کردن کانتر
                              توسط دستور روبه رو کانتر فعال و آماده کار میآ‌شود:
                              Start Counter 1

                              نکته:با استفاده از دستور Stop Counter 1 میآ‌توان در جاهای مختلف برنامه کانتر را متوقف کرد.
                              نوشتن و خواندن کانتر 1
                              Var=Counter1

                              همانند مد تایمر میآ‌توان مقدار خاصی را برای شروع شمارش به کانتر داد یا مقدار آن را در یک متغیراز جنس Word ذخیره کرد.

                              Var = Counter1
                              Counter1= Var

                              وقفه کانتر 1
                              OVF1

                              وقفه کانتر یک هم عینا مانند وقفه تایمر میآ‌باشد یعنی با رسیدن مقدار شمارش به مقدار ماکزیمم، وقفه کانتر یک، 1 شده و مقدار شمارش به صفر برمی گردد.
                              Enable OVF1
                              ON OVF1 Lable

                              ----------------------------------------------------------------------------------------------------------------
                              مثال : ساخت شمارنده با استفاده از کانتر 1
                              http://vip.eca.ir/sharing/uploads/13436674511.rar


                              چرا ناراحتی پاتریک!
                              + امروز ی بچه دیدم سرچهارراه گل میفروخت
                              - از دیدنش ناراحت شدی؟
                              + نه
                              پس چی ناراحتت کرده
                              + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                              ------------------------------------------------------------------------------------------------------
                              تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                              ------------------------------------------------------------------------------------------------------
                              محصولات

                              دیدگاه

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