X
تبلیغات
رایتل


ساخت دستگاه بارکد خوان و اتصال آن به پورت سریال PC

ساخت دستگاه بارکد خوان و اتصال آن به پورت سریال PC

ـ پیش گفتار

ـ هدف کلی ساخت

ـ توضیح میکرو کنترلی 8 – 51

ـ شرح سخت افزار سیستم

ـ شرح Le  های Ln 324 , max 

ـ توضیح برنامه نرم افزاری

ـ ضمایم

یکی هست و هیچ نیست جز او

وحده لااله الاهو

پیش گفتار :

پروژة دستگاه بار کد خوان محصول تحقیق چندین ماهه بوده که ؟ مسیر از منابع و مأخذهای مختلف در زمینة بارکد خوانی و ارسال آن به پورت سریال PC بهره جستم .

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

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

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

ـ هدف کلی ساخت:

می دانیم امروزه دنیای الکترونیک روند رو به رشد سرسیمی را می پیماید که در مقایسه با گدشته غیر قابل وصف است. در این پیمایش سرعت ارسال و دریافت اطلاعات نقش بسزای دارد و افکار متخصصین را کاملاً به خود مشغول کرده تا مسأله زبان را به حداقل رسانده و نرخ ارسال و دریافت داده ها را تا نهایت ممکن بالا ببرند.

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

که با قرار گرفتن کارت در بین فرستنده به گیرنده نوری خطوط سیاه و سفید trace  می شوند و کد این کارت استخراج می شود و طریق پورت سریال به PC منتقل می شود.

قسمت عمده و مهم طراحی و ساخت این دستگاه، میکروکنترلی 8.51  است .

که در بخشهای آینده به توضیح این مسأله می پردازیم.

نگاهی گذرا و اجمالی به میکروکنترلی 8.51

ابتدا باید ببینیم فرق میکروکنترلی با میکرو پروسسور چیست ؟

