اس مضمون میں ہم کمپیوٹر (PC) سے ATMEL مائیکروکنٹرولر کو پروگرام کرنے کے لیے ایک آسان پروگرامر کا سرکٹ ڈایا گرام پیش کر رہے ہیں۔ اس پروگرامر کی مدد سے آپ مندرجہ ذیل مائیکروکنٹرولرز پروگرام کر سکتے ہیں۔ یہ سب 8 بٹ کے مائیکروکنٹرولر ہیں اوران میں فلیش میموری موجود ہے۔
1) | AT89C51 | 2) | AT89C52 | 3) | AT89LV51 |
4) | AT89LV52 | 5) | AT89C1051 | 6) | AT89C2051 |
زیر نظر پروگرامر فلیش میموری کے حامل تمام مائیکروکنٹرولر فنکشن کی سہولت مہیا کرتا ہے جس میں کوڈریڈ, کوڈرائٹ, چپ ایریز, سگنیچر ریڈ اور لاک بٹ رائٹ فلیش شامل ہیں۔ اگر آپ اس مائیکروکنٹرولر پروگرامر کو AT89C51/C52/LV51/LV52 کنٹرولرز کے لیے استعمال کر رہے ہیں توکوڈ رائٹ, چپ ایریز اورلاک بٹ رائٹ فنکشن 5V0 12V 5V0 یا 12V پر سرانجام دیئے جا سکتے ہیں۔ اس طرح سرکٹ کی ضروریات کے مطابق سپلائی وولٹیج متعین کئے جاسکتے ہیں۔
ایسے مائیکروکنٹرولرز جن کے نمبر کے آخر میں "5" موجود ہے صرف 5V0 پر کام کرنے کے لیے استعمال کئے جاسکتے ہیں۔ جن پر یہ نمبر موجود نہیں ہوتا وہ مائیکروکنٹرولر معیاری 12V پر کام کرنے کے لیے استعمال کئے جاتے ہیں۔
زیر نظر پروگرامر آئی بی ایم پی سی سے منسلک کیا جا سکتا ہے۔ پروگرام کو کمپیوٹر کی پیرلل پورٹ سے منسلک کرنے کے لیے ڈیزائن کیا گیا ہے۔ پروگرامر سرکٹ کے لیے درکار پاور, بیرونی پاور سپلائی سے مہیا کی جا سکتی ہے۔
زیر نظر پروگرامر کو سافٹ وئر کنٹرول کرتا ہے۔ یہ سافٹ وئر ہوسٹ کمپیوٹر پر چلتا ہے۔ مائیکروکنٹرولر AT89C51/C52 اور C1051/C2051 کے لیے کنٹرول پروگرام مائیکرو سافٹ C لینگوئج میں لکھا گیا ہے۔ مائیکروکنٹرولر AT89LV51 اور AT89LV52 کے لیے الگ سے کوئی کنٹرول پروگرام موجود نہیں ہے۔ یہ AT89C51/C52 ہی کے پروگرام سے کنٹرول ہوتے ہیں۔ اس مضمون میں جہاں مائیکروکنٹرولر AT89C51/C52 کا حوالہ دیا گیا ہے اسے AT89LV51/LV52 کے لیے بھی سمجھا جائے۔
تمام پروگرامر کنٹرول سافٹ وئرز ڈاس DOS سے چلیں گے۔ پروگرام کانام لکھ کر آخر میں''LPT1'' یا ''LPT2'' (جو پیرلل پورٹ بھی اس مقصد کے لیے استعمال کی جا رہی ہو) لکھیں۔ اگر آپ پیرلل پورٹ واضح نہیں کریں گے تو پروگرام ایرر میسیج دے گا۔ کنٹرول پروگرام مینو سے چلنے والے ہیں اور ان میں مندرجہ فنکشن دستیاب ہیں۔
مائیکروکنٹرولر کی کوڈ میموری کو صاف کرنے کے لیے۔ اس عمل کے اختتام پر کامیاب عمل یا ناکام عمل کی تصدیق خودکار طور پر نہیں ہوتی۔
یہ مخصوص کردہ فائل میں سے پروگرام (بائنری کوڈ) کو پڑھ کرمائیکروکنٹرولر کی میموری میں لکھنے کے لیے ہے۔ پروگرام چلانے کے بعد اس فنکشن کو منتخب کرنے پر پروگرام آپ سے فائل کا نام پوچھے گا۔ فائل کے نام میں آپ پاتھ اور فائل ایکس ٹینشن بھی دے سکتے ہیں۔
فائل صرف وہی قابل قبول ہوگی جس میں بائنری ڈیٹا موجود ہوگا۔ہیکس ڈیٹا فائل قابل قبول نہیں ہوگی۔ اس فائل میں موجود پہلی بائٹ کنٹرولر کی میموری کی پہلی لو کیشن پر پروگرام کی جائے گی۔ ہر اگلی بائٹ میموری کی اگلی لوکیشن پر ترتیب وار انداز میں پروگرام ہوگی۔ یہ عمل اس وقت تک جاری رہے گا جب تک میموری کی آخری لوکیشن نہ آجائے یا پھر فائل میں سے ڈیٹا ختم نہ ہو جائے۔
مائیکروکنٹرولر کی میموری میں کوئی ڈیٹا موجود ہے یا نہیں, پروگرامنگ عمل اس سے قطع نظر جاری رہے گا۔ بلینک چیک خودکار طور پر سرانجام نہیں پاتا اور نہ ہی پروگرامنگ کے بعد میموری کے ڈیٹا کا فائل کے ڈیٹا سے خودکار موازنہ سرانجام پاتا ہے۔
کنٹرول پروگرام میں پروگرامنگ کا بصری اظہار کرنے کا انتظام موجود نہیں ہے۔ البتہ پروگرامنگ کا عمل مکمل ہونے کے بعد کنٹرول مینو دوبارہ نمودار ہو جائے گا۔
مینو کا یہ فنکشن کوڈ میموری کو فائل کے مندرجات کے مطابق جانچتا ہے اور اس طرح دونوں کا موازنہ کرتا ہے۔ یہ مینو بھی فائل کا نام مانگتا ہے جس میں آپ پاتھ اور فائل ایکس ٹینشن بھی دے سکتے ہیں۔ پروگرامر کو بائنری فائل درکار ہو گی۔ یہاں پر ہیکس ڈیٹا کی حامل فائل کام نہیں کرے گی۔فائل کی پہلی بائٹ کا موازنہ میموری لو کیشن کی پہلی بائٹ سے کیا جائے گا اور اسی ترتیب میں ہر اگلی بائٹ کا موازنہ کیا جائے گا۔ یہ عمل اس وقت تک جاری رہے گاجب تک میموری ختم نہ ہو جائے یا پروگرام کی آخری بائٹ نہ آ جائے۔
اگر کسی لوکیشن کا ڈیٹا فائل کے ڈیٹا سے مطابقت کا حامل نہ ہوا تو اس لوکیشن کا ایڈریس اور بائٹ کے مندرجات اسکرین پر ظاہر ہو جائیں گے۔ اگر دونوں میں کوئی فرق نہیں ہے تو کچھ بھی نمودار نہیں ہوگا۔
مینو کا یہ فنکشن مائیکروکنٹرولر کی میموری میں موجود ڈیٹا کو ایک فائل میں محفوظ کر نے کے لیے استعمال کیا جا سکتا ہے۔ پروگرام اس فائل کا نام پوچھے گا جس میں میموری کا ڈیٹا محفوظ کرنا ہے۔ اس میں بائٹس کی تعداد میموری لوکیشن کی تعداد کے مطابق ہوگی۔
یہ فنکشن چیک کرتا ہے کہ مائیکروکنٹرولر کی میموری کی تمام لوکیشن کے مندرجات '1' ہیں یا نہیں۔ چیکنگ کے بعداگر مائیکرو کنٹرولر کی میموری کی ہر لوکیشن میں '1' موجود ہے تو پاس Pass بصورت دیگر فیل Fail کی نشاندہی ہوتی ہے۔ پاس آنے کی صورت میں مائیکرو کنٹرولر بلینک تصور کیا جائے گا جس میں نئی بائنری فائل محفوظ کی جا سکتی ہے۔
سگنیچر بائٹ کے مندرجات پڑھنے اور ڈسپلے (نمودار) کرنے کے لیے یہ فنکشن استعمال کیا جاسکتا ہے۔ سگنیچر بائٹ کی تعداد اور ان کے متوقع مندرجات کا انحصار مائیکروکنٹرولر کی نوعیت پر ہے۔ مزید معلومات کے لیے متعلقہ مائیکروکنٹرولر کی ڈیٹا شیٹ دیکھی جا سکتی ہے۔
یہ فنکشن متعلقہ لاک بٹ کو سیٹ (یعنی لاک) کرتا ہے۔واضح رہے کہ AT89C1051/C2051 میں صرف دو لاک بٹس ہیں جبکہ AT89C51/LV51 اور AT89C52/LV52 میں تین لاک بٹس ہیں۔
کنٹرولر پروگرامر پروگرام کو بند کرنے کے لیے۔
اس پروگرامر کے لیے سافٹ وئر ATMEL بلیٹن بورڈ سروس BBS سے دستیاب ہے۔ ان کا ایڈریس یہ ہے۔ 408-436-4309
مائیکروکنٹرولر AT89C51 اور AT89C52 کے لیے تیار کردہ کنٹرول پروگرام دو اقسام کا ہے۔ سسٹم پر انحصار کرنے والا اور سسٹم سے آزاد۔ سسٹم پر انحصار کرنے سے مراد یہ ہے کہ اس پروگرام کو جس پرسنل کمپیوٹر سسٹم پر چلایا جائے گا یہ اس سسٹم پر انحصار کرتے ہوئے کام کرے گا۔ سسٹم سے آزاد کا مطلب یہ ہے کہ یہ پروگرام جس پرسنل کمپیوٹر سسٹم پر چلایا جائے گا یہ اس سسٹم پر انحصار نہیں کرے گا۔سسٹم پر انحصار کرنے والے پروگرام میں مطلوبہ تاخیری وقفہ جات(ڈیلے)، سافٹ وئر ٹائمنگ لوپ پر منحصر ہوں گے۔ ان کا وقفہ استعمال کردہ کمپیوٹر کی اسپیڈ پر منحصر ہوگا اور اگر کمپیوٹر تیزرفتار رہے تو وقفہ کم ہوگا۔ زیر نظر پروگرامر کے سافٹ وئر کو 80386 سسٹم پر 33MHz رفتار کے ساتھ جانچا گیا تھا۔ دوسرے سسٹم پر چلانے کے لیے سافٹ وئر میں تبدیلی کی ضرورت ہوگی۔ یہ طریقہ کار اپنی سادگی اور آسانی کی بنا پر منتخب کیا گیا تھا۔
سسٹم سے آزادانہ کام کرنے والے سافٹ وئر کے لیے پروگرام ایبل انٹرول ٹائمر درکار ہوگا جسے سسٹم کے ہارڈوئر میں جوڑنا پڑے گا۔ اس صورت میں ٹائم ڈیلے یعنی تاخیری وقفہ سسٹم کی رفتار سے متاثر نہیں ہوگا۔ کنٹرول پروگرام چلانے کے بعد ٹائمر کو اس طرح متعین کیا جائے گا کہ مطلوبہ تاخیری وقفے حاصل ہو سکیں۔ پروگرام بند کرنے سے پہلے ٹائمر کو اپنی اصل حالت پر واپس متعین کرنا ہوگا۔
اس امر کو یقینی بنانے کے لیے کہ ٹائمر کو اصل حالت میں واپس لانے سے پہلے پروگرام بند نہ ہو جائے۔ CTRL-Cاور CTRL-BREAK کیز کو غیر فعال بنایا گیا ہے۔ اس کا مطلب یہ ہوا کہ جب تک مینو سے Exit کمانڈ کے ذریعے پروگرام کو بند نہ کیا جائے یا سسٹم کی پاور آف کرکے اسے ری بوٹ نہ کیا جائے۔ پروگرام بند نہیں ہوگا۔
ٹائمر کنٹرول بورڈ، 8086 اسمبلی ماڈیول کے طور پر مہیا کیا گیا ہے جسے کمپائل کردہ کنٹرول پروگرام سے جوڑا (Link کیا) جا سکتا ہے۔ٹائمر کی شرح 0.838 مائیکروسیکنڈ ہے تاہم کم سے کم عملی تاخیری وقفہ سسٹم اور سافٹ وئر دونوں مل کر متعین کریں گے۔ ٹائمر کوڈ کے ذریعے یہ یقینی بنایا گیا ہے کہ پیدا ہونے والا تاخیری وقفہ مطلوبہ وقفے سے کم نہ ہو۔
مائیکروکنٹرولر AT89C1051/C2051 کے لیے مہیا کردہ کنٹرول پروگرام سسٹم سے آزادانہ کام کرتا ہے۔
پروگرامر کے لیے سرکٹ ڈایا گرام شکل نمبر 1 اور شکل نمبر 2 میں دکھایا گیا ہے۔ یہ پروگرامر، کمپیوٹر انٹرفیس اور سوئچ ایبل پاور اسپلائی سرکٹ پر مشتمل ہے۔ سگنل سیکوئنس اور ٹائمنگ جو پروگرامنگ کے لیے درکار ہوتی ہے، سافٹ وئر کنٹرول کے تحت ہوسٹ کمپیوٹر پیدا کرتا ہے۔ مائیکروکنٹرولر AT89C51/C52 کی پروگرامنگ کے لیے 40 پن کی زیروانسرشن فورس ZIF ساکٹ مہیا کی گئی ہے۔ سرکٹ ڈایا گرام میں بائی پاس کپیسیٹر درکار ہوں گے۔ یہ TTL اجزاء کے لیے لگائے جائیں گے تاہم سرکٹ ڈایا گرام میں انہیں نہیں دکھایا گیا۔
پروگرامر کے سرکٹ اور مائیکروکنٹرولر کے لیے پاور سپلائی 5V کی متعین (فکسڈ) سپلائی ہے۔ دوسری سپلائی 5Vاور 12V (قابل انتخاب) فراہم کرتی ہے جو پروگرامنگ کے دوران استعمال کی جائے گی۔ ویری ایبل سپلائی کی آؤٹ پٹ پر ٹرانزسٹر کا اضافہ کرکے تیسرے درجے (تھرڈ لیول) کا گراؤنڈ مہیا کیا گیا ہے۔ یہ مائیکروکنٹرولر AT89C1051/C2051 کو پروگرام کرتے وقت استعمال ہوگا۔
ویری ایبل پاور اسپلائی سرکٹ میں استعمال کردہ رزسٹرز کی قدریں متعین کرنے کے لیے وولٹیج ریگولیٹر LM317 کی ڈیٹا شیٹ میں مہیا کی گئی مساواتیں استعمال کی گئی ہیں۔
پروگرامر کو کمپیوٹر کے ساتھ منسلک کرنے کے لیے 25 تاروں والی ربن کیبل استعمال کی گئی تھی۔ اس کیبل کی لمبائی ممکنہ حد تک کم رکھیں۔ یہ لمبائی تین فٹ سے زیادہ ہرگز نہ رکھیں۔
اصل پیرلل انٹرفیس جو IBM کی طرف سے مہیا کیا گیا ہے، ڈیٹا کی دو طرفہ منتقلی کے لیے موزوں قرار نہیں دیا گیا تاہم اس انٹرفیس کو جس انداز میں ڈیزائن کیا گیا ہے اس کے باعث ڈیٹا کی دو طرفہ (بائی ڈائریکشنل) منتقلی ممکن ہے۔ اس کے لیے شرط یہ ہے کہ کمپیوٹر میں معیاری پیرلل انٹرفیس موجود ہو۔ واضح رہے کہ معیاری پیرلل انٹرفیس بائی ڈائریکشنل ہوتا ہے۔
اگر زیر نظر پروگرامر مائیکروکنٹرولر کی میموری میں ڈیٹا منتقل کردے لیکن اسے پڑھنے یا ویری فائی کرنے میں کامیاب نہ ہوسکے تو کمپیوٹر کا پیرلل انٹرفیس غیر معیاری نوعیت کا ہوگا یعنی بائی ڈائریکشنل نہیں ہوگا۔ اس صورت میں آپ شکل نمبر 4 اورشکل نمبر 5 میں دیا گیا پیرلل انٹرفیس استعمال کرکے اس نقص کو دور کرسکتے ہیں یہ پیرلل انٹرفیس بائی ڈائریکشنل یا دو طرفہ عمل کے لیے موزوں ہے اور زیر نظر پروگرامر سے مطابقت کا حامل ہے۔
یہ پیرلل انٹرفیس LPT1 کے طور پر ایڈریس 378-37F یا LPT2 کے طور پر ایڈریس 278-27F پر استعمال کیا جا سکتا ہے۔ چونکہ یہ انٹرفیس سرکٹ ہے اور اسے خاص طور پر زیر نظر پروگرامر کے لیے تیارکیا گیا ہے چنانچہ اسے بطور پرنٹر انٹرفیس استعمال نہیں کیا جا سکتا۔
تمام آئی سیز کے لیے 0µ1 قدر کا بائی پاس کپیسیٹر ضرور استعمال کریں۔