سفارش تبلیغ
بزرگترین تونل شهری
سلام
چون سختى به نهایت رسد ، گشایش در رسد ، و چون حلقه‏هاى بلا سخت به هم آید ، آسایش در آید . [نهج البلاغه]
سلام
 RSS 
خانه
ایمیل
شناسنامه
مدیریت وبلاگ
کل بازدید : 2722
بازدید امروز : 2
بازدید دیروز : 0
........... درباره خودم ...........
سلام
محسن[4]

........... لوگوی خودم ...........
سلام
..... فهرست موضوعی یادداشت ها.....
الکترونیک[6] .
............. بایگانی.............
مطالب قبلی

..........حضور و غیاب ..........
یــــاهـو
........... دوستان من ...........
سید حسن سادات حسینی
حمید قاسمی
مجتبی مزینی
رضا جعفری
رضا عبدالهی
حسن مطلبی
محمد معین ده یادگاری
حمید ایران منش
محمد علی غضنفری
رضا ارجمند
افشین کریمی زندی
سید موسی حنبی
محمد نادری
سعید قاسمی
علی مهیاپور

............. اشتراک.............
  ........... طراح قالب...........



  • رباط

  • نویسنده : محسن:: 25/3/85:: 1:29 صبح



    ربات چیست؟


    پست شده به بخش فیزیک در ساعت 10:22 ق.ظ توسط مدیر سایت


    کلمه ربات توسط Karel Capek  نویسنده نمایشنامه R.U.R  (روبات‌های جهانی روسیه) در سال 1921 ابداع شد. ریشه این کلمه، کلمه چک اسلواکی(robotnic) به معنی کارگر می‌باشد.
    در نمایشنامه وی نمونه ماشین، بعد از انسان بدون دارا بودن نقاط ضعف معمولی او، بیشترین قدرت را داشت و در پایان نمایش این ماشین برای مبارزه علیه سازندگان خود استفاده شد.
    البته پیش از آن یونانیان مجسمه متحرکی ساخته بودند که نمونه اولیه چیزی بوده که ما امروزه ربات می‌نامیم.
    امروزه معمولاً کلمه ربات به معنی هر ماشین ساخت بشر که بتواند کار یا عملی که به‌طور طبیعی توسط انسان انجام می‌شود را انجام دهد، استفاده می‌شود.


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


    ربات یک ماشین الکترومکانیکی هوشمند است با خصوصیات زیر:
    *  می توان آن را مکرراً برنامه ریزی کرد.
    *  چند کاره است.
    *  کارآمد و مناسب برای محیط است.


      قانون رباتیک مطرح شده توسط آسیموف:
    1- ربات ها نباید هیچگاه به انسانها صدمه بزنند.
    2- رباتهاباید دستورات انسانها را بدون سرپیجی از قانون اوّل اجرا کنند.
    3- رباتها باید بدون نقض قانون اوّل و دوم از خود محافظت کنند.


    ربات‌ها دارای سه قسمت اصلی هستند:
    مغز که معمولاً یک کامپیوتر است.
    محرک و بخش مکانیکی شامل موتور، پیستون، تسمه، چرخ‌ها، چرخ دنده‌ها و …
    سنسور که می‌تواند از انواع بینایی، صوتی، تعیین دما، تشخیص نور، تماسی یا حرکتی باشد.
    با این سه قسمت، یک ربات می‌تواند با اثرپذیری  و اثرگذاری در محیط کاربردی‌تر شود.


     اجزای یک ربات با دیدی ریزتر :
     **  وسایل مکانیکی و الکتریکی شامل :
     * شاسی، موتورها، منبع تغذیه، 
     *  حسگرها (برای شناسایی محیط):
     *  دوربین ها، سنسورهای sonar، سنسورهای ultrasound، …
     *  عملکردها (برای انجام اعمال لازم)
     *  بازوی ربات، چرخها، پاها، …
     *  قسمت تصمیم گیری (برنامه ای برای تعیین اعمال لازم):
     *  حرکت در یک جهت خاص، دوری از موانع، برداشتن اجسام، …
     *  قسمت کنترل (برای راه اندازی و بررسی حرکات روبات):
     *  نیروها و گشتاورهای موتورها برای سرعت مورد نظر، جهت مورد نظر، کنترل مسیر، …


    مزایای رباتها:
     
    1- رباتیک و اتوماسیون در بسیاری از موارد می توانند ایمنی، میزان تولید، بهره و کیفیت محصولات را افزایش دهند.
    2-  رباتها می توانند در موقعیت های خطرناک کار کنند و با این کار جان هزاران انسان را نجات دهند.
    3-  رباتها به راحتی محیط اطراف خود توجه ندارند و نیازهای انسانی برای آنها مفهومی ندارد. رباتها هیچگاه خسته نمی شوند.
    4-  دقت رباتها خیلی بیشتر از انسانها است آنها در حد میلی یا حتی میکرو اینچ دقت دارند.
    5-  رباتها می توانند در یک لحظه چند کار را با هم انجام دهند ولی انسانها در یک لحظه تنها یک کار انجام می دهند.
     
    معایب رباتها:
    1-  رباتها در موقعیتهای اضطراری توانایی پاسخگویی مناسب ندارند که این مطلب می تواند بسیار خطرناک باشد.
    2-  رباتها هزینه بر هستند.
    3-  قابلیت های محدود دارند یعنی فقط کاری که برای آن ساخته شده اند را انجام می دهند.
     
     برای مثال امروزه برای بررسی وضعیت داخلی رآکتورها از ربات استفاده می شود تا تشعشعات رادیواکتیو به انسانها صدمه نزند.


    تأثیر رباتیک در جامعه:
    علم رباتیک در اصل در صنعت به‌کار می‌رود و ما تأثیر آن را در محصولاتی که هر روزه استفاده می‌کنیم، می‌بینیم. که این تأثیرات معمولاً در محصولات ارزان‌تر دیده می‌‌شود.
    ربات‌ها معمولاً در مواردی استفاده می‌شوند که بتوانند کاری را بهتر از یک انسان انجام دهند یا در محیط پر خط فعالیت نمایند مثل اکتشافات در مکان‌های خطرناک مانند آتش‌فشان‌ها که می‌توان بدون به خطر انداختن انسان‌ها انجام داد.
     
    مشکلات رباتیک:
    البته مشکلاتی هم هست. یک ربات مانند هر ماشین دیگری، می‌تواند بشکند یا به هر علتی خراب شود. ضمناً آن‌ها ماشین‌های قدرتمندی هستند که به ما اجازه می‌دهند کارهای معینی را کنترل کنیم.
    خوشبختانه خرابی ربات‌ها بسیار نادر است زیرا سیستم رباتیک با  مشخصه‌های امنیتی زیادی طراحی می‌شود که می‌تواند آسیب‌ آن‌ها را محدود ‌کند.
    در این حوزه نیز مشکلاتی در رابطه با انسان‌های شرور و استفاده از ربات‌ها برای مقاصد شیطانی داریم. مطمئناً ربات‌ها می‌توانند در جنگ‌های آینده استفاده شوند. این می‌تواند هم خوب و هم بد باشد. اگر انسان‌ها اعمال خشونت آمیز را با فرستادن ماشین‌ها به جنگ یکدیگر نمایش دهند، ممکن است بهتر از فرستادن انسان‌ها به جنگ با یکدیگر باشد. ربات‌ها می‌توانند برای دفاع از یک کشور در مقابل حملات استفاده می‌شوند تا تلفات انسانی را کاهش دهد. آیا جنگ‌های آینده می‌تواند فقط یک بازی ویدئویی باشد که ربات‌ها را کنترل می‌کند؟
     
    مزایای رباتیک:
    مزایا کاملاً آشکار است. معمولاً یک ربات می‌تواند کارهایی که ما انسان‌ها می‌خواهیم انجام دهیم را ارزان‌تر انجام‌ دهد. علاوه بر این ربات‌ها می‌توانند کارهای خطرناک مانند نظارت بر تأسیسات انرژی هسته‌ای یا کاوش یک آتش‌فشان را انجام دهند. ربات‌ها می‌توانند کارها را دقیقتر از انسان‌ها انجام دهند و روند پیشرفت در علم پزشکی و سایر علوم کاربردی را سرعت ‌بخشند. ربات‌ها به ویژه در امور تکراری و خسته کننده مانند ساختن صفحه مدار، ریختن چسب روی قطعات یدکی و… سودمند هستند.
     
    تاثیرات شغلی:
    بسیاری از مردم از اینکه ربات‌ها تعداد شغل‌ها را کاهش دهد و افراد زیادی شغل خود را از دست دهند، نگرانند. این تقریباً هرگز قضیه‌ای بر خلاف تکنولوژی جدید نیست. در حقیقت اثر پیشرفت‌ تکنولوژی مانند ربات‌ها (اتومبیل و دستگاه کپی و…) بر جوامع ، آن است که انسان بهره‌ورتر می‌شود.
     
    آینده رباتیک:
    جمعیت ربات‌ها به سرعت در حال افزایش است. این رشد توسط ژاپنی‌ها که ربات‌های آن‌ها تقریباً دو برابر تعداد ربات‌های آمریکا است، هدایت شده است.
    همه ارزیابی‌ها بر این نکته تأکید دارد که ربات‌ها نقش فزاینده‌ای در جوامع مدرن ایفا خواهند کرد. آن ها به انجام  کارهای خطرناک، تکراری، پر هزینه و دقیق ادامه می‌دهند تا انسان‌ها را از انجام آن‌ها باز دارند.


    تاریخچه تحولات حوزه رباتیک


    1920: نمایش نامه نویس چک اسلواکی Karl capek، کلمه ربات را در نمایش«‌ربات‌های جهانی روسیه» استفاده کرد این جمله از کلمه چکی « Robota» به معنی« کوشش ملال آور‌» آمده است.
    1938: نخستین الگوی قابل برنامه‌ریزی که یک دستگاه سم‌پاشی بود، توسط دو آمریکایی به نام‌های Willard pollard و Harold Roselund برای شرکت devilbiss طراحی شد.
    1942: ایزاک آسیموفRunaround را منتشر کرد و در آن قوانین سه‌گانه رباتیک را تعریف کرد.
    1946: ظهور کامپیوتر: George Devol، با استفاده از ضبط مغناطیسی، یک دستگاه playback همه منظوره، برای کنترل ماشین به ثبت رساند. John Mauchly اولین کامپیوتر الکترونیکی (ENIAC) را در دانشگاه پنسیلوانیا ساخت. در MIT، اولین کامپیوتر دیجیتالی همه منظوره (Whirl wind) اولین مسئله خود را حل کرد.
    1951: در فرانسه Reymond Goertz اولین بازوی مفصلی کنترل از راه دور را برای انجام مأموریت هسته‌ای طراحی کرد. طراحی آن مبتنی بر کلیه روابط متقابل مکانیکی بین بازوی اصلی و فرعی با استفاده از روش متداول تسمه و قرقره بود که نمونه‌هایی برگرفته از این طرح هنوز هم در مواردی که نیاز به لمس نمونه‌های کوچک هسته‌ای است، دیده می‌شود.
    1954: George Devol اولین ربات قابل برنامه‌ریزی را طراحی و عبارت جهانی اتوماسیون را ابداع کرد. این امر زمینه‌ای برای نام‌گذاری این شرکت به Unimation در آینده شد.
    1959: Marvin Minsky و John McCarthy آزمایشگاه هوش مصنوعی را در MIT بنا نهادند.
    1960: Unimation توسط شرکت Coudoc خریداری شد و توسعه سیستم ربات‌های آن آغاز گردید. کارخانجات ساخت تراشه مانند AMF پس از آن شناخته شدند و اولین ربات استوانه ای شکل به نام Versatran که توسط Harry Johnson&Veljkomilen kovic طراحی شده بود، فروش رفت.
    1962: جنرال موتورز اولین ربات صنعتی را از Unimation خریداری کرد و آن را در خط تولید خود قرار داد.
    1963: John Mccarthy آزمایشگاه هوش مصنوعی دیگری از دانشگاه استنفورد بنا کرد.
    1964: آزمایشگاه‌های تحقیقاتی هوش مصنوعی در M.I.T ،مؤسسات تحقیقاتی استنفورد (SRI)، دانشگاه‌ استنفورد و دانشگاه ادین برگ گشایش یافت.
    1964: رباتیک C&D پایه گذاری شد.
    1965: دانشگاه Carnegie Mellon مؤسسه رباتیک خود را تأسیس کرد.
    1965: حرکت یکنواخت ( Homogeneous Trans formation) در شناخت نحوه حرکات ربات به کار رفت. این روش امروزه به عنوان نظریه اسامی رباتیک وجود دارد.
    1965: ژاپن ربات Verstran ( نخستین رباتی که به ژاپن وارد شد) را از AMF خریداری کرد.
    1968: کاوازاکی مجوز طراحی ربات‌های هیدرولیک را از Unimation گرفت و تولید آن را در ژاپن آغاز کرد.
    1968: SRI،Shakey (یک ربات سیار با قابلیت بینایی و کنترل با یک کامپیوتر به اندازه یک اتاق) را ساخت.
    1970: پروفسور victor sheinman از دانشگاه استنفورد بازوی استاندارد را طراحی کرد. ساختار ترکیب حرکتی او هنوز هم به بازوی استاندارد معروف است.
    1973: Cincinnate Milacron اولین مینی کامپیوتر قابل استفاده تجاری که با رباتهای صنعتی کنترل می شد(T3) را عرضه کرد. ( طراحی توسطRichard Hohn )
    1974: پروفسور Victor Scheinman، سازنده بازوی استاندارد، Inc Vicarm را جهت فروش یک نسخه برای کاربردهای صنعتی ساخت. بازوی جدید با یک مینی کامپیوتر کنترل می‌شد.
    1976: Vicarm Inc در کاوشگر فضایی وایکینگ 1و2 استفاده شد. یک میکرو کامپیوتر هم در طراحی vicarm به کار رفت.
    1977: یک شرکت ربات اروپایی (ASEA)، دو اندازه از ربات‌های قدرتمند الکتریکی صنعتی را عرضه کرد که هر دو ربات از یک کنترلر میکرو کامپیوتر برای برنامه ریزی عملکرد خود استفاده می‌کردند.
    1977: Inc, Unimation vicarm را فروخت.
    1978: unimation با استفاده از تکنولوژی Vicarm ‌ ( puma) ماشین قابل برنامه‌ریزی برای مونتاژ( puma) را توسعه داد . امروزه همچنان می‌توان puma را در بسیاری از آزمایشگاه‌های تحقیقاتی یافت.
    1978: ماشین خودکار Brooks تولید شد.
    1978: IBM و SANKYO ربات با بازوی انتخاب کننده، جمع کننده و مفصلی (SCARA) که در دانشگاه Yamanashi ژاپن برنامه‌ریزی و تولید شده بود، را فروختند.
    1980: Cognex تولید شد.
    1981: گروه ربات‌های CRS عرضه شد.
    1982: Fanuc از ژاپن و جنرال موتورز درGM Fanuc برای فروش ربات در شمال آمریکا قرار داد بستند.
    1983: تکنولوژی Adept عرضه شد.
    1984: Joseph Engelberger ایجاد تغییرات در رباتیک را آغاز کرد و پس از آن نام ربات‌های کمکی (Helpmate) به ربات‌های خدماتی توسعه یافته (developed service Robots) تغییر یافت.
    1986: با خاتمه یافتن مجوز ساخت Unimation، کاوازاکی خط تولید ربات‌های الکتریکی خود را توسعه داد.
    1988: گروه Staubli، Unimation را از Westing house خرید.
    1989: تکنولوژی Sensable عرضه شد.
    1994: یک ربات متحرک شش پا از مؤسسه رباتیک CMUیک آتشفشان در آلاسکا را برای نمونه‌برداری از گازهای آتشفشانی کاوش کرد.
    1997: ربات راه‌یاب مریخ ناسا از زمانی‌که ربات وارد مریخ شد تصاویری از جهان را ضبط و ربات سیار Sojourner تصاویری از سفرهایش به سیاره‌های دور را ارسال کرد.
    1998: Honda نمونه ای از p3 (هشتمین نمونه در پروژه طراحی شبیه انسان ) که در 1986 آغاز شده بود را عرضه کرد.
    2000: Honda نمونه آسیمو نسل بعدی از سری ربات‌های شبیه انسان را عرضه کرد.
    2000: Sony از ربات شبیه انسان خود که لقب SDR ( Sony Dream Robots) را گرفت، پرده برداری کرد.
    2001: Sony دومین نسل از ربات‌های سگ Aibo را عرضه کرد.
    2001: سیستم کنترل از راه دور ایستگاه فضایی(SSRMS ) توسط مؤسسه رباتیک MD در کانادا ساخته و با موفقیت به مدار پرتاب شد و عملیات تکمیل ایستگاه فضایی بین‌المللی را آغاز کرد.


    نظرات شما ()

  • مدولاسیون

  • نویسنده : محسن:: 2/3/85:: 11:48 صبح






    مقدمه ای بر مدولاسیون





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

    Pivot chord modulation : در این روش از آکوردی برای انتقال استفاده می شود که در هر دو تنالیته مبدا" و مقصد مشترک می باشد بعنوان یک مثال ساده، اگر از دو ماژور بخواهید به فا ماژور برویم می توانیم از آکورد فاماژور بعنوان آکورد Pivot یا محوری استفاده کنیم.

    Relative key : حالتهایی است که در آن تنالیته موسیقی روی مثلا" دو ماژور تثبیت شده است و شما می خواهید به مینور نسبی آن یعنی لا مینور بروید، که از ساده ترین روشهای مدولاسیون می باشد.

    Parallel Key : در این حالت تنالیته با حفظه پایه از حالت بزرگ به کوچک می رود یا برعکس مثلا" از دو مینور به دو ماژور.

    Shift : در این روش بزرگی یا کوچکی تنالیته عوض نمی شود بلکه فقط یک شیفت فاصله ای پیدا میکند. مثلا" از دو ماژور به ر ماژور. اغلب در بالاد ها به علت داشتن ساختارهایی ساده از این روش برای ایجاد تنوع استفاده می شود.

    Choromatic : در این روش موسیقی با یک حرکت کروماتیک نیم پرده ای به تنالیته جدید منتقل می شود. این نوع از مدولاسیون حالت خاصی است از Shift که برای آن معمولا" تمهیدات خاصی در نظر میگیرند.

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


    modulation example
    یک مثال از مدولاسیون از دو ماژور به لا دیز ماژور

    به این مثال دقت کنید، دو میزان اول برای تثبیت تنالیته در دو ماژور می باشد، سپس با هفت کردن آکودر چهارم گام دو ماژور تمایل هارمونی برای رسیدن به لا دیز ماژور (یا دو دیز مینور) را زیاد می کنیم. حال یک حرکت ii-v روی گام جدید لا دیز پایه های ذهن شنونده را به این سمت منتقل می کنیم که گویی گام اصلی این می باشد. در این مثال آکورد F7 حالت Pivot برای این انتقال را دارد. به این فایل midi گوش کنید و به تفاوت احساسی که هنگام شنیدن دو آکورد اول و دوم لا دیز ماژور می کنید دقت کنید. علت آن این است که آکورد اول بیشتر در گام دو ماژور شنیده می شود و حال آنکه دومین آکورد لا دیز ماژور در پایه گام لا دیز ماژور شنیده میشود و فرود روی آن احساس آرامش می دهد. audio fileModulation Example

    نظرات شما ()

  • میکروکنترلر

  • نویسنده : محسن:: 30/2/85:: 11:2 صبح

     روش انتخاب میکروکنترلر :


    1- اولین و قدیمی ترین روش انتخاب میکروکنترلر این است که نیازهای سیستم دقیقاً مشخص و هزینه آن هم مقرون به صرفه باشد . در تحلیل نیازهای یک پروژه مبتنی بر میکروکنترلر، ما ابتدا باید بدانیم که کدامیک از میکروکنترلرهای 16 ,8 و یا  32بیتی قادرند نیازهای کار را بطور موثر برآورده سازند . دیگر موارد بررسی عبارتند از :‌


    الف- سرعت ، بالاترین سرعتی که میکروکنترلر پشتیبانی می کند چیست ؟<\/h1>

    ب – بسته بندی ، آیا بسته بندی از نوع DIP  چهل پایه است ، از نوع QFP ( بسته مسطح ) تهیه شده است و یا در دیگر انواع بسته بندی ارائه شده است ؟ بسته بندی به دلیل فضای اشغالی مونتاژ و ساخت نمونه نهایی اهمیت خاصی دارد .


    پ – توان مصرفی ، این فاکتور خصوصاً برای محصولاتی که با باطری کار می کنند اهمیت دارد .


    ت – مقدار RAM و ROM در تراشه


    ث – تعداد پایه های I/O و تایمر در تراشه


    ج – بچه سادگی به ویراش بعدی از نظر کارآیی و توان مصرفی تبدیل می شود .


    چ- قیمت هر عدد ، این فاکتور از نظر قیمت تمام شده میکروکنترلری که در تولید بکار رفته اهمیت دارد . مثلاً وقتی که 100000 واحد خریداری گردد قیمت هر یک می تواند حدود 50سنت باشد .


    2- روش دوم در انتخاب یک میکروکنترلر این است که بچه سادگی می توان حول آن امکانات ایجاد کرد :‌


    بررسی های کلیدی نشان میدهد که در دسترس بودن اسمبلر ، عیب یاب ، کامپایلر C، امولاتور ( یا شبیه ساز ) پشتیبانی فنی و متخصصین درون خانه ای و بیرونی از جمله نکات قابل توجهند . در بسیاری از حالات تولید کنندگان دست دوم ( تولید کنندگانی که سازنده اولیه نیستند )‌
    می توانند اگر بهتر از سازنده نباشند ، در حد آن سرویس ارائه کنند .


    3- سومین روش در انتخاب میکروکنترلر ، در دسترس بودن آن به تعداد لازم در حال حاضر و آینده است . برای بعضی از طراحان ، این یکی حتی مهمتر از موارد 1 و 2 است . در حال حاضر در میان پیشروان میکروکنترلر ها ، خانواده 8051 بیشترین تعداد تولید کننده ثانویه را دارد . در اینجا منظور از تولید کننده ثانویه میکروکنترلر ، تولید کننده ای بجز تولید کننده اصلی است . در مورد 8051 که ابتدا بوسیله Intel ساخته شد چندین کمپانی دیگر در حال حاضر مشغول تولید آن بوده و یا هستند . از آن جمله Simens , AMD , Atmel , philips / Signetics Matra  و Dallas Semiconductor باید متذکر شد که Motorola  و Zilog و Microchip Technology تعداد زیادی شعبات را برای این منظور انتخاب کرده اند تا تولیدات خود را بطور گسترده و به موقع در دسترس قرار دهند زیرا تولیدشان با ثبات ، در حد کمال و قابلیت دسترسی ، از یک مرکز است . در سالهای اخیر آنها نیز شروع به فروش سلول کتابخانه ASCI از میکروکنترلر ها کرده اند .


    3- ثبات ها :


    در CPU ثباتها برای ذخیره موقت اطلاعات بکار می روند . این اطلاعات می توانند یک بایت از داده مورد نظر برای پذیرش ، یا آدرسی متعلق به داده موردنظری باشند . بخش عمده ای از ثبات های 8051 هشت بیت هستند . در 8051 تنها یک نوع داده وجود د ارد و آنهم 8  بیتی است . هشت بیت یک ثبات در نمودار از باارزش ترین بیت (‌MSB ) یعنی D7 تاکم ارزش ترین (LSB) یعنی D0 نشان داده شده است . برای داده های بزرگتر از 8 بیت باید آنها را قبل از پردازش به دسته های 8 بیت شکست . چون تعداد زیادی ثبات در 8051 وجود دارد ، لذا بر تعدادی از ثبات های همه منظوره پرمصرف تکیه خواهیم داد و ثبات های خاصی پوشش
    می دهیم .


    پرمصرفترین ثبات های 8051 عبارتند از A ( انباره ) B ، R7 , R6 , R5 , R4 , R3 , R2 , R1 , R0 ,  و DPTR ( اشاره گر داده )‌و PC ( شمارنده برنامه ) . همه ثبات های فوق به جز DPTR و PC هشت بیت هستند . انباره یا ثبات A با همه دستورات منطقی و حسابی مورد استفاده قرار می گیرد.


    4- مقدمه ای بر برنامه نویسی اسمبلی در 8051 :


    CPU فقط به دودویی کار می کند و سرعت قابل توجهی دارد . با این وجود برای انسان کار با 0 ها و 1 ها جهت برنامه نویسی کامپیوتر بسیار خسته کننده است . برنامه ای که از 0 ها و
     1 ها ساخته شده برنامه زبان ماشین خوانده می شود . در اوایل دوران کامپیوتر ، برنامه نویسان ، برنامه را به زبان ماشین می نوشتند . هر چند سیستم مبنای شانزده به عنوان راه مفیدتری جهت ارائه اعداد دودویی به کار رفت ، ولی باز هم فرآیند کار در کد ماشین برای انسان خسته کننده بود . نهایتاً زبان های اسمبلی بوجود آمد که نماد رمزی دستورات کد ماشین را فراهم نمود و علاوه بر آن دیگر ویژگیهای آن برنامه نویسی را سریع تر و کم خطاتر کرد . جمله نماد رمزی مکرراً در علوم کامپیوتر و مقالات مهندسی بکار برده می شود و در واقع به رمز معنی کدها اشاره می کند تا به سادگی قابل حفظ کردن باشند . برنامه های اسمبلی باید بوسیله برنامه ای به نام اسمبلر به کد ماشین تبدیل شود . زبان اسمبلی به زبان سطح پائین اشاره می کند زیرا مستقیماً‌ با ساختار درونی CPU سر و کار دارد . برای برنامه نویسی بزبان ماشین ، برنامه نویس باید همه ثبات های CPU و سایز هر کدام را همراه با دیگر جزئیات بداند .


    امروزه می توان از زبان های برنامه نویسی متعددی ، از جمله Java , C++ , C , Pascal , BASIC ,  و دیگر زبان ها استفاده کرد . این زبان ها را زبان های سطح بالا می خوانند زیرا برنامه نویس نیازی به شناخت جزئیات CPU  ندارد . در حالیکه برای ترجمه یک برنامه اسمبلی به کد ماشین ( گاهی آن را کد مقصد و یا کد عمل می گویند ) از اسمبلر استفاده
    می شود . زبان های سطح بالا بوسیله کامپایلر به کد ماشین تبدیل می گردند . مثلاً برای نوشتن یک برنامه C باید از کامپایلر C  برای ترجمه برنامه به زبان ماشین استفاده کرد.


    5- اسمبل کردن و اجرای یک برنامه 8051 :


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


    1- ابتدا از یک ادیتور برای تایپ برنامه ای استفاده می کنیم . بسیاری از ادیتورهای مناسب یا پردازنده های کلمات در دسترسند و می توان از آنها برای ایجاد یا اصلاح برنامه استفاده کرد .


    یکی از ادیتورهای رایج برنامه (Notepad in windows) MS-DOS EDIT است ، که به همراه همه سیستم های عامل مایکروسافت ارائه می شود . توجه کنید که ادیتور باید قادر به تولید فایل اسکی باشد . در بسیاری از اسمبلرها ، نام فایل از قرارداد DOS پیروی می کند ولی فایل مبدأ بسته به اسمبلر بکار رفته دارای توسعه ASM یا src می باشد . برای مشاهده قرارداد، اسمبلر خود را چک کنید . توسعه asm برای فایل مبدأ در مرحله بعدی بوسیله اسمبلر بکار رفته است .


    2- فایل مبدأ که حامل کد عملیات ایجاد شده از مرحله 1 است به اسمبلر 8051 داده می شود. اسمبلر دستورالعمل ها را به کد ماشین تبدیل می کند . اسمبلر یک فایل مقصد و یک فایل لیست را ایجاد می نماید . توسعه فایل مقصد obj است در حالی که توسعه فایل لیست lst
    می باشد .


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


    4- سپس فایل abs به داخل یک برنامه به نام OH ( مبدل مقصد به مبنای 16 ) که فایلی با توسعه hex ایجاد می کند برده می شود که این یک ، آماده برای سوزانده شدن در ROM است . این برنامه همراه با هم اسمبلرهای 8051 ارائه می شود . اسمبلرهای مبتنی بر windows  هر دو مرحله 2 و 4 را در یک مرحله انجام میدهند .


    6- کمی بیشتر درباره فایل هایasm  و obj  :


    فایل asm را فایل مبدأ هم می گویند و با این دلیل بعضی اسمبلرها دارای توسعه src برای آن می باشند . اسمبلر خود را برای مشاهده توسعه موردنیاز بررسی کنید . همانطور که قبلاً اشاره شد این فایل به هنگام استفاده از یک ادیتور مثل DOS EDIT و یا Windows notpad ایجاد می شود . اسمبلر 8051 فایل های asm را که از دستورات زبان اسمبلی ساخته شده اند به زبان ماشین تبدیل کرده و بدینوسیله فایل obj ایجاد می گردد . علاوه بر آن اسمبلر فایل lst را هم تولید می نماید .


    7- فایل lst :


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


    8- توصیف پایه های 8051 :


    گر چه اعضاء خانواده 8051  ( مثل DS5000 , 89C51 )‌در بسته های متفاوتی مثل DIP‌ و QFP و LCC  عرضه شده اند . همه آنها برای انواع توابع مانند I/O WR , RD ,  ، آدرس ، داده و وقفه تدارک دیده شده اند . باید متذکر شد که بعضی از کمپانی ها نوع 20 پایه 8051 را با کاهش پورت های I/o در رابطه با کابردها کم تقاضا ، تولید کرده اند . با این وجود چون عمده تولید کنندگان از تراشه های DIP با 40 پایه استفاده می کنند ما بر آنها تأکید خواهیم کرد .


    با بررسی شکل دیده می شود که از 40 پایه ، جمعاً 32 پایه برای چهار پورتp3 , p2 , p1 , p0 کنار گذاشته اند . بقیه پایه ها به PSEN , EA , RST , XTAL2 , XTAL1 , GND , Vcc اختصاص یافته اند . شش پایه (EA , RST , XTAL2 , XTAL1 , GND , Vcc ) از هشت پایه فوق بوسیله همه اعضای خانواده 8051 و 8031 بکار رفته اند . به بیان دیگر بدون توجه به اینکه از خانواده 8051 یا 8031 هستند ، آنها باید برای بکاراندازی سیستم وصل شوند . دو پایه دیگر PSEN و ALE در اصل در سیستم های مبتنی بر 8031 بکار می روند ابتدا وظیفه هر پایه را توصیف می کنیم .


     نمودار پایه های 8051


     


    Vcc :


    پایه 40 ولتاژ تغذیه را برای تراشه فراهم می کند ولتاژ منبع V 5+ است .


    GND‌:


    پایه 20 زمین است .


    XTAL1 و XTAL2 :


    8051 دارای یک اسیلاتور ( نوسان ساز )‌دورن تراشه ای است ولی برای راندن آن به یک ساعت کریستال نیاز است . اغلب یک اسیلاتور کریستال کوارتز به ورودیهای XTAL1
    (‌پایه19 )‌و XTAL2  ( پایه 18 ) وصل است . اسیلاتور کریستال کوارتز متصل به XTAL1 و XTAL2 به دو خازن 30pf وصل می باشد .یک طرف هر یک از خازن ها مثل شکل به زمین وصل است .


    باید توجه کرد که سرعتهای مختلفی در خانواده 8051 وجود دارد . غرض از سرعت حداکثر فرکانس متصل به XTAL است . مثلاً یک تراشه 12Mhz باید به فرکانس 12Mhz یا کمتر وصل شود . بهمین ترتیب یک میکروکنترلر 20Mhz نباید به فرکانسی بیش از 20 MHz وصل شو . وقتی که 8051 به اسیلاتور کریستال وصل می شود و منبع تغذیه روشن
    می گردد می توانیم با استفاده از اسیلوسکپ فرکانس را روی XTAL2 ملاحظه کنیم .


    اگر می خواهید ازمنبع فرکانسی بجز اسیلاتور کریستال ،مثل اسیلاتور TTL ، استفاده نمایید باید آن را به XTAL1 وصل کنید و در این حال XTAL2 طبق شکل رها می شود .


     


    اتصال XTAL به یک منبع ساعت خارجی


    RST :


    پایه 9 ، پایه RESET (‌بازنشانی ) است . این پایه یک ورودی فعال بالاست . بعد از اعمال یک پالس بالا به این پایه ، میکروکنترلر بازنشانده شده و همه فعالیت ها را رها می کند . اغلب به این حالت‌، بازنشانی به هنگام روشن شدن می گویند . فعال کردن یک بازنشانی به هنگام روشن شدن ، موجب از دست رفتن همه مقادیر در ثبات ها می شود. جدول زیر لیست غیر کاملی از ثبات های 8051 و مقادیر آنها را پس از بازنشانی به هنگام روشن شدن نشان
    می دهد.


    جدول مقدار RESET بعضی از ثبات های 8051


























    مقدار بازنشان<\/h4>


    ثبات


    0000


    PC


    0000


    ACC


    0000


    B


    0000


    PSW


    0007


    SP


    0000


    DPTR


     


    EA :


    اعضاء خانواده 8051 مانند 89C51 , 8751 یا DS5000 همگی با ROM در تراشه برای ذخیره برنامه ارائه می شوند . در این حالت ، پایه EA به Vcc وصل گردد . برای خانواده 8032 , 8031 که در آنها ROM وجود ندارد ، که در ROM بیرونی ذخیره می شود و سپس بوسیله 8031/32 بداخل کشیده خواهد شد . بنابراین برای 8031 ، پایه EA باید به GND متصل گردد تا ذخیره شدن کد در خارج تراشه مشخص شود . EA ، که به معنی
     "‌‌‌ دستیابی بیرونی " است‌، پایه شماره 31 در بسته DIP می باشد . این یک پایه ورودی است و باید به VCC یا GND وصل گردد . به بیان دیگر ، نمی توان آن را آزاد رها کرد .


    PSEN :


     این یک پایه خروجی است . PSEN بمعنی فعال کردن برنامه ذخیره است . در یک سیستم مبتنی بر 8031 که در آن ROM بیرونی کد برنامه را نگه دارد ، این پایه متصل به پایه OE از ROM است .


    ALE :


     ALE ( فعال ساز لچ آدرس ) یک پایه خروجی فعال بالاست . وقتی که 8031 به یک حافظه بیرونی وصل می شود پورت 0 هر دو مقدار داده و آدرس را تهیه می کند . به بیان دیگر ، 8031 آدرس و داده را از طریق پورت 0 مولتی پلکس می نماید تا بدین ترتیب در مصرف پایه ها صرفه جویی شود. پایه ALE برای دی مولتی پلکس کردن آدرس و داده بکار می رود و در آن پایه G از تراشه 74LS373 به ALE وصل می گردد .


    9 - پایه های پورت I/O و عملکرد آنها :


    چهارپورت P3 , P2 , P1 , P0 هر کدام 8 پایه را بکار می برند تا پورت ها را 8 بیتی سازند. هه پورت ها پس از RESET بصورت خروجی در می آیند ، و آماده استفاده به عنوان خروجی هستند . برای استفاده هر یک از این پورت ها به عنوان ورودی ، بایدآنها را
    برنامه ریزی کرد .


    10- برنامه نویسی دستور تک بیتی :


    در بسیاری از میکرو پروسسورها داده در بسته هایی با سایز بایت دستیابی می شود. در میکروپروسسورهای آدرس پذیر بایتی ، محتوای یک ثبات RAM یا پورت باید با بایت دستیابی گردد . به بیان دیگر حداقل مقدار داده ای که قابل دسترسی است یک بایت است . مثلاً در میکرو پروسسور پنتیوم پورت I/O ، بایت محوری است ، یعنی این که برای تغییر یک بیت باید به کل 8 بیت دسترسی پیدا شود . با این وجود ، در بسیاری از کاربردها لازم است یک بیت تغییر پیدا کند . مثلاً برای روشن کردن یک وسیله یا خاموش کردن آن باید چنین عمل کرد . توانمندی دستیابی به داده یک بیتی در عوض کل بایت ، 8051 را یکی از قوی ترین میکروکنترلرها نموده است . کدام بخش هایی از RAM , CPU ، ثبات ها ، پورت I/O یا ROM آدرس پذیر بیتی هستند ؟ چون ROM کد برنامه برای اجرا را نگه می دارد نیازی به دستیابی بیتی به آن نیست . همه کدهای عمل بایت محوری هستند .


    در واقع ، ثبات ها ، RAM و I/O نیاز به قابلیت آدرس پذیر بیتی دارند . در 8051 بسیاری از مکان های RAM بعضی از ثبات ها وهمه پورت های I/O بصورت بیتی آدرس پذیر
    می باشند.


    11- پورت های I/O   و قابلیت آدرس پذیری بیتی :


    8051 چهار پورت دارد که هر کدام 8  بیت است : P2 , P1 , P0  و P3 . می توانیم به کل 8 بیت یا یک بیت بدون تغییر در بقیه دستیابی کنیم . وقتی که به یک پورت بروش یک بیت دستیابی می شود از SETB X.Y استفاده می شود که X شماره پورت از 0  تا 3 ، Y بیت مورد نظر از 0 تا 7 در ازاء بیت های D0 تا D7 است . مثلاً SETB P1.5 بیت 5 از پورت 1 را به منطق می برد . بخاطر داشته باشید که D0 عبارتست از LSB و D7 هم MSB است .


    12- برنامه نویسی تایمرهای 8051 :


    8051 دارای دو شمارنده / تایمر است .‌ آنها می توانند به عنوان تایمر ( زمان سنج ) برای تولید یک تأخیر زمانی یا شمارنده برای شمارش وقایع رخداده در خارج میکروکنترلر بکار روند .


    8051 دارای دو تایمر است : تایمر 0 و تایمر 1 . این تایمرها می توانند به عنوان تایمر یا پدیده شمار بکار روند . در این بخش ما ابتدا ثباتهای تایمر را بحث کرده و سپس چگونگی برنامه نویسی تایمرها را برای تولید تأخیرهای زمانی نشان خواهیم داد .


    ثباتهای اساسی تایمر :


    هر دو تایمر 0 و 1 شانزده بیت عرض دارند . چون 8051 ساختار 8 بیتی دارد ، هر تایمر شانزده بیتی با دو ثبات مختلف بایت پائین و بایت بالا دستیابی می شوند . هر تایمر بطور جداگانه بحث شده است .


     ثباتهای تایمر 0  :


    ثبات 16 بیتی تایمر 0 بصورت بایت بالا و بایت پائین دستیابی می شوند .ثبات بایت پائین را TL0 ( بایت پائین تایمر 0 ) و ثبات بایت بالا را TH0 ( بایت بالا تایمر 0 ) می خوانند . این ثبات ها مثل هر ثبات دیگری مانند R2 , R1 , R0 , B , A و غیره قابل دسترسی هستند . مثلاً دستور MOV TL0 , #4FH ، مقدار 4FH را به TL0 منتقل می سازد که بایت پائین تایمر 0 است . این ثبات ها مانند دیگر ثبات ها قابل خواندن هم هستند . مثلاً MOV R5, TH0 ، TH0 را در R5 ذخیره می کند .


    ثبات های تایمر 0


     ثبات های تایمر 1 :


    تایمر 1 هم 16 بیتی است و 16 بیت آن به صورت دو بایت به دو نیم شده است که هر یک را TL1 (‌بایت پائین تایمر 1 ) و TH1 ( بایت بالای تایمر 1 ) می نامند . این ثبات ها به روشی مشابه با ثباتهای تایمر 0 قابل دستیابی اند .


    ثبات تایمر 1


     ثبات TMOD ( مد تایمر ) :‌


    هر دو تایمر 0 و 1 از یک ثبات به نام TMOD برای تنظیم انواع مدهای عملیاتی تایمر استفاده می کنند . TMOD یک ثبات 8 بیت است که در آن 4 بیت پائین تر برای تایمر 0 و 4 بیت بالاتر برای تایمر 1 کنار نهاده شده است . در هر حال دو بیت پائین تر برای تنظیم تایمر و دو بین بالاتر برای مشخص کردن عملیات بکار می رود . این انتخابها در زیر بحث شده اند .


    ثبات TMOD


    M1 , M0 :


    M0 و M1 برای انتخاب مد تایمر است . سه مد 1 , 0 و 2 وجود دارد . مد 0 یک تایمر 13 بیت ، مد 1  یک تایمر 16 بیت و مد 2 یک تایمر 8 بیت است .


    C/T ( تایمر / ساعت ) :


    این بیت در ثبات TMOD برای تصمیم گیری انتخاب تایمر به عنوان مولد تأخیر و یا شمارنده وقایع بکار می رود . اگر C/T=0 باشد از آن به عنوان تایمر برای تولید زمان تأخیر استفاده
    می شود . منبع ساعت برای تأخیر فرکانس کریستال 8051 است .


    منبع ساعت برای تایمر :‌


    همانطور که می دانید هر تایمری نیاز به پالس ساعتی برای شمارش دارد .منبع پالس تایمرهای 8051 چیست ؟ اگر C/T = 0 باشد ، فرکانس کریستال متصل به 8051 منبع ساعت تایمر خواهد بود . با این معنی که سایز فرکانس ساعت متصل به 8051 تصمیم گیرنده سرعتی است که تایمر 8051 داراست . فرکانس تایمر همیشه 1/12 فرکانس کریستال متصل به 8051 است .


    GATE :


    هر تایمری آغاز و توقفی دارد . بعضی از آن را نرم افزاری ، برخی سخت افزاری و بعضی دیگر با هر دو کنترل سخت افزاری و نرم افزاری انجام می دهند . تایمرهای 8051 هر دو نوع را دارا هستند . شروع و توقف تایمر به صورت نرم افزاری بوسیله بیت های TR0 و TR1 از TR انجام می شود . این کار بوسیله دستورات SETB TR1 و CLR TR1 برای تایمر 1 ، و SETB TR0 و CLR TR0 برای تایمر 0 صورت می گیرد . دستور SETB آن را شروع می کند ولی بوسیله دستور CLR متوقف می گردد . این دستورات مادامی در ثبات TMOD ، GATE=0 است این کار را انجام میدهند . راه سخت افزاری شروع و توقف تایمرها ، بوسیله یک منبع بیرونی است که GATE=1 در ثبات TMOD امکان پذیر است با این وجود برای پرهیز از تداخل ذهنی ، ما GATE=0 را انتخاب می کنیم و بدان معنی است که هیچ سختافزار بیرونی برای شروع و توقف تایمر لازم نیست . دراستفاده از نرم افزار برای شروع و توقف تایمر در حالت GATE=0 ، آنچه لازم داریم دستورات SETB TRX و CLR TRX است .


    برنامه نویسی مد 1 :


    آنچه در زیر آمده است مشخصه ها و عملیات مد است :


    1- یک تایمر 16 بیتی است ، بنابراین اجازه میدهد تا اعداد  از 0000 تا FFFFH در ثبات های TL و TH تایمر بار شوند .


    2- پس از بار شدن TH و TL با مقدار اولیه 16  بیتی ، تایمر باید شروع شود . این کار به کمک SETB TR0 برای تایمر 0 و SETB TR1 برای تایمر 1 انجام می گیرد .


    3- پس از شروع تایمر ، شمارش رو به بالا آغاز می شود شمارش رو به بالا تا رسیدن به FFFFH ادامه می یابد . وقتی که FFFFH به 0000 می رود ، بیت پرچمی به نام TH
     ( پرچم تایمر ) را بالا می برد . این پرچم تایمر قابل ردیابی است . هر وقت این پرچم بالا برود ، یک انتخاب ، توقف بوسیله دستورات CLR TR0 و CLR TR1 برای تایمر 0 و 1 خواهد بود . مجدداً باید توجه داشت که هر تایمر پرچم تایمر خاص خود را دارد . TF0 برای تایمر 0 و TF1 برای تایمر 1 .


    4- پس از رسیدن تایمر به حد خود و بازگشت به آغاز شمارش ، اگر بخواهیم فرآیند تکرار شود باید ثبات های TH و TL با مقدار اولیه بار شده و TF  هم 0 شود .


    13- یافتن اعدادی که باید در حلقه بار شوند :


    فرض کنید که مقدار تأخیر زمانی را میدانیم ؛ سوال این است که چگونه مقادیر لازم برای ثبات های TH و TL محاسبه می شوند . برای محاسبه مقادیری که باید در TH و TL بار شوند . به مثال زیر که در آن فرکانس کریستال سیستم 8051 برابر 11.0592 MHz است توجه کنید . فرض کنید ، XTAL = 11.0592MHz را داریم .


    1- زمان تأخیر مورد نظر را به 1.085 ms تقسیم می کنیم .


    2- 65536-n را انجام دهید که در آن n عددی دهدهی حاصل از مرحله 1 است .


    3 – نتیجه حاصل از مرحله 2 را به مبنای شانزده تبدیل کنید که yyxx مقادیر اولیه برای بار کردن در ثباتهای تایمر است .


    4- TL=xx و TH=yy قرار دهید .


    14- تولید زمان تأخیر طولانی :


    همانطور که دیدیم سایز تأخیر زمانی به دو فاکتور وابسته است الف- فرکانس کریستال و ب – به ثبات 16بیتی تایمر در مد 1 . هر دو فاکتور فوق خارج از کنترل 8051 بوسیله برنامه نویس است . قبلاً‌دیدیم که بزرگترین زمان قابل دسترسی با صفر کردن TH و TL بدست می آید . چرا این مقدار کافی نیست . مثال زیر چگونگی دستیابی به تأخیرهای زمانی بزرگ را نشان میدهد .


    مثال : برنامه زیر را برای یافتن زمان تأخیر به ثانیه بررسی کنید :


    MOV        TMOD , #10H<\/h1>

                    MOV        R3 , # 200


    AGAIN:     MOV        TL1, #08


                    MOV        TH1, #01


                    SETB               TR1


    BACK:      JNB          TF1 ,BACK


                    CLR         TR1


                    CLR         TF1


                    DJNZ               R3 ,AGAIN


    حل :‌ TH-TL = 0108H به دهدهی و 65536-264 = 65272 . اکنون 1.085 ms = 70.820 ms × 65272 و برای تعداد 200 داریم :


    ثانیه 70.820 ms = 14.164024 ms × 200


     مد 0 :


    مد 0 دقیقاً مثل مد 1  است . با این تفاوت که بجای 16 بیت ، یک تایمر 13 بیت است .شمارنده 13‌بیتی می تواند از 0000 تا 1FFF را در TH -TL نگه دارد . بنابراین وقتی تایمر به 1FFFH می رسد یه 0000 بازگشته و TF را بالا می برد .


    برنامه نویسی مد 2 :


    در زیر مشخصات و عملکرد مد 2 تشریح شده است :


    1- این یک تایمر 8 بیت است بنابراین فقط اعداد 00 تا FFH را برای بار شدن TH از ثبات تایمر اجازه میدهد .


    2- پس از بار شدن TH با مقدار 8  بیتی ، 8051 یک کپی از آن را به TL میدهد . سپس تایمر باید آغاز به کار کند . این کار بوسیله دستور SETB TR0 برای تایمر 0 و SETB TR1 برای تایمر 1  انجام می شود . این قسمت دقیقاً مثل مد 1 است .


    3- پس از شروع تایمر ، با افزایش ثبات TL شروع به شمارش می کند . شمارش تا رسیدن به FFFH ادامه دارد . وقتی که از FFH به 00 باز گردد ، پرچم TF را بالا می برد . اگر از تایمر 0 استفاده شود ،TF0 بالا می رود و اگر تایمر 1 مورد استفاده قرار گیرد TF1 بالا خواهد رفت .


    4- وقتی که ثبات TL از FFH به 0 می رود TF برابر 1 می شود ، و TL با مقدار اولیه باز شده در TH بطور خودکار مجدداً بار می گردد . برای تکرار فرآیند ، باید TF  را فقط پاک کرده اجازه بدهیم بدون هر نیازی به بار شدن مقدار اولیه بوسیله برنامه نویس ، کارادامه یابد .این قابلیت ، برخلاف مد 1 که در آن برنامه نویس باید بار شدن مجدد TH و TL را انجام دهد مد 2 را بیک امکان خودکار با بارشدن اتوماتیک تبدیل کرده است .


    باید تأکید کرد که مد2 یک تایمر 8 بیت است . با این وجود قابلیت بار شدن خودکار را دارد . در بار شدن خودکار ،‌TH با مقدار اولیه بار می شود و سپس یک کپی از آن به TL داده
    می شود . بار کردن TH را تغییر نمی دهد بلکه همچنان مقدار اولیه را حفظ می کند .


    مراحل برنامه نویسی در مد 2  :


    برای تولید یک تأخیر زمانی با مد 2 تایمر ، مراحل زیر باید انجام شود .


    1- مقدار ثبات TOMD را بار کنید تا مشخص شود کدام تایمر به کار می رود ، و کدام مد تایمر انتخاب شده است .


    2- ثبات TH را با مقدار اولیه شمارش بار کنید .


    3- تایمر را شروع کنید .


    4- پرچم تایمر (TF) را با دستور JNB TFx,target ردیابی کنید تا ببینید آیا بالا رفته است یا نه ؟ اگر TF بالا بود از حلقه خارج شوید.


    5- پرچم TF را پاک کنید .


    6- به مرحله 4 بازگردید چون مد 2 بطور خودکار بار می شود .


     


    15- امکانات اضافی 8032/8052 : <\/h1>

    IC های 8032/8052 ( و نسخه های CMOS و یا نسخه های EPROM دار ) ، دو مزیت بر IC های 8032/8051 دارند . اولین که دارای 128 بایت اضافی RAM روی تراشه از آدرس 80H تا FFH می باشند . پس برای این که با SFR ها ( که در همان آدرس ها قرار دارند ) تداخل بوجود نیاید ، 1/8 کیلو بایت اضافی RAM تنها از طریق آدرس دهی غیر مستقیم قابل دستیابی است . یک دستور العمل مثل : MOV A , 0F0H <\/h1>

    در همه IC های خانواده MCS -51TM  محتویات ثبات B را به انباره منتقل می کند . دو دستور دستورالعمل زیر :‌


    MOV R0 , #0F0H<\/h2>

    MOV A , @ R0


     محتوای آدرس داخلی F0H را در IC های 8032 / 8052 به انباره منتقل می کند اما در IC های 8031 /8051 تعریف نشده است . سازمان حافظة داخلی IC های 8032 /8052 را بطور خلاصه می توان یافت .


    دومین مزیت 8032 / 8052 یک تایمر 16 بیتی اضافی است یعنی تایمر 2 که از طریق پنج ثبات کاربرد خاص اضافی برنامه ریزی می شود .


    16- عملیات راه اندازی مجدد ، reset :


    8051 با قرار گرفتن RST در وضعیت منطقی بالا برای دست کم دو سیکل ماشین و سپس پایین آمدن آن می تواند reset شود. RST ممکن است بطور دستی با استفاده از یک سوئیچ و یا هنگام اعمال تغذیه توسط یک مدار RC ( مقاومت – خازن ) فعال گردد . شکل صفحه بعد دو مدار برای برای reset کردن سیستم را نشان می دهد .


    دومدار برای RESET سیستم


    وضعیت همه ثبات های 8051 پس از reset سیستم در جدول زیر خلاصه شده است . شاید مهمترین این ثبات های شمارنده برنامه باشد که با 0000H بار می شود . هنگامی که RST دوباره پایین می رود ، اجرای برنامه همیشه ازاولین مکان در حافظة‌ کد یعنی 0000H آغاز
    می شود. عمل reset تأثیری بر محتوای RAM روی تراشه ندارد .


    جدول مقادیر ثبات ها پس از reset سیستم
























































    ثبات ها


    محتویات


    شمارنده برنامه


    0000H


    انباره


    00H


    ثبات B


    00H


    PSW


    00H


    DPTR


    07H


    درگاه 0-3


    0000H


    IP (8031/8051)


    FFH


    IP (8032/8052)


    XXX00000B


    IE (8031/8051


    XX000000B


    IE (8032 / 8052 )


    0X00000B


    ثبات های تایمر


    0X000000B


    SCON


    00H


    SBUF


    00H


    PCON (HMOS)


    00H


    PCON (CMOS)


    0XXXXXXXB


     


    0XXX0000B


    17- شرح برنامة ( نرم افزاری )‌پروژه :‌<\/h1>

    برنامه ای که به منظور اجرای این پروژه نوشته شده است ، با استفاده از زبان برنامه نویسی اسمبلی است . در این پروژه صرف روشن و خاموش کردن سد پورت بعنوان خروجی در سیکل های زمانبندی خاص است . برای این منظور می توان از دستورات Call , Delay و دادن تعداد به ثبات های مخصوص استفاده کرد . البته چون در این پروژه داشتن زبان های دقیق و دلخواه است این روش کمتر مورد استفاده قرار میگیرد . روش دیگر برای این پروژه استفاده شده است ، استفاده از تایمرهای میکروکنترلر است .


    سر میکروکنترلی با توجه به شمارة خود دارای دُ‌ یا سد تایمر است ، که این تایمرها می توانند بعنوان تولید تأخیر زمان یا شمارش تعداد اتفاقات مورد استفاده قرار گیرند .


    دراینجا هدف تولید تأخیر زمان بوسیله تایمر است . بدین منظور می بایست ثبات های خاص مقداردهی شوند. اولین مرحله مشخص کردن تایمر و مدی است که می خواهیم برنامه با آن انجام شود . که عبارتند از تایمرهای 2 , 1, 0   و مدهای 2 , 1 , 0  که ما ا زتایمر 0 در مد 1 استفاده کرده ایم .


    مرحله دوم بار کردن بیت پایین (‌Tl ) و بیت بالا ( TH ) مد 1  است . روش پر کردن این
    بیت ها بطور کامل در متن گزارش کار شرح داده شده است . حال بعد از انجام مراحل بالا
    می بایست تایمر راه اندازی شود. برای انجام این کار می توان هم بصورت نرم افزاری و هم بصورت سخت افزاری اقدام کرد . که در این برنامه تایمر با استفاده از SET کردن TR بصورت نرم افزاری راه اندازی می شود. دراینصورت تایمر شروع بکار می کند .


    Cpu میکروکنترلر سردستور را به ترتیب خط نوشته شده اجرا می کند . بعد از راه اندازی تایمر می بایست پورت مورد نظر را 1 کنیم .


    بعد از انجام یک شمارش کامل تایمر ، بیت پرچم یک می شود. حال می بایست برای تکرار شمارش این بیت را با استفاده از دستورات CLRTF , JNBTF صفر نماییم و بعد هم تایمر را با استفاده از دستور CLRTR متوقف می شود . در اینجا ما یک سیکل کامل شمارش را طی کرده ایم .


    نکته ای که باید در اینجا متذکر شد 1 نسبت که حداکثر تأخیر زمان تأخیر سر تایمر محدود است و به ظرفیت بیت های TN , Tl و همچنین فرکانس کریستال مورد نظر بستگی دارد . برای بوجود آوردن زمان های طولانی ( 10 ثانیه برای این پروژه ) ما باید حلقه های شمارش را بارها تکرار نماییم . این کار با استفاده از مقداردهی یک ثبات ( در اینجا R2 ) و دستور DJNZ انجام می شود . بعد از بدست آوردن زمان مورد نظر پورت روشن را با استفاده از دستور CLR یا CPL پاک می کنیم و همین ترتیب حلقه را برای پورت های بعدی مورد نظر اجرا می کنیم .


    و در پایان برای تکرار برنامه از دستور jump استفاده می شود .


    18- برنامه نوشته شده قبل از اسمبل کردن :


    ORG 00H


    clr p1.1


    clr p1.2


    clr p1.3


    JMP HERE


    here:


    mov tmoD,#01h


    MOV R2,#0FFH


    AGAIN1:


    MOV TL0,#0FFH


    MOV TH0,4BH


    SETB TR0


    SETB P1.1


    BACK1:


    JNB TF0,BACK1


    CLR TR0


    CLR TF0


    DJNZ R2,AGAIN1


    CLR P1.1


    MOV R2,#0FFH


    AGAIN2:


    MOV TL0,#0FFH


    MOV TH0,#0A5H


    SETB TR0


    SETB P1.2


    BACK2:


    JNB TF0,BACK2


    CLR TR0


    CLR TF0


    DJNZ R2,AGAIN2


    CLR P1.2


    MOV R2,#0FFH


    AGAIN3:


    MOV TL0,#0FFH


    MOV TH0,#04BH


    SETB TR0


    SETB P1.3


    BACK3:


    JNB TF0,BACK3


    CLR TR0


    CLR TF0


    DJNZ R2,AGAIN3


    CLR P1.3


    JMP HERE


    END


     


    19- پیشنهادات و انتقادات :


    1- این پروژه در سرفصل اجرائی با میکروکنترلر 8051 ارائه شده است حال آنکه امروزه در جامعه این IC دیگر کاربردهای زیادی ندارد و حتی برای پروژه های دانشجویی هم از
    آی سی 89c51 استفاىه می شود پیشنهاد می کنیم در ادامه پروژه های ارائه شده توسط گروه محترم الکترونیک از IC های دیگری استفاده شود .


    2- انجام پروژه های میکروکنترلر دارای پیش زمینه ای در دانشگاه می باشد چون دستگاههای پروگرامر و ... دارای قیمت بالایی می باشند و عدم وجود این دستگاه باعث به دست نیامدن نتیجه مطلوب می گردد .


    3- میکروکنترلر دارای وسایل سخت افزاری است که همیشه برای راه اندازی آن نیاز است مانند : اسیلاتور کریستال در فرکانسهای مختلف که در صورت نبود آنها نتیجه ای حاصل
    نمی شود و نیاز آن ضروری است .


    4- ارائه مطلب آشنایی با میکروکنترلر بصورت کلاسهای فوق برنامه می تواند در جهت آشنایی دانشجویان و با لا بردن سطح معلومات عمومی الکترونیکی آنها مفید باشد.


    20- نتیجه گیری :


    1-   حضور وجود مدارات مجتمع در الکترونیک انقلابی بزرگ به شمار می آید . این المانها با وجود حجم بسیار کوچک دارای کارایی بالایی هستند .


    2-   میکروکنترلر 8051 و به طور کلی خانواده میکروکنترلرها در جامعه امروزی کاربردهای فراوانی دارند و در سطحی وسیع به کار گرفته می شوند .


    3-   برای اینکه توانایی کار میکروکنترلرها را بتوانیم به کار بگیریم باید حداقل با یکی از زبانهای برنامه نویسی شامل اسمبلی و C و ... آشنایی داشته باشیم .


    4-   کاربردهای فراوان میکروکنترلر به دلیل توان بالا‌، انجام اعمال مختلف ، سرعت بالای المان و... می باشد که باعث شده است کاربرد زیادی در صنعت داشته باشد.


    5-   بر تمام دانشجویان رشته الکترونیک در هر مقطعی و هر گرایشی لازم است تا حداقل آشنایی با میکروکنترلر داشته باشند .


    6-   میکروکنترلرها امروزه به عنوان مسائل حل شده تلقی می شوند که تنها نیاز به صورت مسئله دارند.


    21- منابع و مآخذ :


    1- اسکات مکنزی ، آی ؛ میکروکنترلر 8051 ؛ ترجمه : حمیدرضا رضایی نیا ، پیمان دربندی آذر ، انتشارات خراسان ، 1378


    2- مزیدی‌، محمدعلی ؛ مزیدی ، جانیس گلیسپی ؛ میکروکنترلر 8051 ؛ ترجمه :‌دکتر قدرت سپیدنام ؛ انتشارات باغانی ، زمستان 1382


     




  • لیست کل یادداشت های این وبلاگ