منظور از یک میکروپروسسور ( ریز پردازنده نام میکروپروسسورهایی از خانواده X86  انتیل مثل 8.386 , 8.286 , 8.86 , 68020 , 68030 , 68040  و یا خانواده ای از این قبل است . این میکروپروسسورها فاقد ROM , RAM  و پورت های I / O   در درون خود تراشه هستند به این دلیل به آنها میکروپروسسورهای همه منظوره گویند.

طراح سیستمی که از میکروپروسسور همه منظورهای چون پنتیوم، 68040  استفاده باشد که باید در خارج از آن ROM , RAM پورت های I / O و تمایمرها را اضافه نماید. طراح ما بتواند روی مقدار ROM , RAM پورت های I / O به حسب نوع میکروکنترلی دارای یک CPN  به همراه مقدار ثابتی از ROM , RAM ، پورت های I / O  و تایمر در درون خود می باشد.

ـ سیستم تک منظوره چیست؟

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

وظیفه اش یافتن مکان ماوس  و ارسال آن به PC است.

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

چهار نوع میکروکنترلی 8 بیتی مهم وجود دارد که عبارتند از 6811  از موتورولا ، 8.51  از انیتل ، Z 8  از زایلوک و PIC 16 X  از شرکت میکرو چپ تکنولوژی میکروکنترلهای 16 و 36 بیتی هم وجود دارد . سه روش برای انتخاب وجود دارد.

1 ـ بر آورد کردن نیازهای محاسبات کار به طوری مؤثر و مقرون به صرفه

2 ـ در دسترس داشتن نرم افزارهای کمکی مانند کامپایلرها، اسمبلرها و عیب یاب ها

3 ـ منابع گسترده و قابل اعتماد و بی میکورکنترلها

مروری بر خانواده 8.51

تاریخچه مختصری از 8.51  

در سال 1981شرکت  In Ael میکروکنترلری به نام 8.51 را معرفی کرد این میکروکنترلر دارای 128 بایت ROM ، K 4 بایت ROM، در تایمر ، یک پورت سریال و چهار پورت موازی ( هر یک 8 بیت ) بودکه همه آنها در یک تراشه تعبیه شده بودند زمانی به آن  (سیستم در یک تراشه ) را گفتند . 8.51 یک پروسسور 8 بیت است . نیمی CPX هر بار می تواند فقط روی 8 بیت داده کار کند. داده ای بزرگتر از 8 بیت باید به قطعات 8 بیت بشکنند و سپس بوسیله CPX پردازش شوند 8.51 کلاً دارای چهار پورت I / O  با عرض 8 بیت است گر چه 8.51 می تواند حداکثر 64X حافظه ROM در تراشه داشته باشد بسیاری از سازندگان فقط K 4 بایت را در تراشه گذاشته اند . ( شکل ص 27 نمودار ملوج )

8.51 عضو اصلی خانواده 8.51 است In tel  آنرا  Mes – 51  می نامد.

                                                                   امکانات 8.51

Feature                  Quantity

ROM                      4K bytes

RAM                      128 bytes

Timer                      2

I/O Pin 5                 32

Serial Port              1

Interrupt                 Sources 6

دو عضو دیگر خانواده 8.51 و 8.58 و 8.31 است.

نمودار بلوکی درون میکروکنترلر 8.51

××××

AT89C51  از شرکت Atmel :

این تراشه 8.51 دانیم دارای ROM  سریع می باشد. در اطراحی های سریع این نوع حافظه میکرو؟ است. زیرا حافظه سریع بتواند مرا چند ثانیه در مقایسه 20 دقیقه در ؟ برس 8751 باعث شود به این دلیل AT89C51 به جای 8751 به کاربرده شده است تا هنگام تک شدن تراشه وقتی تلف نشود. هنگام استفاده از AT89C51  برس ساخت سیستم های مبتنی بر میکروکنترلر به سوزاننده یا برنامه ریز ROM  سریع نیاز داریم. وجود به شکننده ROM نیازی نیست.

AT89C51

ROM

4K

RAM

128

IP

32

تایمر

2

وقفه

6

Vce

5 V

8.51  با سرعتهای مختلف Atmol

صوت                     حجم در قطعه            5

AT89C51   - 12 PC     12 m Hz      40

AT89C51   - 16 PC     16 m Hz      40

AT89C51   - 20 PC      20 m Hz     40

شکل 8.51 Ic

شرح لایه های 8.51

ـVec  باید 40 ولتاژ تغذیه صورتی تراشه فراهم باشد و  ؟ +5  است.

ـ GND  لایه 20 زمین است .

ـ  XTAL 2 , XT AL1 : 8.51  دارای یک اسیلاتور درون تراشه ای است. و برای راندن آن به یک ساعت کرسیتال اسیلاتور کریستال کوارتز به ورودی های XT AL1  ( پایین 19 ) و XTAL 2 ( یا 18 ) وصل است.

اسیلاتور کریستال کوارتز متصل به XTAL 2 , XT AL1 به دو خازن P.F وصل می باشد یک طرف هر یک از خازنها به زمین وصل است.

ـ RST  لایه 9 ، لایه Res ET  است . این یک ورودی فعال بالاست. بعد از اعمال یک پالس بالا به این پایه میکروکنترلر ایست شده و همه فعالیت را رها می کند.

ـ : اعضا خانواده 8.51 مانند 89C51 , 8751  یا  DS 500  همگرا با ROM  در تراشه برای ذخیره برنامه ارائه می شوند. در این حالت لایه  به Vce روی خانواده  برای دستیابی بیرونی است.

ـ  به معنی فعال کردن برنامه ذخیره است.

ـ ALE : ( فعال ساز لچ آدرس ) یک لایه خروجی فعال بالاست.

پایه های پورت I / O

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

کارت O: این پورت 8 پایه ( 32 – 39  ) را اشغال می کند. می توان از آن به عنوان ورودی یا خروجی استفاده کرد.

برای استفاده از پایه های پورت  O بر محتوای ورودی و خروجی هر پایه از بیرون به یک مقاومت بالاکش 10km  وصل شود.

دلیل این است که پورت صفر بر خلاف P3 , P2 ,P1  یک در بین باز است.

پورت 1 : جمعاً 8 پایه ( 1 تا 8 ) را اشغال می کند. می توان از آن به صورت ورودی یا خروجی استفاده کرد.

و نیازی به مقاومت بالاکش تولید زیرا دارای مقاومت بالاکش درونی است.

پورت 2: این پورت دارای 8 پایه است ( 21 تا 28 ) ؟ آنها به عنوان ورودی یا خروجی برنامه ریزی کرد. و به  ؟ بالاکش نیاز ندارد.

پورت 3 : این پورت نیز دارای 8 پایه است ( 10  الی 17) می توان آنرا به عنوان ورودی یا خروجی برنامه ریزی کرد. نیازی به مقاومت بالاکش ندارد.

                                                    توان دیگر پورت ها

P3 Bit            Function            Pin

P3.0                   RXD              10

P3.1                   TXD              11

P3.2                              12

P3.3                               13

P3.4                      TO             14

P3.5                        T1             15

P3.6                                 16

P3.7                                   17

شکل صفحه 129 ص 11

شکل صفحه 130 ص 12

اینک شرح مختصری در ارتباط با تبادل سریال می دهیم.

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

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

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

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

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

تبادل داده دو روش را به کار می برد. که یکی روش همزمان و دیگری روش غیر همزمان است. روش همزمان هر بار یک بلوک از داده را انتقال می دهد. در حالی که روش غیر همزمان هر بار یک بایت را منتقل می کند.

برای پیاده کردن هر یک از مورد تر فوق تراشه ای IC خاصی بوسیله سازندگان برس تبادل سریال داده ساخته شده است. این تراشه ها عموماً UART  ( فرستنده گیرنده غیر همزمان یئیتئرسال ) و USART ( فرستنده گیرنده ‏یونیو‏-‏02غیر همزمان  . یونیورسال ) خوانده می شوند.

که 8.51  دارای UART  درونی است.

استاندارهای Rs 232 : برای ایجاد امکان سازگاری در میان تجهیزات تبادل داده ساخت سازندگان مختلف یک استاندارد واسطی به نام Rs 232 بوسیله سازمان صنایع الکترونیک ( BIA  ) در 1960  بر پاشد. در سال 1963  استاندارد فوق اصلاح و Rs 232 A  نام گرفت. در سالهای بعد Rs 232s  و Rs 232e  نیز معرفی شد. در این جا به استاندارد Rs 232 می پردازیم.

امروزه Rs 232 یک استاندارد واسط I / O  با کاربردی گسترده است. چون استاندارد مذکور قبل از خانوادة TTL  با نهاده شد سطوح ولتاژ ورودی و خروجی سازگار با TTL نیستند . در Rs 232 منطق 1 با – 3   تا – 25  ولت تعریف میشد ضمن اینکه +3  تا +25  ولت هم بیت 0 است.

فاصله – 3 تا +3 تعریف نشده است. به این دلیل برای اتصال هر Rs 232 به یک سیستم مبتنی بر میکروکنترلر، باید از مبدل های ولتاژی همچون MAX 232  برای تبادل از سطح TTL به سطح Rs 232 و بر عکس استفاده این تراشه های MAX 232 به نام راه اندازهای خط  گیرنده های خط نام گذاری شده اند.

DB – (  از استاندارد I / O سریال که فقط 9  پایه دارد توسط IAM  معرفی شد به منظور ایجاد انتقال سریع و قابل اطمینان داده بین دستگاها در انتقال باید هماهنگی داشته باشد در ست مثل چاپگر چئن در وسیله گیرنده ممکن است برای پذیرش داده جای نباشد. باید مکانیزی برای اطلاع به فرستنده ایجاد شد تا از ارسال داده خودداری کند.

DTR  : و آمادگی پایانه داده وقتی که پایانه ( یا پورت Cnm  در LPC  روشن شود، پس از یک سوی تست های درونی PC سیگنال DTR رابه بیرون ارسال نماید تا آمادگی خود را برای تبادل داده اعلام نماید. اگر شکلی در پورت Cnm وجود داشته باشد این سیگنال فعال نمی گرد. این سیگنال یک سیگنال فعال پایین بوده و به مودم اطلاع می دهد که آماده است . این پایه یک خروجی از DTR ( پورت Cm  در PC  ) و یک دورمن به موازات.

CD  یا DCD  : ( تشخیص حامل یا تشخیص حامل داده ) مودم یا سیگنال DCD را برای اطلاع PC , DTR ارسال دارد تا مشخص حامل معتبر و ارتباط بین خود در گیر مودم ها را اعلام نماید. بنابراین DCD یک خروجی از مودم و ورودی به یک  PC است.

DSR  ( آماده دریافت یا مجموعه داده آماده ) : وقتی که یک  DCR  ( مودم ) روشن شود و شروع به قسمت خود کند یک DSR را صادر باشد تا که ؟ تبادل اطلاعات را اعلام نماید. بنابراین سیگنال مذکور یک خروجی از مودم روس به PC  است این یک سیگنال فعال پایین است.

RTS  : تقاضای ارسال: وقتی وسیله (PC) DTR  دارای با؟ برای ارسال است سیگنال RTS را ایجاد کند تا به مودم داشتن یک بایت داده برای ارسال را اعلام نماید RTS یک خروجی فعال پایین از DTR  و ورودی به مودم است .

( ساده ترین اتصال بین میکروکنترلر و PC  )

DTR                                      DTR                                                                    TXD RXD TXD RXD

 

اتصال 8.51  به Rs232

در این قسمت جزئیات اتصال فیزیکی 8.51  به کانکتور Rs232  ارائه شده است. همانگونه که قبلاً گفته شد استاندارد Rs232 با TTL  سازگار نیست بنابراین از راه اندازی همچون MAX232  برای تبادل سطوح و ولتاژ Rs232 به سطح TTL و بالعکس باید استفاده شود.

پایه ای TXD   , RXD  در 8.51

8.51 دارای دو پایه است که خصوصاً برای ارسال و دریافت سریال داده بکار می رود این دو پایه TXD  و RXD  نامیده شود و بخشی از پورت 3  (P3.1, P3.0) می باشند . پایه 11 از 8.51 (P3.1 ) به TXD یک راه انداز خط دارند تا با Rs232  سازگار شوند چنین وسیله ای تراشه MAX232  می باشد که دو زیر مورد بحث قرار می گیرند.

MAX232  :

MAX232  دو مجموعه راه انداز برای ارسال و دریافت داده دارد که در شکل زیر نشان داده شده است.

راه اندازهای به کار رفته برای TXD ,  T1  و T2  خوانده می شوند در حالی که راه اندازهای RXD با P2 , P1  مشخص شده اند.

و بسیاری در به کاربردها تنها یکی از آنها به کار می رود مثلاًT   1 و P1 همراه با هم برای TXD و RXD در 8.51 استفاده شده و مجموعه دوم بلا استفاده باقی مانده است. توجه اینکه که راه انداز T1  در MAX232 دارای علائم T lin  و Tlont به ترتیب و پایه ای 11 و 14 باشد و پایه T lin در سمت TTL  به TXD  میکروکنترلی وصل است در حالی که Tlont در سمت Rs232  بوده و به پایه  RXD در کانکتور Rs232 DB   وصل می باشد . خط راه انداز R1  دارای علامت Rlin  و Rlout  روسی شماره پایه های 12 , B  می باشد. R11n  ( پایه 12)  نیز در سمت TTL بوده و به پایه RXD از میکروکنترلر متصل می باشد .

MAX232 به چهار خازن از 1 تا ms 22 نیاز دارد بیشتیوم نوع معرفی خازن   ms 22  است یکی از مزایای MAX232 این است که از منبع تغذیه +5V استفاده کند که مشابه ولتاژ برای 8.51 است به بیان دیگر با یک منبع +5V می توان 8.51 و MAX232 راه انداخت.

برنامه نویسی تبادل اطلاعات سریال در 8. .51

در این قسمت مثالهای تبادل اطلاعات سریال 8..51  را مورد بحث قرار می دهیم و نشان خواهیم داد که چگونه آنها را برای ارسال و دریافت داده سریال برنامه نویسی کنیمبرتبادل اطلاعات سریال با پورت Cm  در PC  تأکید خواهیم کرد.

8.51 داده را با میزان باودهای مختلفی بطور سریال ارسال و یادریافت  می کند میزان باود بر 8.51 قابل برنامه ریزی است . 

3 کار به کمک تایمر 1  انجام می شود. وقتی که از تایمر 1 برای تنظیم میزان باود استفاده شود باید آنرا در مد 2 ایمز 8 بیت را بارکردن خودکار، برنامه ریزی کرد برای یافتن میزان باودسازگار با PC باید T1 را با مقادیر جدول زیر بار کنید.

110 150 300 600 1200 2400 4800 9600 19200 جدول مقادیر ثبات TH1 تایمر 1 برای انواع باودها 

میزان باود PC

SBUL : یک ثبات 8 بیت است که معمولاً در تبادل داده 8 . 51 به کارمی رود برای ارسال یک بایت داده  از طریق خط TXD  باید آنرا در ثابت SBUL قرار داده به طور مشابه SBUL بایت داده  را هنگامی که از خط RXD  دارد، شود هم گذرگاه دارد. . و این ثبت قابل دسترس است.

ثبات کنترل سریال SC . N .

بایت SC . N یک ثبات 8 بیت است کار برای برنامه ریزی بیت شروع، بیت ختم و بیت های داده تاب و دیگر موارد استفاده می شود

جدول ص 161 ثبات کنترل پورت سریال SC . N

 SM1 , SM0 :

 SM1 , SM0 به ترتیب بیت های D6 , D7  ثبات SC . N هستند این دو بیت قاب بندی داده را با تعیین بیت در هر کاراکتر و بیت های شروع و ختم مشخص شد.

SM1 SM0 0 0 0 1 1 0 1 1 مد 0 سریال

مد 1 سریا با 8بیت  ، 1 بیت ختم تا 1 بیت شروع

مد 2 سریال

مد 3 سریال

از 4 مد سریال، فقط مد 1 برای ما مورد توجه است درثبات SC . N وقتی کد مد سریال 1 انتخاب می شود. تاب بندی 8 بیت یا 1بیت ختم و 1 بیت شروع است که در ؟ آنرا با پورت CoM  از PC  و سازگارها منطبق می سازد مهمتر از ظان و مد سریال 1 اجازه می رود تا میزان بود باود متغیر بوده و بوسیله تایمر 1 از 8 . 51  تنظیم می گردد در مد سریال 1 برای هر کاراکتر جمعاً 10 بیت ارسال می شود که اولین بیت شروع به دنبال آن 8 بیت داده و نهایتاً 1 بیت ختم می باشند.

REN : بیت REN ( فعال ساز در یافت ) بیت D4  از ثبات SC . N  است این بیت SC.N4  هم خانواده می شود چون SC . N یک ثبات آدرس پذیر بیتی است وقتی بیت REN بالا باشد اجازه می دهد تا 8 . 51 دریافت شدن در نتیجه اگر بخواهیم داده را ارسال یا دریافت کنیم باید REN، 1 باشد با RENs گیرنده غیر فعال می شود REN s یا s REN به ترتیب با دستورات SETB SC. N 4 و CLRSC.N- 4حاصل می شوند.

TI : TI ( ارسال وقفه ) بیت D1  از ثبات SC . N است این یک پرچم بسیار با اهمیتی در ثبات SC . N است وقتی که 8 . 51 ارسال کاراکتر 8 بیتر را تمام می کند. پرچم T1 را برای اعلام آمادگی در ارسال بایت بهمری 20 را برد.

RI : ( در یافت وقفه) بیت D0 از ثبات SC . N است این بیت هم پرچم مهم دیگری از ثبات SC . N است وقتی که 8 . 51 داده سریال را از طریق RXD  دریافت باشد بیت های شروع و خم تا حذف و بایت باقمیانده را در ثابت SBUL  قرار داد سپس بیت پرچم LRI  به علامت دریافت داده باشد باید دو قبل از محو شدن برداشته شود.

برنامه نویسی 8 . 51 برای ارسال سریال داده

در برنامه نویسی 8 . 51 برای ارسال سریال بایت های کارکتر مراحل زیر باید اجرا شود.

1ـ ثبات TM . D  با مقدار 20 H بار شود که به معز استفاده از تایمر 1 در مد 2 است.

2 ـ TH1  با یکی از مقادیر جدول ( مقادیر ثبات  TH1 تایمر D برای انواع باود آن بار شود.

3 ـ ثبات SC . N با مقدار 50 H  بار میش ود که مد سریال 1 است و در آن یک داده 8 بیتی با یک بیت شروع و یک بیت ختم قاب بندی می شود.

TR1 در 1 قرارداده میشود تا تایمر 1 شروع شود.

5 ـ TI  با دستور CLRTI ؟ می شود.

6 ـ بایت کارکتر ارسالی در ثبات SBUL  نوشته می شود.

7 ـ بیت پرچم TI با دستورJNB TI , X ردیابی می شود تا ارسال کامل کارکتر صورت گرفته باشد .

8 ـ برای ارسال کامل کاراکتر بعد به مرحله 5 بروید.

برنامه ریزی وقفه ها :

در این قسمت ابتدا تفاوت بین سرکشی و وقفه ها را بررسی می کنیم سپس انواع وقفه های 8.51  را توضیح می دهیم. یک میکروکنترلر می تواند چندین دستگاه را سرویس بدهد. برای انجام آن دو راه وجود دارد: روش وقفه و روش سرکشی در روش وقفه هر وقت وسیله به سرویس نیاز داشته باشد. با ارسال یک سیگنال وقفه میکروکنترلر را مطلع میسازد میکروکنترلر پس از دریافت سیگنال وقفه، هر کاری را کنار گذاشته و به وسیله سرویس می دهد برنامه متعلق به وقفه، روال سرویس وقفه (    ISR) نامیده میشود.

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

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

روال سرویس وقفه:

به ازای هر وقفه، باید روال سرویس وقفه (    ISR) وجود داشته باشد وقتی وقفه ای رخ می دهد، میکروکنترلر روال سرویس وقفه را اجرا می کند. به ازای هر وقفه باید مکان که پس در حافظه تعریف شود تا آوری     ISRرا نگه دارد مجموعة حافظه های کنار گذاشته شده برای لکه داری اکسوس های     ISR، جدول بردار دقفه نام دارد.

جدول ص 182 جدول بردار وقفه

مراحل اجزای یک وقفه :

از فعال شدن وقفه، میکروکنترلر دارد مراحل زیر میشود.

1 ـ اجرای دستور جاری را پایان می دهد و اکوس دستور بعدی ( P  C ) را پشته ذخیره می شد.

2 ـ وضعیت جاری همه وقفه های درونی را نیز ذخیره می نماید . ( نه در پشته )

3 ـ به مکان معینی از حافظه به نام جدول بردار وقفه که آدرس روال سرویس وقفه ؟ دارد پرش می کند.

4ـ میکروکنترلری آمادگی ISR  را از جدول بردار وقفه بدست آورده و به آن پرش می کنند آنگاه شروع به اجرای زیر روال سرویس وقفه می کند. تا به آخرین دستور که P ETI  است برسد.

5 ـ پس از اجرای دستور  P ETI میکروکنترلر به مکانی که در آن وقفه را دریافت کرده بود بازی گردان ابتدا آلودی شمارنده برنامه را از پشته با برداشت از دو بایت بالا پشته بازیافت می کند به PC ، فرستنده سپس شروع به اجزای برنامه از آن آدرس می نماید.

شش وقفه در 8 .51

1 ـ Reset  وقتی که پایه است فعال شود 8 .51 به آدرس 0000 پرش کند .

2 ـ در وقفه برای تایمرها کنار گذاشته شده است یکی برای تایمر 0 و دیگری برای تایمر 1 آن حافظه 001 BH , 000 B H

3 ـ دو وقفه برای وقفه های سخت افزاری بیرونی کنار گذاشته شده اند.

برای شماره 12 و 13 در پوست 3 به ترتیب برای وقفه های سخت افزاری 1 NT1 ,  1 NT0 باشند.

4 ـ تبادل داده سریال دارای وقفه های است که متعلق به ارسال و دریافت می باشد.

فعال سازی و غیر فعال سازی وقفه:

پس از ریست، همه وقفه ها غیر فعال شدند و برای اینکه فعال شوند باید وقفه ها را با نرم افزار فعال کرد جمع تر به نام فعال سازی وقفه،  I E  مسئول این توانا سازی و ناتوان این وقفه ها است .

شکل زیر ثبات ؟ را نشان می دهد که یک ثابت آدرس پذیری بیتی است.

شکل ص 183

مراحل فعال سازی یک وقفه:

برای فعال کردن یک وقفه مراحل زیر اجرا می گردد.

1 ـ بیتD 7 از ثابتI E   باید به سطح بالا برده شود تابع ثباتها فعال گردد.

2 ـ اگر E A S1 باشد، وقفه ها فعال شده و هنگامی که بیت های مربوطه به هر وقفهI   در فعال گردد به آن وقفه پاسخ داده خواهند شد اگر باBASشد به هیچ وقفه ای پاسخ داده نمیشود حتی اگر بیت های مربوطه  I در سطح بالا باشند.

برنامه نویسی وقفه های سخت افزای بیرونی

8 .51  دارای دو وقفه سخت افزاری بیرونی است پایه 12 و پایه 13 از 8.51 که برس INT1 , INT0  در نظر گرفته شده اند، برس وقفه ای سخت افزاری به کار رفته اند با فعال شدن این پایه ها 8 .51 سخت هر وضعیتی وقفه یافته و به جدول بردار وقفه برای اجزای روال سرویس وقفه پرش می کند. در این بخش این دو وقفه سخت افزاری بیرونی برس 8 .51 را برس می کند.

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

1 ـ حساس به سطح ـ 2  حساس به لبه

وقفه حساس به سطح :

در مد حساس به سطح، معمولاً پایه های  INT 1 , INT0  در سطح بالا هستند. و اگر یک سیگنال سطح پایین به آنها اعمال شود وقفه را مثال می کند.

وقفه های به لبه به همانطور که ملاحظه شد پس از Reset  8 .51 ، وقفه های INT 1 , INT0 جای به سطح خواهد شد برای تبدیل آنها به نوع حساس به لبه باید بیتهای ثبات TCoN   را برنامه توپ می کند . ثبات TCoN  همراه با دیگر چیزها، بیت های پرچم IT1 , IT0  که تعیین کننده وقفه حساس به سطح یا لبه هستند را نگه می دارد.

IT1 , IT0  به ترتیب بیت های D2 , D0  از ثبات TCoN هستند.

ثبات TcoN از نوع آدرس پذیر بیتی است . پس از ایست هر دو IT1 , IT0 در منطق 0 هستند. به این معنی که وقفه های سخت افزایش پایه های  INT1 , INT0  به سطح حساس هستند با بالا بردن . بیت های IT1 , IT0 به دستوراتی چون SETB  TcoN ,  , SETBTCoN, 0  انجام می شود وقفه ای سخت افزایش بیرونی INT1 , INT0 سیگنال های حساس به لبه خواهند شد.

شکل صفحه190 کشیده شود.

توضیح راجع به سخت افزار سیستم:

قطعات مورد نیاز :

آی سی 8951

آی سی LM324

آی سی MAX232

آی سی 7404

ـ گیرنده فرستنده نوری

ـ ترانزیستور C945 2 عدد

ـ دیود 4148

ـ BUZZER

ـ کریستال 12MHz

ـRs232 ( سوکت )

ـ مقاومتها و خازنهای متفاوت که در شکل شماتیک واضح است

ـ یک کلینشاری برای ایست .

حال به توضیح مختصری در ارتباط با سخت افزار سیستم می پردازیم .

ابتدا به شکل زیر توجه کنید .

دو حالت ؟ حایلر بین فرستنده و گیرنده  وجود ندارد.

دیود با یاس 6/0 دارد و ترانزیستور off  است و LM 32H  که یک مدار مقایسه گر اکتیولو است .

ولتاژ پایه مثبت آن از ولتاژپایه مقدار بزرگتر است و مقایسه گر در حال غیر فعال است.

به محض  قرار گرفتن حائل، دیود خاموش باشد ترانزیستور  روش می شود و ولتاژ باید  از مثبت بزرگتر باشد و مدار مقایسه گرما فعال می شود ( اطلاعات دو مورد آی LM 324  در ضمیمه موجود است.

همچنانکه در بخشهای قبل توضیح داده شد آی MAX232 برای برابری سطوح ولتاژ بین میکروکنترلر 8.51 و پورت سریال است که توضیحات لازم داده شده است و ضمن اطلاعات بیشتر در مورد ساختار Ie  در قسمت ضمیمه وجود دارد.

آی سی 74.4 برس احتیاط در سر راه BUZZER قرار گرفته است که جریان زیادی کشیده نشود BUZZER  فقط هنگامی فعال می شود که حائلی بین فرستنده و گیرنده قرار گیرد و ورودی آن از پورت 1 میکروکنترلر 51. 8 است.

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

توضیح راجع به نرم افزار سیستم :

لازم به توضیح است که دستگاه بارکد خوان برای ارسال اطلاعات به P C  به صورت سریال نیاز به دو نرم افزار دارد.

ـ یک نرم افزار که همان اسمبلی 8.51  است که برای راه اندازی آی سی 8.51 مورد نیاز است .

ـ نرم افزار دوم مربوط به مچ کردن بین P C  و میکروکنترلر است که در این از نرم افزار و پژوال C استفاده گردیده است.

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

که این روش مستلزم آن بود که کارتهای بارکد را نیز خوان تعریف کنیم.

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

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

پس از پی بدن به این منطق به سراغ قسمتهای دیگر دستگاه می رویم .

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

دومین منطق برنامه این است که طریقه کشیدن صحیح کارت از سمت شکافهای مشکی نازک است اگر از سمت شکافهای مشکی پهن کشیده شود کدخوانده نمیشود.

که این قسمت در برنامه با مقایسه گر 255 H  مشخص گردیده است.

می دانیم فضای RAM  همه منظوره از 30H  تا 7FH  است که با در این برنامه از  30H  تا 41H را استفاده می کرده ایم .

و از خانه15 25 رای کد گذاری استفاده کرده ایم .

قسمت اصلی و مهم برنامه هم قسمت کد خوانی است که اعداد ترسین شده در RAM  همه منظوره قرار گیرند آنگاه عدد وجود در اولین بایت را دو برابر کنیم در خانه R   O قرار می دهیم . آنگاه این عدد موجود در R 5   را به عنوان بیس تلقی کرده و خانه ای بالاO RAM  یکی یکی از آن کم کرده اگر کدی ایجاد نکرد صفر و اگر ایجاد کرد 1 و این صفر و یک را در  خانه 15 25 ذخیره می کند که همان کد کارت است.

لازم به توضیح است که منطق 2 برابر کردن به وسیله روش سعی و خطا بدست  آمده است . قسمت بعدی برنامه تبادل کاراکتر ها بین P  C  و میکرواست .

میکرو 5 کاراکتر e , d , c, b , a  را فرستد و P  C دو کاراکتر u , q  را می فرستد .

کاراکتر q ای را که P  C می فرستد برای تست است که آیا ارتباط برقرار است یا نه.

و کاراکتر u  را می فرستد این که میکرو کد ذخیره شده در خویش را برای P C  بفرستد. و کاراکترهای e , d , c, b , a ارسال از میکرو نیز به؟  رابطه یا عدم رابطه بین P C و میکرو است.