PIC ٹیوٹوریل۔ رجسٹروں سے لے کر رکاوٹوں تک

مسائل کو ختم کرنے کے لئے ہمارے آلے کو آزمائیں





پی آئی سی پروگرامنگ کی لمحے کی تفصیلات میں جانے سے پہلے ، پروگرامنگ کے کچھ اچھ .ے طریقوں کو سیکھنا پہلے ضروری ہوگا۔

رجسٹروں کو سمجھنا

فرض کریں کہ آپ پروگرام کے کسی بھی مقام پر ایک (سیمیکولن) ٹائپ کرتے ہیں ، اس نیم دراز کے بعد آنے والے سب کو کمپائلر نظر انداز کردے گا ، جب تک کہ یقینا گاڑی واپس نہیں آ جاتی ہے۔



مذکورہ بالا خصوصیت ہمیں ایسے تبصرے یا ریمارکس شامل کرنے کی اجازت دیتی ہے کہ وہ پروگرام کا حصہ نہیں بن جاتے ہیں لیکن اس کے ساتھ موجود تبصروں کی مدد سے پروگرام کی شناخت کرنے میں ہماری مدد کرتے ہیں۔ کسی بھی آایسی پروگرامنگ کے دوران تبصرے رکھنا ایک تجویز کردہ عمل ہے۔

کورس میں اگلی اہم چیز مختلف مستقل ناموں کو نام تفویض کرنا ہے (آپ انہیں بعد میں تفصیل سے سیکھیں گے)۔ اس اعدادوشمار کے ساتھ الجھنے کی بجائے اس کو سمجھنا آسان بناتا ہے کہ کیا لکھا جا رہا ہے ، یا اس میں شامل اقدار کے بارے میں۔



مذکورہ بالا فوری طور پر شناخت کے ل actual اصل ناموں کی شکل میں ہونا چاہئے ، مثال کے طور پر ، COUNT ، یہ نوٹ کرنا ضروری ہوگا کہ یہاں تمام بڑے حرفوں کو اس کو الگ کرنے کے لئے استعمال کیا جاتا ہے اور یہ بھی اشارہ کرتا ہے کہ یہ ایک مستقل قدر ہے۔


جیسا کہ ہم دیکھ سکتے ہیں ، مذکورہ بالا نیموں سے بنے ہوئے خانے کی شکل میں کیا گیا ہے جس سے یہ صاف نظر آتا ہے۔ اس کے علاوہ کاغذ پر بھی پروگرام کو دستاویزی شکل دینے کی کوشش کریں ، اس مشق سے معاملات کو قدم بہ قدم سمجھنے میں مدد ملے گی۔

2. رجسٹر.

پی آئی سی میں رجسٹر ایک ایسا علاقہ ہے جو تحریری تفصیلات کو قبول کرتا ہے اور ساتھ ہی اس سے پڑھنے کی بھی اجازت دیتا ہے۔ آپ اس کا موازنہ کاغذ کے شیٹ سے کرسکتے ہیں جہاں آپ مشمولات کو تصور کرسکتے ہیں اور اس پر لکھ کر مزید اضافہ کرسکتے ہیں۔

نیچے دیئے گئے اعداد و شمار میں ایک عام رجسٹر فائل کا نقشہ دکھایا گیا ہے جس میں ایک PIC16F84 شامل ہے۔ فارمیٹ ایسی چیز نہیں ہے جو دراصل پی آئی سی کے اندر رکھی گئی ہے ، یہ صرف اس بات کی نشاندہی کرنا ہے کہ چپ کے اندر بٹس کا انتظام کیسے کیا جاسکتا ہے اور اس میں شامل کچھ کمانڈوں کو سمجھنا ہے۔

آپ دیکھ سکتے ہیں کہ یہ بنیادی طور پر بینک 0 اور بینک 1 میں تقسیم ہے۔ بینک 1 پی آئی سی کے اصل کام کو کنٹرول کرنے کے لئے ذمہ دار ہے ، مثال کے طور پر یہ پی آئی سی کو بتاتا ہے جو پورٹ اے میں بٹس کو ان پٹ کے طور پر تفویض کیا جاتا ہے اور جو نتائج کے طور پر ہوتے ہیں۔

بینک 2 صرف معلومات میں ہیرا پھیری کے لئے ہے۔

آئیے ، مندرجہ ذیل مثال کے ذریعہ اس کو سمجھیں:

فرض کریں کہ ہم PortA اعلی پر تھوڑا سا تفویض کرنا چاہتے ہیں۔ اس کے لئے ہمیں پہلے آؤٹ پٹ کی شکل میں پورٹ اے پر مخصوص بٹ یا پن کو ترتیب دینے کے لئے بینک 1 میں جانے کی ضرورت ہوگی۔ اس کے بعد ہم بینک 0 کی طرف لوٹتے ہیں اور اس مخصوص پن پر ایک منطق 1 (بٹ 1) دیتے ہیں۔

سب سے عام رجسٹر جو ہم بینک 1 میں استعمال کرنا چاہتے ہیں وہ ہیں اسٹیٹس ، ٹرزا اور ٹرآس بی۔

اسٹیٹس ہمیں بینک 0 میں واپس آنے میں مدد کرتا ہے ، ٹرزا ہمیں یہ منتخب کرنے کی اجازت دیتی ہے کہ پورٹ اے میں کون سی پن آؤٹ پٹ ہے اور کون سے ان پٹ ہوسکتی ہے ، جبکہ ٹرآس بی پورٹ بی میں آؤٹ پٹ اور ان پٹ پن کے درمیان انتخاب کرنے میں سہولت فراہم کرتی ہے۔ بینک 1 پر پلٹائیں۔

آئیے مندرجہ ذیل تفصیل کے ساتھ پورے تصور کا خلاصہ کریں:

حالت:

بینک 0 سے بینک 1 میں تبدیل ہونے کے ل we ہم STATUS رجسٹر کا حکم دیتے ہیں۔ اس کا اطلاق STATUS رجسٹر کے 1 # پر بٹ نمبر 1 کے ذریعہ کیا جاتا ہے۔ بینک 0 میں واپس آنے کے ل we ، ہم STATUS رجسٹر کا سا 5 سا حصہ تفویض کرتے ہیں۔ STATUS رجسٹر کو 03h ایڈریس پر رکھا جاتا ہے ، یہاں اس کی علامت ہے ہیکساڈسمل میں ہوسکتا ہے۔

ٹرزا اور ٹرآسبی:

یہ اسی جگہ پر 85h اور 86h ایڈریس پر واقع ہیں۔ پن کو آؤٹ پٹ یا ان پٹ کے بطور پروگرام کرنے کے ل we ، ہم صرف ایک صفر یا کسی ایک کو مخصوص بٹ کو رجسٹر میں فراہم کرتے ہیں۔ اب یہ بائنری یا ہیکس کے ذریعہ دو طریقوں سے ہوسکتا ہے۔ اگر کوئی پیرامیٹر کو تبدیل کرنے سے قاصر ہے تو وہ اقدار کو عملی جامہ پہنانے کے لئے سائنسی کیلکولیٹر لے سکتا ہے۔

اب ہمارے پاس پورٹ اے میں 5 پن ہیں ، جو 5 پنوں کے مساوی ہیں۔ اگر ہم پنوں میں سے کسی کو بطور آؤٹ ٹھیک کرنے کا ارادہ رکھتے ہیں تو ہم خاص کو تھوڑا سا '1' فراہم کرتے ہیں۔

اگر ہم پنوں میں سے ایک کو آؤٹ پٹ کے طور پر تفویض کرنا چاہتے ہیں تو ، ہم مخصوص پن کو '0' پر مقرر کریں گے۔ بٹس بالکل اسی طرح بٹ سے مطابقت رکھتے ہیں ، یا زیادہ ٹھیک تھوڑا سا 0 RA ہوتا ہے ، تھوڑا سا 1 RA1 ، تھوڑا سا 2 = RA2 اور اسی طرح ہوتا ہے۔ آئیے اس کو اس طرح سمجھیں:

فرض کریں کہ آپ RA0 ، RA3 اور RA4 کو آؤٹ پٹ کے طور پر ٹھیک کرنا چاہتے ہیں ، جبکہ RA1 / RA2 i / PS کے طور پر ، آپ 00110 (06h) بھیج کر یہ کام کریں گے۔ چیک کریں کہ بٹ 0 دائیں جانب ہے جیسا کہ یہاں اشارہ کیا گیا ہے:

پورٹ اے پن RA4 RA3 RA2 RA1 RA0

بٹ نمبر 4 3 2 1 0

ثنائی 0 0 1 1 0

TRISB کا بھی یہی حال ہے۔

پورٹا اور پورٹ بی

آؤٹ پٹ ہائی میں سے کسی کو ہٹانے کے ل we ، ہم صرف اپنے پورٹا یا پورٹ بی رجسٹر میں '1' پیش کرتے ہیں۔ ٹرزا اور ٹرآس بی کے رجسٹروں کے لئے بھی یکساں طریقہ کار اختیار کیا جاسکتا ہے۔ اس سے پہلے کہ ہم اپنی پہلی مثال کے کوڈنگ میں تیزی لائیں ، آئیے صرف مزید رجسٹروں کے کوپ کو سمجھیں ، جیسے: ڈبلیو اور ایف۔

ڈبلیو اور ایف

ڈبلیو رجسٹر ایک عام رجسٹر ہے جو آپ کو اپنی پسند کی کوئی قیمت تفویض کرنے کے قابل بناتا ہے۔ جیسے ہی آپ W کو ایک حد تفویض کرتے ہیں ، آپ اسے کسی اور قدر میں شامل کرکے یا اسے آگے بڑھ سکتے ہیں۔ تفویض کردہ ایک اور قیمت کے ساتھ ، تفصیلات ڈبلیو پر آسانی سے اوور رٹ ہوجاتی ہیں۔

ایف رجسٹر اپنا تحریری معاملہ کسی رجسٹر کے پاس بھیج دیتا ہے۔ ہمیں اس ایف رجسٹر سے کسی رجسٹر کے اوپر کوئی قیمت تفویض کرنے کی ضرورت ہوگی ، اسٹیٹس یا ٹرزا رجسٹر سے زیادہ ہوسکتی ہے ، کیونکہ یہ ہمیں اقدار کو براہ راست ان پر ڈالنے کی اجازت نہیں دیں گے۔ ایک مثال پروگرام

آئیے مندرجہ ذیل مثال کے کوڈ کی جانچ کرتے ہیں جس سے ہمیں یہ معلوم ہوگا کہ مذکورہ بالا ہدایات کو کس طرح نافذ کیا جاتا ہے اور وہ بھی کورس کی کچھ ہدایات کا مشاہدہ کریں گے۔

آئیے پورٹ اے کو ٹھیک کرکے شروع کریں جیسا کہ اوپر بتایا گیا ہے۔

اس کے ل we ہمیں بینک 0 سے بینک 1 میں شفٹ کرنے کی ضرورت ہے ، اس کا پتہ 03h پر واقع STATUS رجسٹر قائم کرکے ، 5 سے 1 تک کیا جاسکتا ہے۔

بی ایس ایف 03 ایچ ، 5

بی ایس ایف کا مطلب ہے بٹ سیٹ ایف۔ ہم اس ہدایت کے بعد دو نمبر استعمال کر رہے ہیں - 03h ، جو STATUS رجسٹر پتہ ہے ، اور نمبر 5 جو بٹ نمبر کے مساوی ہے۔

تو ، جو ہم کہہ رہے ہیں وہ ہے 'ایڈریس 03h to 1' میں بٹ 5 سیٹ کریں۔

اب ہم بینک 1 میں ہیں۔

MOVLW 00110b

ہم بائنری ویلیو 00110 ڈال رہے ہیں (حرف ب کا مطلب نمبر بائنری میں ہے) ہمارے عام مقصد کے اندراج میں ڈبلیو۔ میں یقینا this یہ کام ہیکس میں کرسکتا تھا ، ایسی صورت میں ہماری ہدایت یہ ہوگی:

MOVLW 06h

یا تو کام کرتا ہے۔ موویل ڈبلیو کا مطلب ہے ‘منتقل ادبی قیمت میں ڈبلیو’ ، جس کا مطلب انگریزی میں وہ قدر ڈال دی جاتی ہے جو براہ راست W کے اندراج میں درج ہوتی ہے۔

اب ہمیں بندرگاہ قائم کرنے کے لئے یہ قیمت اپنے ٹرزا رجسٹر پر ڈالنے کی ضرورت ہے۔

MOVWF 85h

یہ ہدایت اشارہ کرتی ہے کہ 'W کے مشمولات کو رجسٹرڈ ایڈریس پرجائے جو اس کے بعد چلتا ہے' ، اس مثال میں پتہ ٹرزا سے مراد ہے۔

ہمارا ٹرزا رجسٹر اس مقام پر ہے جس کا حجم 00110 ہے ، یا گرافک انداز میں پیش کیا گیا ہے:

پورٹ اے پن RA4 RA3 RA2 RA1 RA0

ثنائی 0 0 1 1 0

ان پٹ / آؤٹ پٹ O O I I O

لہذا اب ہمارے پاس ہمارے پورٹ اے پن ہیں ، کسی ایک معلومات کو ایڈجسٹ کرنے کے ل we ہمیں بینک 0 میں واپس جانا ہوگا۔

بی سی ایف 03 ایچ ، 5

یہ ہدایات بی ایس ایف کے ریورس کو پورا کرتی ہے۔ اس کا مطلب ہے 'Bit Clear F'۔ نمبروں کی ایک جوڑی جو مطابقت رکھتی ہے وہ رجسٹر کا پتہ ہے ، یہاں STATUS رجسٹر ، نیز بٹ فگر ، اس واقعہ میں ساڑھے پانچ۔ جو کچھ ہم نے فی الحال مکمل کیا ہے ، وہ ہمارے پر پانچ سے واضح ہے

STATUS 0 پر اندراج کریں

ہم اس وقت بینک 0 میں واپس آئے ہیں۔
ایک ہی بلاک میں درج ذیل کوڈ ہے:

BSF 03h، 5 بینک 1 پر جائیں
MOVLW 06h 00110 ڈبلیو میں ڈالیں
MOVWF 85h ٹرزا پر 00110 منتقل کریں
بی سی ایف 03 ح ، 5 بینک 0 پر واپس آجائیں

آخری ہدایات کے اندر ، ہم نے آپ کو ممکنہ طور پر ان پٹ یا آؤٹ پٹ ہونے کی وجہ سے PIC پر IO پورٹ پن قائم کرنے کے طریقے کی تصدیق کی ہے۔

اس کورس کے ذریعے ، میں بندرگاہوں پر ڈیٹا بھیجنے میں آپ کی مدد کرتا ہوں۔

بندرگاہوں کو ڈیٹا بھیجنا

اس کے بعد کے ٹیوٹوریل میں ، ہم ایک ایل ای ڈی چمکاتے ہوئے مکمل کرنے جا رہے ہیں جس میں ایک مکمل پروگرام کی تفصیل اور سیدھے سرکٹ آریگرام پر مشتمل ہے تاکہ آپ PIC کو ٹھیک طرح سے کارکردگی کا مظاہرہ کرتے ہوئے دیکھ سکیں جو ہم اس کی توقع کرتے ہیں۔

نیچے ملنے والے نتائج کے ساتھ اپنے PIC کو اکٹھا کرنے اور پروگرام کرنے کی کوشش نہ کریں ، کیونکہ وہ صرف عکاسی ہیں۔ ابتدائی طور پر ، ہم پورٹ A بٹ 2 کو آؤٹ پٹ کے طور پر قائم کریں گے۔

یہ پچھلی ہدایت سے قابل شناخت ہوسکتی ہے۔ اس کا واحد فرق یہ ہوسکتا ہے کہ ہم نے A پر ہر پنوں کو آؤٹ پٹ کے طور پر طے کیا ہے ، ٹر اسٹیٹ رجسٹر کو 0h کی فراہمی کے ذریعے۔ تو اب اسے کیا کرنا چاہئے ایل ای ڈی کو تبدیل کرنا ہے۔

ہم اس میں سے ایک پن (جو ایل ای ڈی کے ساتھ منسلک ہے) اونچی اونچی میز پر طے کرتے ہوئے کرتے ہیں۔ اسے الگ سے سمجھنے کے لئے ، ہم پن پر ایک ‘1’ لگاتے ہیں۔ یہ بالکل ٹھیک اسی طرح سے انجام پائے ہیں (ہر لائن کی وضاحت کے لئے تبصرے دیکھیں):

لہذا ، اب جو ہم نے حاصل کیا ہے وہ یہ ہے کہ ایل ای ڈی کو ایک بار بند کریں۔ ہماری خواہش یہ ہے کہ ایل ای ڈی مسلسل بعد میں آن آف ہوجائے۔

ہم شروع میں واپسی کے پروگرام کو حاصل کرکے اس کو حاصل کرتے ہیں۔ ہم شروع میں اپنے پروگرام کے آغاز پر ایک ٹیگ قائم کرکے اس کام کو انجام دیتے ہیں ، اس کے بعد پروگرام کو وہاں سے آگے بڑھنے کی اطلاع دیتے ہیں۔ ہم کسی ٹیگ کو بالکل سیدھے ساتھ واضح کرتے ہیں۔

ہم کسی اصطلاح میں کلید بناتے ہیں ، اگلا کوڈ ٹائپ کریں ، کہتے ہیں۔

جیسا کہ ظاہر کیا جارہا ہے ، ہم نے پروگرام کے آغاز میں فوری طور پر اظہار خیال ’اسٹارٹ‘ کا تذکرہ کیا۔

اگلا ، پروگرام کے بالکل اختتام پر ہم نے واضح طور پر ’گوٹو اسٹارٹ‘ کا تذکرہ کیا۔ ’گوٹو‘ کی ہدایت صرف وہی کارکردگی کا مظاہرہ کرتی ہے جو اس کا اعلان کرتی ہے۔

یہ پروگرام مستقل طور پر ایل ای ڈی کو سوئچ اور آف کرتا ہے جب بھی ہم سرکٹ کو طاقتور کرتے ہیں ، جب ہم بجلی ہٹاتے ہیں تو اسے بند کردیتے ہیں۔ ہوسکتا ہے کہ ہمیں دوبارہ اپنے پروگرام کی جانچ پڑتال کرنی چاہئے۔

یقینی طور پر ہم نے تبصرے کو چھوڑ دیا ہے ، تاہم ہم اب بھی ہدایات اور اعداد کا مشاہدہ کرسکتے ہیں۔

اگر آپ پروگرام کو دشواری سے دور کرنے کی کوشش کرتے ہو اور کوڈ لکھتے ہو تو آپ نے پتوں کا سبھی حفظ کرلیا ہو تو بعد میں یہ قدرے حیرت زدہ ہوسکتی ہے۔

اگرچہ تبصرے رکھے جاسکتے ہیں لیکن پھر بھی یہ تھوڑا سا بے ترتیبی کا باعث بن سکتا ہے۔ اس کے لئے نمبروں کا نام لینے کی ضرورت ہوگی اور ممکن ہے کہ یہ کسی اضافی ہدایات کے ذریعہ انجام پائے: 'برابر' 'برابر' تعلیم سے پتہ چلتا ہے کہ کچھ چیزیں کسی دوسری چیز کے برابر ہوسکتی ہیں۔

ہوسکتا ہے کہ یہ PIC کے لئے ہدایت نہ ہو بلکہ جمع کرنے والے کے لئے ہو۔ یہ ہدایات رجسٹر ایڈریس لوکیشن ، یا کسی پروگرامنگ اصطلاح میں مستقل طور پر نام تفویض کرنے میں سہولت فراہم کرتی ہے۔

ہم اپنے پروگرام کے لئے کچھ ثابت قدمی قائم کریں گے اور یہ بھی مشاہدہ کریں گے کہ یہ پروگرام کتنا سیدھا سادا ہے۔

چونکہ ہم نے مستقل اقدار کو طے کیا ہے کہ ہم انہیں اپنے پروگرام میں ترتیب دے کر آگے بڑھ سکتے ہیں۔ مستقل اقدار کو ان کے استعمال سے پہلے نامزد کرنے کی ضرورت ہے۔

لہذا پروگرام کے آغاز میں ہمیشہ ان کی پوزیشن یقینی بنائیں۔ سابقہ ​​لیبلنگ کا تازہ ترین سے موازنہ کرنے کے ل We ، ہم تبصرے کو چھوڑ کر ایک بار پھر پروگرام کو دوبارہ تحریر کریں گے۔

ہوسکتا ہے کہ آپ یہ جاننے کے اہل ہوں کہ مستقل پروگرام سے قدرے آسان تفہیم کو اہل بنارہے ہیں ، تاہم ہم ابھی تک تبصرے کے بغیر ہیں ، اگرچہ ہم ابھی تکمیل تکمیل تکمیل تک نہیں ہوئے ہیں۔

ہمارے چمکتا ہوا ایل ای ڈی پروگرام کی معمولی کمی ہوسکتی ہے۔
ہر ہدایت کو ختم کرنے کے لئے 1 گھڑی کی ترتیب کی ضرورت ہوتی ہے۔ اگر ہم 4 میگا ہرٹز کرسٹل استعمال کررہے ہیں تو ، پھر ہر ہدایت 1 / 4MHz ، یا 1uS کو ختم کرنے کے ل. مطالبہ کرتی ہے۔

چونکہ ہم صرف پانچ ہدایات پر کام کر رہے ہیں ، لہذا ایل ای ڈی 5uS میں ہی چالو ہوجائے گی۔ لوگوں کے نوٹ کرنے کے ل This یہ بہت تیز رفتار ہوسکتا ہے ، اس کے علاوہ ، ایسا لگتا ہے کہ ایل ای ڈی مکمل طور پر آن ہے۔

اس کے بجائے ہمیں کیا کرنا چاہئے وہ ہے کہ ایل ای ڈی کو سوئچ کرنے اور ایل ای ڈی کو آف کرنے کے مابین کوئی سند پیدا ہو۔ روک تھام کا نظریہ یہ ہے کہ ہم پہلے کی مقدار سے گنتے ہیں ، لہذا جب یہ صفر ہوجاتا ہے تو ، ہم گنتی چھوڑ دیتے ہیں۔

صفر قدر تاخیر کے اختتام کی علامت ہے ، اور ہم پورے پروگرام میں اپنا عمل جاری رکھے ہوئے ہیں۔ لہذا ، سب سے پہلے ہمیں یہ کرنا چاہئے کہ اپنے کاؤنٹر کے طور پر استعمال کرنے کے لئے مستقل طے کریں۔

آئیے ہم اس مستقل COUNT کو ہی اصطلاح دیں۔ اس کے بعد ، ہمیں طے کرنا ہوگا کہ گنتی شروع کرنے کے لئے کتنی اہم تعداد ہے۔ یقینی طور پر ، سب سے بڑی شخصیت جس میں ہم شامل ہوسکتے ہیں وہ 255 ، یا FXh ہیکس میں ہے ، جیسا کہ میں نے پہلے ٹیوٹوریل میں بات کی تھی ، مساوی ہدایات کسی رجسٹر کی صورت حال پر اظہار خیال کرتی ہے۔

اس سے یہ ظاہر ہوتا ہے کہ اس سے کوئی فرق نہیں پڑتا ہے کہ ہم کس مقدار میں اپنے COUNT کو مختص کرتے ہیں ، یہ کسی رجسٹر کے آئٹمز سے مماثل ہوگا۔ اگر ہم FFh ویلیو کو نامزد کرنے کی کوشش کرتے ہیں تو ، پروگرام مرتب کرنے کے بعد ہمیں ایک غلطی ہوگی۔

ایف ایف ایچ کے مقام کی وجہ یہ ہے ، لہذا ہم اس تک رسائی حاصل نہیں کرسکتے ہیں۔ لہذا ، ہمیں ایک حقیقی نمبر کس طرح نامزد کرنا چاہئے؟ یقینی طور پر ، اس میں پس منظر پر غور کرنے کی تھوڑی مقدار کی ضرورت ہوگی۔

اگر شاید ہم اپنے COUNT کو 08h ایڈریس پر نامزد کرتے ہیں تو ، مثال کے طور پر ، یہ رجسٹرڈ کی ایک بنیادی مقصد کی نشاندہی کرے گا۔ پہلے سے طے شدہ ، اچھوت والے علاقوں کو FFh پر سیٹ کیا جاتا ہے۔ اس کے نتیجے میں ، اگر COUNT 08h کی طرف جاتا ہے تو ، آپ کو پہلے طاقت کے وقت آپ کو FFh کی قیمت کا سامنا کرنا پڑے گا۔ بہر حال ، میں آپ ، ہم COUNT کو کسی اور نمبر پر کیسے طے کرسکتے ہیں؟ ، ہم سبھی درخواست دیتے ہیں کہ پہلے اس منزل تک پہنچنے کا اندازہ۔

ایک مثال کے طور پر ، فرض کریں کہ ہم کاؤنٹی کی خواہش ہے کہ وہ 85h کی مالیت رکھتے ہوں ، ہم کاؤنٹس 85 85h کا ذکر نہیں کرسکتے ہیں کیونکہ یہ بندرگاہ اے کے لئے ٹری اسٹیٹ رجسٹر کی پوزیشن ہے جو کچھ بھی ہم حاصل کرتے ہیں وہ مندرجہ ذیل ہے: موول 85h فرسٹ ڈال ڈبلیو رجسٹر موویوف 08h میں 85h کی قیمت

اب اسے ہمارے 08h رجسٹر میں منتقل کریں۔ اس کے نتیجے میں ، اگر ہم COUNT برابر 08h کا اظہار کریں تو ، COUNT 85h کی قیمت سے مماثل ہوگا۔ نازک ، ہے نا! لہذا ، ابتدائی طور پر ہم اپنی مستقل نشاندہی کرتے ہیں: COUNT برابر 08h کے بعد ہمیں اس COUNT کو ایک صفر تک کم کرنا ہوگا جب تک کہ یہ صفر نہ ہوجائے۔

یہ صرف اتنا ہوتا ہے کہ وہاں ایک ہدایت موجود ہے جو ہمارے لئے پورا کرنے کے لئے تیار کی گئی ہے ، جس میں ایک ’’ گوٹو ‘‘ اور ایک ٹیگ کا استعمال کرکے کیا گیا ہے۔

ہم جس ہدایات کو لاگو کرنے جا رہے ہیں وہ ہے: ڈی ای سی ایف زٹ کاؤنٹی ، 1 اس ہدایت میں کہا گیا ہے کہ ‘کوما کو ٹریک کرنے والے نمبر کے ذریعہ رجسٹر (یہاں اس کا COUNT) گھٹا دیں۔ اگر ہم صفر پر پہنچ جاتے ہیں تو ، آگے دو مقامات کی امید لگائیں۔ ’پہلے ہم اسے اپنے عمل میں رکھنے سے پہلے اس کو عملی طور پر تلاش کریں۔

ہم نے جو کام انجام دیا ہے وہ ابتدا میں ہمارے مستقل COUNT سے 255 کو قائم کرتا ہے۔ اس کے بعد والا طبقہ ایک ٹیگ پوزیشن میں رکھتا ہے ، جسے LABEL کہا جاتا ہے جو ہمارے ڈیکفز ہدایت کے قریب ہے۔

ڈیفزز ، کاؤنٹیہ 1 ، ایک سے COUNT کی قدر کو کم کرتا ہے ، اور آخری نتائج کو سیدھے COUNT میں برقرار رکھتا ہے۔ مزید یہ کہ یہ چیک کرنا پڑتا ہے کہ آیا COUNT کے پاس 0 کی قدر ہے؟

اگر ایسا نہیں ہوتا ہے تو ، اس صورت میں یہ پروگرام اس کے نتیجے میں آنے والی لائن میں منتقل ہوجاتا ہے۔ اب ہمارے پاس ایک 'گوٹو' اعلامیہ ہے جو ہمیں ہمارے ڈیکفز ہدایات پر واپس بھیج دیتا ہے۔

اگر COUNT کی قدر مساوی کارکردگی کا مظاہرہ کرتی ہے ، تو ہمارے پروگرام میں ڈیکفز ہدایت کے نتیجے میں 2 مقامات کو اچھل سکتا ہے ، اور ہمیں وہاں بھیج دیا جاتا ہے جہاں ہم نے دعوی کیا ہے کہ 'یہاں پر اٹھائیں'۔

لہذا ، چونکہ آپ مشاہدہ کرسکتے ہیں ، ہم آگے بڑھنے سے پہلے ایک پروگرام میں پہلے سے طے شدہ وقت کے لئے بیٹھنے کے لئے پروگرام لایا ہے۔ اس کا نام تاخیری لوپ رکھا جاسکتا ہے۔

تاخیر سے متعلق لوپس کو سمجھنا

اگر ہمیں مزید خاطر خواہ تاخیر کی ضرورت ہو تو ، ہم اگلے ہی ایک لمحے کا تعاقب کرسکتے ہیں۔ اضافی loops ، توسیع میں توسیع. آئیے کم از کم دو ، یہ فرض کرتے ہوئے کہ ہم ایل ای ڈی فلیش کا مشاہدہ کرنا چاہتے ہیں۔ ہم ان تاخیر کو چھونے والے پروگراموں کو اپنے پروگرام میں رکھیں گے ، اور تبصرے پیش کرکے اس کو حقیقی پروگرام پیش کرتے ہوئے انجام دیں گے۔

اس پروگرام کو مرتب کرنا ممکن ہے جس کے بعد پی آئی سی کا پروگرام ہے۔ ظاہر ہے ، اس بات کا یقین کر لیں کہ آپ یہ جانچنے کے لئے سرکٹ کو آزماتے ہیں کہ آیا واقعی اس میں کام ہوتا ہے۔ مندرجہ ذیل ایک سرکٹ ڈایاگرام ہے جسے آپ نے PIC کا پروگرام بناتے ہی بنانا چاہئے۔


ٹھیک ہے ، آپ واقعتا your آپ کا پہلا PIC پروگرام مرتب کرسکتے ہیں ، اور اس کے ساتھ ہی ایل ای ڈی کو پلک جھپکنے کے لئے سرکٹ بھی بناتے ہیں۔ اب تک ، اگر آپ نے ان کورسز کو آگے بڑھایا ہے تو ، آپ شاید 35 میں سے سات ہدایات سیکھ چکے ہوں گے ، لیکن بلاشبہ اب تک آپ شاید I / O بندرگاہوں کو کنٹرول کر رہے ہوں گے!

کیا آپ ایل ای ڈی فلیش کو تیزی سے پیش کرنے کے لئے تاخیر والے تاروں کو تبدیل کرنے کی کوشش کریں گے - ایل ای ڈی فلیش کو دیکھنے کے لئے COUNT کی کم سے کم قیمت کیا ظاہر ہوتی ہے؟ یا ہوسکتا ہے ، آپ ایل ای ڈی کو مستحکم کرنے کے لئے ابتدائی کے بعد کسی تیسری یا اضافی تاخیر والے لمپ کو شامل کرنا چاہیں گے۔ ہر تاخیر لوپ کے لئے ایک منفرد مستقل.

آپ ممکنہ طور پر پھر ایک خاص رفتار سے ایل ای ڈی فلیش پیش کرنے کے ل. اپنے تاخیر والے خطوط کے ساتھ حقیقت میں ہلچل جھلک سکتے ہیں ، مثال کے طور پر ایک سیکنڈ کے بعد۔ آئندہ ہدایات کے اندر ہم یہ دیکھیں کہ ہم پروگرام کو کمپیکٹ اور بنیادی کو برقرار رکھنے کے لئے سبروٹین کے نام سے جانے جانے والی کسی چیز کو کس طرح استعمال کرسکتے ہیں A سبروٹین کوڈ ، یا پروگرام کا ایک لازمی جزو ہے ، جس کا حوالہ دیا جاسکتا ہے اور جب آپ کو ضرورت ہوسکتی ہے۔ سبروٹائنز ایسے معاملات میں ملازمت کی جاتی ہیں جہاں آپ اکثر ایک جیسی تقریب انجام دے رہے ہیں۔

سبروٹائنز کیا ہیں؟

سبروٹین کو ملازمت کرنے کے فوائد یہ ہیں کہ اپنے پروگرام کے دوران دس بار سب کے بجائے سبروٹین کے اندر ایک بار قدر میں ترمیم کرنا آسان ہو جائے گا ، اسی طرح یہ آپ کے پروگرام کے اندر موجود میموری کی سطح کو کم کرنے میں بہت زیادہ حصہ ڈالتا ہے۔ PIC ہم ایک سبروٹین چیک کریں گے:

ابتدائی طور پر ، ہمیں اپنے سبروٹائن کو ایک عہدہ فراہم کرنے کی ضرورت ہے ، اور اس صورتحال میں ہم نے روٹین کا انتخاب کیا ہے۔ ہم اس کے بعد اس کوڈ کو ٹائپ کرتے ہیں جسے ہم عام طور پر چلنا چاہتے ہیں۔ یہی وجہ ہے کہ ، ہم نے اپنے چمکتا ہوا پروگرام میں تاخیر کا انتخاب کیا ہے۔ آخر میں ، ہم واپسی کی ہدایت کو چابی لگا کر سبروٹین کا اختتام کرتے ہیں۔

ہمارے پروگرام میں کہیں سے بھی سبروٹین شروع کرنے کے ل we ، ہم جلدی سے ہدایات کال کریں اور پھر سبروٹائن کا عہدہ ٹائپ کریں۔

ہم اس پر کچھ اور گہرائی میں غور کریں گے۔ ایک بار جب ہم اپنے پروگرام کے سیکشن پر پہنچیں کہ کال ایکس ایکس ایکس ، جس میں ایکس ایکس ایکس ہمارے سبروٹین کا نام ہے تو ، یہ پروگرام کہیں بھی سبپروٹین ایکس ایکس ایکس انسٹال ہونے کے بعد چھلانگ لگا دیتا ہے۔ سبروٹین کے اندر دی گئی ہدایات پر عمل کیا جاتا ہے۔

جب بھی ہدایت کی واپسی مکمل ہوجاتی ہے ، پروگرام ہمارے پرنسپل پروگرام میں واپس آنے کی ہدایت دیتا ہے جس کے بعد ہماری کال ایکس ایکس ایکس انسٹرکشن ہوتی ہے۔

اسی طرح کے سبروٹائن کو متعدد بار فون کرنا ممکن ہے جیسا کہ آپ چاہیں ، جس میں یہ بتایا گیا ہے کہ کیوں سبروٹینز کا استعمال ہمارے پروگرام کے عمومی دورانیے کو کم کرتا ہے۔

بہر حال ، آپ کے پاس بہت سارے عوامل سے واقف ہونا چاہئے۔ ابتدائی طور پر ، جیسا کہ ہمارے پرنسپل پروگرام کی طرح ، کسی بھی مخصوص قابلیت کو استعمال کرنے سے پہلے اسے تسلیم کرنے کی ضرورت ہوتی ہے۔

ان کا ممکنہ طور پر سبروٹائن میں ہی ، یا براہ راست پرنسپل پروگرام کے آغاز میں ہی اعتراف کیا جاسکتا ہے۔ میں آپ کو تجویز کرتا ہوں کہ آپ اپنے مرکزی پروگرام کے آغاز پر ہی ہر چیز کو تسلیم کرتے ہیں ، تب سے آپ تسلیم کرتے ہیں کہ معاملات ایک جیسی پوزیشن پر ہیں۔ اگلا ، کسی کو یہ یقینی بنانا چاہئے کہ مرکزی پروگرام سبروٹین پر نہیں جاتا ہے۔

اس کا مطلب میں یہ کہتا ہوں کہ کیا آپ اپنے سبروٹین کو براہ راست اپنے بنیادی پروگرام کے اختتام پر رکھیں ، سوائے اگر آپ کسی 'گوٹو' کے اعلامیے کو جہاں سبروٹین ہے وہاں سے چھلانگ لگانے کے لئے استعمال کرتے ہیں ، پروگرام جاری رہتا ہے اور سبروٹائن کو لاگو کرتا ہے چاہے آپ سب اس کی ضرورت ہے یا دوسری صورت میں۔

پی آئی سی سبروٹائن اور پرنسپل پروگرام میں فرق نہیں کرے گی۔ ہم اپنا چمکتا ہوا لیڈڈ پروگرام دیکھیں گے ، تاہم اس بار ہم تاخیر والے لوپ کے لئے سبروٹین کا استعمال کریں گے۔ مثالی طور پر ، آپ کو معلوم ہوگا کہ پروگرام کتنا کم پیچیدہ نظر آتا ہے ، اسی طرح آپ کو معلوم ہوگا کہ سبروٹین عملی طور پر کس طرح لاگو ہوتا ہے۔

آخر کار ، آپ مشاہدہ کر سکتے ہیں کہ ہمارے تاخیر سے بچنے کے ل a سبروٹین کا استعمال کرکے ، ہم نے پروگرام کے طول و عرض کو گھٹا دیا ہے۔

جب بھی ہم کسی تاخیر کی خواہش کرتے ہیں ، ممکنہ طور پر جب ایل ای ڈی آن یا آف ہو ، ہم بنیادی طور پر تاخیر کو سبروٹائن کہتے ہیں۔ سبروٹین کے اختتام پر ، پروگرام ہماری ’کال‘ کی ہدایت کے بعد لائن پر واپس جاتا ہے۔ مندرجہ بالا مثال میں ، ہم ایل ای ڈی پلٹائیں۔

اس کے بعد ہم سبروٹائن سے رابطہ کرتے ہیں۔ اس کے بعد یہ پروگرام دوبارہ ترتیب میں آتا ہے کہ ہم ایل ای ڈی کو بند کر سکتے ہیں۔ ہم سبروٹائن کو ایک بار پھر کہتے ہیں ، صرف اس صورت میں کہ سبروٹین مکمل ہو چکی ہو ، پروگرام واپس آجائے اور اس کے بعد کی ہدایت جو اسے پہچانتی ہے وہ ہے ‘گوٹو اسٹارٹ’۔ دلچسپی پیدا کرنے والے کسی بھی شخص کے ل our ، ہمارا پہلا پروگرام 120 بائٹ لمبا تھا۔

سبروٹین کے استعمال کے ذریعے ، ہم اپنے پروگرام کے سائز کو 103 بائٹ تک کم کرسکتے ہیں۔ یہ حیرت انگیز نہیں لگ سکتا ہے ، تاہم اس حقیقت پر غور کرتے ہوئے کہ ہمارے پاس مجموعی طور پر PIC کے اندر ہی 1024 بائٹس ہیں ، ہر چھوٹی سی رقم سے فائدہ ہوتا ہے۔

اگلی ہدایت کے اندر ، ہم بندرگاہوں سے پڑھنے کو چیک کریں۔

اب تک ، ہم پورٹ اے میں کمپوزنگ کرتے رہے ہیں تاکہ ہم ایل ای ڈی کو آن اور آف کر سکیں۔ اس مقام پر ، ہم دیکھیں گے کہ ہم کس طرح بندرگاہوں پر I / O پنوں کو پڑھ رہے ہیں۔

ان پٹ / آؤٹ پٹ پورٹس پڑھنا

یہ بات یقینی طور پر یقینی بنانا ہے کہ ہم کسی بیرونی سرکٹ سے منسلک ہونے کے اہل ہیں ، اور اس کی پیش کردہ کسی خاص آؤٹ پٹ کو متاثر کرتے ہیں۔

کیا آپ کو ہمارے سابقہ ​​نصاب سے حفظ کرنا چاہئے ، اگر آپ I / O بندرگاہوں کو قائم کرنا چاہتے ہیں تو ہمیں بینک 0 سے بینک 1 میں چھلانگ لگانے کی ضرورت ہے۔ ہم ابتدائی طور پر یہ کام انجام دیں گے:

اس مرحلے پر ہم نے پورٹ A کا تھوڑا سا 0 ان پٹ طے کیا ہے۔ ہمیں اب جانچ پڑتال کرنی ہوگی کہ پن زیادہ ہے یا کم۔ اس کو پورا کرنے کے لئے ، ایک دو میں سے صرف ایک ہدایات استعمال کرسکتا ہے:

بی ٹی ایف ایس سی اور بی ٹی ایف ایس۔

بی ٹی ایف ایس سی کی ہدایت کا اشارہ ہے ‘رجسٹر پر تھوڑا سا ٹیسٹ کریں نیز ہم نے جس قدر نامزد کیا ہے۔

اگر یہ 0 کی حیثیت رکھتا ہے تو ، اس صورت میں ہم بعد کی ہدایات کو چھوڑ دیتے ہیں۔ بی ٹی ایف ایس کا مطلب ہے ‘رجسٹر میں تھوڑا سا ٹیسٹ کرو اور ہم قائم کریں۔ اگر یہ ایک 1 پر سیٹ ہوجائے تو ہم اس کے بعد کی ہدایت کو بائی پاس کردیں۔

ہم جس میں سے ایک استعمال کرتے ہیں ، اس کا عین مطابق اس بات سے طے کیا جاتا ہے کہ ہم ان پٹ کا مطالعہ کرتے وقت ہمارا پروگرام کس طرح سے ردعمل ظاہر کریں گے۔ ایک مثال کے طور پر ، اگر ہم صرف 1 کے ان پٹ کا انتظار کر رہے ہیں ، تو ہم BTFSS ہدایت کو مندرجہ ذیل طریقے سے استعمال کرسکیں گے۔

یہاں کوڈ:

بی ٹی ایف ایس ایس پورٹا ، 0 یہاں جائیں کیری شروع کریں:
:

پروگرام صرف ‘یہاں لے جانے والے’ کی طرف منتقل ہوجائے گا بشرطیکہ پورٹ اے پر تھوڑا سا 0 کسی 1 میں شیڈول ہو۔

ہم فی الحال ایک پروگرام لکھیں گے جو ایک شرح پر ایل ای ڈی کا اشارہ کرسکتا ہے ، تاہم ، اگر سوئچ محدود ہے تو یہ ایل ای ڈی کو دو مرتبہ سست بنائے گا۔

یہ ممکن ہے کہ آپ خود ہی اس پروگرام کو استعمال کریں ، پھر بھی ہم نے کسی طرح فہرست سازی کو شامل کرلیا ہے۔

اگر آپ اصولوں کو سمجھ گئے ہیں تو اس کی جانچ پڑتال کے ل You آپ پورے پروگرام کی کوشش اور مصنف کرسکتے ہیں۔ ہم پہلے کی طرح مساوی سرکٹ کا استعمال کریں گے ، جس میں PIC کے سوئچ سے منسلک RA0 اور اپنی فراہمی کی مثبت ریل شامل ہوگی۔

جو کچھ ہم نے یہاں کیا ہے وہ ہے ایل ای ڈی کو تبدیل کرنا۔ میں بعد میں طے کرتا ہوں کہ اگر سوئچ بند ہے۔

اگر یہ محدود ہے تو ، اگلے میں ہم اپنے تاخیر والے سبروٹائن سے رابطہ کریں۔ یہ ہمیں پہلے کی طرح مساوی تاخیر فراہم کرتا ہے ، تاہم ہم اس مقام پر دو بار اس سے رابطہ کرتے ہیں۔

جب بھی ایل ای ڈی بند نہیں ہوتا ہے تو اسی چیز کا اطلاق ہوتا ہے۔ اگر سوئچ بند نہیں ہوا ہے ، تو ہمارے پاس اپنے ادوار کا دورانیہ بند اور بند رہتا ہے۔

کیا آپ ابتداء سے ہی ان سبق پر عمل پیرا ہیں ، آپ یہ سمجھنے کی کوشش کر رہے ہوں گے کہ آپ نے پی آئی سی 16 ایف 84 کے لئے فی الحال 35 میں سے دس کو تلاش کیا ہے! اور ان میں سے ہر ایک محض ایل ای ڈی کو آن اور آف کرتے ہوئے سیکھنا ہوتا ہے۔

ابھی تک ، ہم نے پی آئی سی پلکنے والی یلئڈی کو بند اور بند بنایا ہے۔

اس کے بعد ہم ایک سوئچ شامل کرکے اپنی پی آئی سی کے ساتھ قابل تھے ، لہذا فلیش کی رفتار مختلف ہوتی ہے۔

میموری کی جگہ کا موثر استعمال کرنا

واحد مسئلہ یہ ہے کہ ، یہ پروگرام کافی لمبا اور میموری کی جگہ کے غیر موثر ہے۔ یہ ٹھیک محسوس ہوا جب میں پہلی بار کمانڈ کو شامل کررہا تھا ، تاہم اس پر عمل کرنے کا ایک آسان طریقہ ہونا چاہئے۔ مثبت طور پر وہاں ہے ، ہم تجزیہ کریں گے کہ ہم کس طرح لفظی طور پر ایل ای ڈی کو سوئچ اور آف کر رہے تھے۔

موول ڈبلیو 02hmovwf پورٹاموولو 00hmovlw پورٹا

پہلے پہل ہم نے 02 ڈبلیو کے ساتھ اپنے ڈبلیو رجسٹر کو بھر دیا ، اس کے بعد ایل ای ڈی کو سوئچ کرنے کے لئے اسے ہمارے پورٹ اے رجسٹر میں منتقل کردیا۔ اسے آف کرنے کے ل we ، ہم نے 00h کے ساتھ ڈبلیو پیک کیا جس کے بعد اسے ہمارے پورٹ اے رجسٹر میں منتقل کردیا گیا۔

ان تمام معمولات کے درمیان ہمیں ایک سبروٹائن سے رابطہ کرنے پر مجبور کیا گیا تاکہ یہ یقینی بنایا جا سکے کہ ہم ایل ای ڈی چمکنے کا مشاہدہ کرسکیں۔

لہذا ، ہمیں دو مرتبہ اطلاعات کے تبادلے کی ضرورت ہے (ایک بار ڈبلیو رجسٹر میں پورٹا کو بھیجنا) نیز ایک سبروٹین کو دو بار کال کرنا (ایک بار پھر ایک بار آف کے لئے)۔ اس طرح ، ہم اضافی کارکردگی کے ساتھ یہ کیسے حاصل کرسکتے ہیں؟ بہت سادہ.

ہم ایک مختلف ہدایت کا استعمال کرتے ہیں جسے XORF کہا جاتا ہے۔ XORF ہدایات اس رجسٹر پر ایک خصوصی یا کام کرتی ہے جسے ہم فراہم کردہ معلومات کے ساتھ متعین کرتے ہیں۔ مجھے یقین ہے کہ مجھے یہ واضح کرنا ہوگا کہ ہم جاری رکھنے سے پہلے دنیا میں ایک خصوصی O یا کیا ہے۔ اگر ہمارے پاس دو آؤٹ پٹ ، اور ایک آؤٹ پٹ ہے تو ، ان پٹ صرف 1 ہوسکتا ہے ، اور جب تک کہ دونوں ان پٹ مختلف ہوں۔ جب وہ ایک جیسے ہیں ، تو پھر پیداوار 0 ہوسکتی ہے۔ ان افراد کے لئے مندرجہ ذیل ایک سچائی ٹیبل ہے ، جو ان کی جانچ پڑتال کرتے ہیں:

A B F0 0 00 1 11 0 11 1 0

ہم اس مقام پر یہ چیک کریں گے کہ اگر ہم اپنے پہلے آؤٹ پٹ کی طرح بی کو پیش کرتے ہیں تو ، اور کیا A کی قدر میں ردوبدل کرتے ہیں۔

A B F
0 0 0
0 0 0
1 0 1
1 1 0
1 0 1

اگر ہم 1 کی طرح A کی قدر برقرار رکھتے ہیں ، اور ہم اس کو آؤٹ پٹ کے ساتھ ہی رکھتے ہیں تو آؤٹ پٹ ٹوگل ہوجائے گا۔ اگر آپ سچ کی میز سے اس کو محسوس نہیں کرسکتے ہیں تو ، اس کے نیچے بائنری کے استعمال کا مشاہدہ کیا جاسکتا ہے:

0 موجودہ آؤٹ پٹ
سابق 1 یا 1 نئی آؤٹ پٹ کے ساتھ
سابق 0 یا 1 0 نئے آؤٹ پٹ کے ساتھ

ہوسکتا ہے کہ آپ 1 کے ساتھ آؤٹ پٹ کو خصوصی اورنگ دے کر تلاش کرسکیں ، اب ہم آؤٹ پٹ کو 0 سے 1 سے 0 تک ٹوگل کریں گے۔
لہذا ، اپنی ایل ای ڈی کو آن اور آف کرنے کے ل we ، ہمیں صرف ایک دو جملے کی ضرورت ہوتی ہے۔

MOVLW 02h
XORWF دروازہ ، 1

ہم یقینی طور پر کیا حاصل کریں گے 02 ڈبلیو کے ساتھ اپنے ڈبلیو رجسٹر کو شامل کرنا ہے۔ ہم اس معاملے میں ایکسپلورل ORing اس نمبر سے قطع نظر ہمارے Porta میں کیا ہیں۔ اگر تھوڑا سا 1 ایک 1 ہے ، تو یہ 0 میں تبدیل ہوجائے گا۔ اگر تھوڑا سا 1 0 ہو تو ، اس میں 1 کی تبدیلی ہوگی۔ ایک بار یا دو بار اس کوڈ کی جانچ کرتے ہیں ، یہ ظاہر کرنے کے لئے کہ یہ بائنری کیسے چل رہا ہے:

دروازہ
00010
xorwf 00000
xorwf 00010
xorwf 00000
xorwf 00010

ہمیں حقیقت میں ہر بار اپنے ڈبلیو رجسٹر میں ایک جیسی قدر کو نہیں لینا پڑتا ہے ، لہذا یہ ممکن ہے کہ شروع میں ہی یہ ایک بار پورا کیا جا simply ، اور آسانی سے ہمارے ٹوگل کمانڈ میں واپس آجائے۔ مزید برآں ، ہمیں اپنے پورٹ اے رجسٹر کی کوئی قیمت طے کرنے کی ضرورت نہیں ہے۔ وجہ؟ یقینی طور پر ، چونکہ اقتدار میں آنے کی صورت میں یہ 1 ہے ، ہم اسے آسانی سے ٹگل کرسکتے ہیں۔ میں ، متبادل کے طور پر 0 پر پاور اپ ، اب بھی ہم اسے ٹوگل کریں گے۔

لہذا آپ ہمارے نئے تشکیل شدہ کوڈ کو دیکھنا چاہتے ہیں۔ پہلا ایک ہمارے ٹمٹمانے ایل ای ڈی کوڈ کی نمائندگی کرتا ہے ، جبکہ دوسرا سوئچ کے اضافے کے ساتھ ایک کو ظاہر کرتا ہے:

آئیے کاش آپ آسانی سے ایک آسان ہدایت کا استعمال کرکے یہ پائیں کہ ہم نے اب اپنے پروگرام کا پیمانہ کم کردیا ہے۔ سچ تو یہ ہے کہ یہ ظاہر کرنے کے لئے کہ ہم اپنے پروگراموں کو کتنا کم کرسکتے ہیں ، ہم نے ان دو پروگراموں کا مظاہرہ کیا ہے ، جس میں کچھ تیار کیا گیا تھا ، اور ذیل میں دیئے گئے ٹیبل میں ان کے طول و عرض:

پروگرام کے طول و عرض (بائٹس)
چمکتا ہوا ایل ای ڈی اوریجنل 120
ایل ای ڈی سبروٹین کو چمکانے میں 103 شامل کی گئیں
چمکتا یلئڈی XOR فنکشن استعمال کیا جاتا ہے 91
سوئچ اصلی 132 کے ساتھ ایل ای ڈی
استعمال شدہ 124 کے ساتھ سوئچ XOR فنکشن کے ساتھ ایل ای ڈی.

لہذا ، صرف یہ نہیں کہ ہم نے کچھ ناول ہدایات دریافت کیں ، یقینی طور پر اس کے علاوہ ہم نے اپنی اسکرپٹنگ کا سائز بھی کم کردیا ہے!

ذیل میں ، ہم تجزیہ کریں گے کہ آپ کس طرح انفرادی بٹس کو چکراسکتے ہیں ، کچھ سیدھے ریاضیوں کے ساتھ ساتھ ڈیٹا ٹیبل کو بھی انجام دے سکتے ہیں۔

منطقی مینیجرز

آخری سبق کے اندر ہی میں نے خصوصی یا آپریشن پیش کیا۔ ای او ایس او آر فنکشن منطقی آپریٹر کے طور پر سمجھا جاتا ہے۔

اس ٹیوٹوریل کے اندر میں اضافی منطقی آپریٹرز کو روشن کردوں گا جن کی PIC فروغ دیتی ہے۔ نقطہ پروگراموں میں کسی بھی قسم کا معاملہ نہیں ہوگا ، تاہم ہم ضابطہ اخلاق کے چھوٹے چھوٹے علاقوں کو استعمال کرکے آپریٹرز کو استعمال کرنے کے آسان طریقے سیکھیں گے۔

اور اینڈ فنکشن بنیادی طور پر دو بٹس کا تجزیہ کرتا ہے اور 1 کو فراہم کرتا ہے چاہے وہ ایک جیسے ہوں ، اور اگر 0 ان کے مماثل ہوں تو 0۔ مثال کے طور پر ، اگر ہم نے 1 اور 1 کا تذکرہ کیا تو ، نتیجہ 1 ہے ، جبکہ ہم نے 1 اور 0 کا اعلان کیا تو نتیجہ 0 ہوگا۔

یہ کہنے کی ضرورت نہیں ہے کہ ، ہم الفاظ کا بھی جائزہ لینے کے اہل ہیں ، نیز اینڈ فنڈ میں ہونے والے تمام کاموں میں تھوڑا سا تھوڑا سا جائزہ لیا جاتا ہے۔ ذیل میں دی گئی مثال میں دو 8 بٹ الفاظ مصنوع کے ساتھ ساتھ Anded بننے کا مظاہرہ کرتے ہیں۔

11001011
اور 10110011
10000011 کے برابر ہے

میں امید کرتا ہوں کہ آپ اتفاق کرتے ہیں ، جب بھی الفاظ کے جوڑے میں ایک دوسرے کے ساتھ 2 1s ہاتھ ملتے ہیں تو اس کا نتیجہ صرف 1 پر ہوگا۔ مثال کے طور پر ہم بندرگاہوں کی تصدیق کے لئے AND اور فنکشن کو استعمال کرسکتے ہیں۔

اگر ہم کچھ I / O پنوں کی جانچ کر رہے ہیں جو سرکٹ سے منسلک ہیں ، اور ہمیں کسی خاص صورتحال پر نگاہ رکھنی چاہئے جس میں صرف چند پنوں کی تعداد زیادہ ہے ، اس صورت میں ہم بہت زیادہ پڑھنے کے اہل ہیں بندرگاہ ، جس کے بعد اور اس نتیجے کے ساتھ جس کی ہم جانچ کررہے ہیں ، مذکورہ بالا مثال کی طرح۔

PIC ہمیں AND کے لئے دو اجزا فراہم کرتی ہے۔
وہ ANDLW اور ANDWF ہیں۔ اینڈ ایل ڈبلیو ہمیں ڈبلیو رجسٹر کی تفصیلات کے ساتھ ایک اینڈ اینڈ فنکشن انجام دینے کی اجازت دیتا ہے ، اور اس رقم کو جو ہم نے طے کیا ہے۔

نحو یہ ہے: ANDLW جس میں ہم جا رہے ہیں اور W کے مندرجات کے ساتھ۔

اینڈ فنکشن کا نتیجہ براہ راست ڈبلیو رجسٹر میں جمع ہوگا۔
اینڈ ڈبلیو ایف ہمیں ڈبلیو رجسٹر اور مختلف رجسٹر پر ایک اینڈ اینڈ فنکشن انجام دینے کی اجازت دیتا ہے ، مثال کے طور پر ایک پورٹ۔ ترکیب یہ ہے: ANDWF، d جس میں رجسٹر ہے جس میں ہم پرجوش ہیں ، جیسے۔ پورٹا ، اور ڈی پی آئی سی کو ظاہر کرتا ہے جہاں آپ کو نتائج کی پوزیشن لینا چاہئے۔ اگر d = 0 ، نتیجہ ڈبلیو رجسٹر میں ڈال دیا جاتا ہے ، اور D = 1 کا حتمی نتیجہ ہمارے اندراج کردہ رجسٹر میں محفوظ ہوجاتا ہے۔ ذیل میں کوڈ کے دو حصے ہر اور فنکشن کی عمدہ مثال پیش کرتے ہیں۔

ابتدائی پورٹا کی حیثیت کا جائزہ لے رہا ہے ، جس میں ہمیں جانچ پڑتال کرنے کی ضرورت ہے کہ آیا ان پٹ 1100 ہیں۔ ہم نتائج کو ڈبلیو ڈبلیو رجسٹر میں رکھ سکتے ہیں۔

مولول 1100
ANDWF 05h ، 0 دوسرا مثال W W رجسٹر کے مندرجات کی تصدیق کرسکتا ہے۔
ANDLW 1100

یا

XOR کے عین مطابق ہونے کے ل We ، اب ہم نے ایک OR کام دریافت کرلیا ہے۔ یہ ایک 1 میں تیار ہوتا ہے اگر دو بٹس ایک جیسے نہیں ہیں ، بلکہ مختلف ہیں۔ آپ کو ایک اور OR فنکشن مل سکتا ہے جسے IOR کہا جاتا ہے ، جس میں شامل OR ہے۔ اس فنکشن میں 1 پیدا ہوگا جس میں تھوڑا سا 1 بھی ہوتا ہے ، لیکن اس کے علاوہ اگر ہر بٹس 1 ہوتے ہیں تو ذیل میں اس کی وضاحت کرنے کے لئے ایک صاف کٹ سچائی ٹیبل دیا گیا ہے۔

A B O / P
0 0 0
0 1 1
1 0 1
1 1 1

ریاضی کے آپریٹرز کیا ہیں؟

شامل کریں

یہ فنکشن اس کام کو پورا کرتا ہے جو عام طور پر یہ دعوی کرتا ہے۔ یہ دو شخصیات کا تعاون کرتا ہے! ایسی صورت میں جب دونوں اعدادوشمار کو جوڑنے کا نتیجہ 8 بٹس سے تجاوز کر جائے ، تو ایسی صورت میں ممکن ہے کہ ایک کیری پرچم طے کیا جائے۔ CARRY جھنڈا ایڈریس 03h بٹ 0 پر واقع ہے۔

جب یہ بٹ شیڈول ہوجاتا ہے ، تب دونوں اعداد و شمار 8 بٹس سے آگے نکل گئے تھے۔ جب یہ 0 ہے تو ، اس صورت میں نتیجہ 8 بٹس کے اندر واقع ہے۔ پہلے کی طرح ، پی آئی سی ہمیں ADDLW اور ADDWF کے دو اسٹائل فراہم کرتی ہے۔ جیسا کہ آپ نے فرض کیا ہوگا ، یہ بالکل مذکورہ بالا فنکشن کی طرح ہے۔ ADDLW W کے اندراج کے مندرجات پیش کرتے ہیں جو ہم نے مقرر کیا ہے۔ نحو یہ ہے: ADDLW ADDWF W رجسٹر اور کچھ دوسرے رجسٹر کے مندرجات شامل کریں جو ہم نامزد کرتے ہیں۔

نحو ہے: ADDWF، d وہیں ہے

سبب

اس مرحلے پر ، میرا اندازہ ہے کہ آپ اندازہ نہیں کرسکتے کہ یہ کام کیا کرتا ہے! واقعی ، آپ کو اس کام پر شبہ ہے
تھوڑا سا دوسرے سے جمع کرتا ہے۔ ایک بار پھر PIC ہمیں 2 ذوق فراہم کرتی ہے: SUBLW اور SUBWF۔ نحو بالکل ADD فنکشن کے لئے بالکل اسی طرح کی ہے ، ظاہر ہے کہ آپ ADD کی جگہ SUB ٹائپ کرتے ہیں!

اضافہ اگر ہم چاہتے ہیں کہ 1 کو PIC میں کسی نمبر کو شامل کیا جائے تو ، ہم ADD تقریب کو بالکل استعمال کرسکتے ہیں ، اور پہلے نمبر کو استعمال کرسکتے ہیں۔ this اس میں مشکل یہ ہے کہ ہمیں پہلے اعداد و شمار کو W W کے اندراج میں رکھنا چاہئے ، بعد ازاں اس میں اضافہ کرنے کے لئے ADDLW 1 کنٹرول استعمال کریں۔ اگر ہم رجسٹر میں 1 شامل کرنا چاہتے ہیں تو ، یہ اب بھی بدتر ہوسکتا ہے۔ ہمیں پہلے نمبر 1 W ڈبلیو رجسٹر میں رکھنا چاہئے ، اس کے بعد ADDWF ، 1 استعمال کریں۔ لہذا ، مثال کے طور پر ، 1 محل وقوع 0C میں شامل کرنے کے ل say ، کہتے ہیں ، ہمیں اسکرپٹ کا مندرجہ ذیل حصہ رکھنے کی ضرورت ہوگی۔

Movlw 01
addwf 0c، 1

اس کے انعقاد کا ایک آسان طریقہ موجود ہے۔ ہم کمانڈ INCF استعمال کرسکتے ہیں۔ ترکیب یہ ہے: INCF ، d جہاں ، رجسٹر یا جگہ ہے ، جس میں ہمارا تعلق ہے ، اور D PIC کو ظاہر کرتا ہے جہاں آپ کو نتائج کو پوزیشن میں رکھنا چاہئے۔ اگر D = 0 کی صورت میں ، نتیجہ ڈبلیو رجسٹر میں ہے ، اور صورت ڈی = 1 میں ، اس کا نتیجہ ہمارے اندراج کردہ رجسٹر میں طے ہوگا۔

اس انفرادی ہدایات کو بروئے کار لا کر ہم واقعی پچاس فیصد کوڈنگ کے اہل ہیں۔ اگر ہم مطلوبہ نتائج کو ڈبلیو رجسٹر میں بحال کرنا چاہتے ہیں ، تو اس صورت میں مذکورہ بالا مثال کے طور پر ، ہمیں 0C کی اشیاء کو W W کے اندراج میں واپس منتقل کرنے کے لئے ایک اضافی کمانڈ بھی شامل کرنی پڑے گی ، جس کے بعد 0C رجسٹر کو واپس نہیں کرنا پڑے گا۔ بات یہ تھی کہ یہ کیا تھا۔

وہاں انکریمنٹ کمانڈ موجود ہے۔ یہ INCFSZ ہے۔ یہ کمانڈ اس رجسٹر میں اضافہ کرسکتا ہے جس کی ہم نے شرط رکھی ہے ، تاہم ، اگر ہم اندراج انکرمنٹ کے بعد 0 کے برابر ہوجاتے ہیں (جو اس وقت ہوگا جب ہم 1 سے 127 بھی شامل ہوں گے) اس کے بعد پی آئی سی ممکنہ طور پر بعد کی ہدایت کو پاس کرے گی۔ نیچے کوڈ کا حصہ اس کی عکاسی کرتا ہے:

لوپ incfsz 0C
گوپو لوپ
:
:
پروگرام کی باقیات۔

کوڈ کے مذکورہ حصے میں ، 0 سی میں 1 اضافہ ہوگا۔ ہم اگلے ایک ہدایت کے مالک ہیں جو پی آئی سی کو اپنے لوپ نامی ٹیگ پر واپس جانے کے لئے مطلع کرتا ہے ، اور ایک بار پھر انکرمنٹ 0 سی۔ یہ اس وقت تک جاری رہتا ہے جب تک کہ 0C 127 کے برابر نہیں ہوتا ہے۔ اس صورتحال میں ، جب ہم 0C کو 1 سے بڑھا دیتے ہیں ، تو 0C اب میچ ہونے والا ہے۔ لہذا پی آئی سی باقی پروگرام کے ساتھ آگے بڑھے گی۔

کمی

ہم نے پہلے کی تربیت میں کمی کی تقریب پر اب تک بات کی ہے ، لہذا میں اب اس پر نظر ثانی نہیں کروں گا۔

تکمیل

اس بحث میں حتمی ہدایت ہمارے اندراج کے اندراج میں ہر ایک کو تبدیل کردے گی۔ نحو یہ ہے: COMF، d جس میں

بٹ آپریشنز کو سمجھنا

مثال کے طور پر ، کسی پورٹ کے پنوں کو تیزی سے آؤٹ پٹ سے ان پٹ تک تبدیل کرنے کے ل This اس کا استعمال کیا جاسکتا ہے۔ بٹ کے افعال ہمیں اظہار کے اندر ایک ایک سا سا شکل دینے کی اجازت دیتے ہیں۔ وہ ہمیں اجازت دیتے ہیں کہ ہم آگے بڑھیں ، سیٹ کریں اور رجسٹروں یا نمبروں میں واحد بٹس سے چھٹکارا حاصل کریں جو ہم نے طے کیا ہے۔

اس کورس کے اختتام پر ہم ایک ایسے پروگرام کا انکشاف کریں گے جو ترتیباتی لائٹس کا ایک سیٹ تیار کرنے کے لئے ڈیزائن کیا گیا ہے جو آگے بڑھتا ہے ، پھر الٹا راستہ۔ ہم نے اس سے پہلے اس کا مشاہدہ کیا جب ہم خصوصی OR فنکشن کا معائنہ کرتے ہیں ، جس میں ہم نے خصوصی طور پر ایک بندرگاہ کے ساتھ بندرگاہوں کو آرڈر کیا تھا۔ جب ہم PIC پر بندرگاہوں کو قائم کرتے ہیں تو ، اب ہم نے کچھ تھوڑا سا افعال دیکھیں

میں ان کے استعمال کا اعادہ کرتا ہوں۔

بی سی ایف

یہ ہدایت تھوڑا سا مٹا دے گی جسے ہم اپنے نامزد کردہ رجسٹر میں مقرر کرتے ہیں۔ نحو
ہے:
بی سی ایف ،

ہم نے اس سے پہلے STATUS کے رجسٹر میں تھوڑا سا ہٹاکر صفحہ 1 سے صفحہ 0 میں ردوبدل کرنے کے لئے ملازم کیا۔ ہم اسی طرح کسی بھی مختلف رجسٹر / مقام میں 0 سے تھوڑا سا ٹھیک کرنے کے ل use اس کا استعمال کرسکتے ہیں۔ مثال کے طور پر ، اگر ہم سیکشن 0C سے 0 میں محفوظ 11001101 میں 3rd بٹ سیٹ کرنا چاہتے ہیں تو ، ہم شاید
داخل کریں:

بی سی ایف 0 سی ، 03

بی ایس ایف

یہ ہدایات کسی بھی رجسٹر میں جس میں ہم اشارہ کرتے ہیں اس میں 1 پر تعی fixن کردہ کچھ بھی ٹھیک کردیں گے۔ ہم اس کا استعمال صفحہ 0 سے صفحہ 1 تک آگے بڑھنے کے لئے اس کا استعمال کرتے ہیں۔ نحو یہ ہے: BSF ، اور یہ بالکل اسی طریقے میں استعمال ہوتا ہے جیسا کہ اوپر کا بی سی ایف ہے۔

BTFSCUp اب ہم کسی رجسٹر میں تھوڑا سا سیٹ یا صاف کرسکتے ہیں۔ تاہم سوچئے کہ کیا ہمیں بنیادی طور پر یہ چیک کرنے کی ضرورت ہے کہ کیا رجسٹر میں تھوڑا سا 1 یا 0 ہے؟

یقینی طور پر ، BTFSC استعمال کرنا ممکن ہے۔ اس میں بٹ ٹیسٹ رجسٹر ایف درج کیا گیا ہے ، اور اگر واضح ہو تو اس کو چھوڑ دو۔ یہ ہدایات بٹ کا تجزیہ کرنے جارہی ہے جسے ہم رجسٹر میں نامزد کرتے ہیں۔ اگر تھوڑا سا 0 ہے تو ، ہدایات PIC کو اگلی ہدایات پاس کرنے کے بارے میں آگاہ کرے گی۔

اگر ہم کسی جھنڈے کی جانچ کرنا چاہتے ہیں ، مثال کے طور پر کیری جھنڈے کی صورت میں ہم اس ہدایت کا استعمال کرسکتے ہیں۔ اس سے ہمیں STATUS رجسٹر پڑھنے اور انفرادی بٹس کو تلاش کرنے کی ضرورت پڑتی ہے جس سے یہ معلوم ہوتا ہے کہ کون سے جھنڈے طے ہیں۔ 29 مثال کے طور پر ، اگر ہم نے یہ جانچنا چاہا کہ کیری جھنڈا 1 پر لگا ہوا ہے جب ہم نے 2 اعداد و شمار شامل کرنے کے بعد ، پھر ہم درج ذیل کو ٹائپ کرسکتے ہیں۔

بی ٹی ایف ایس سی 03 ایچ ، 0
اگر 1 پر سیٹ ہو تو یہاں جاری رکھیں
یا یہاں اگر 0 پر سیٹ کیا گیا ہے

اگر بٹ کی حیثیت 1 ہو ، اس صورت میں بی ٹی ایف ایس سی کے بعد کی ہدایت مکمل ہوجائے گی۔ اگر یہ 0 پر سیٹ کردی گئی ہے تو ، اس صورت میں بعد میں دی گئی ہدایات کو چھوڑ دیا جائے گا۔ کوڈ کی نمائش کا مندرجہ ذیل حصہ جس میں اس کا استعمال کیا جاسکتا ہے:

لوپ:
:
:
بی ٹی ایف ایس سی 03،0
گوپو لوپ

مندرجہ بالا کوڈ میں ، PIC صرف STATUS رجسٹر (یا کیری جھنڈا) کے 0 میں بیان کی گئی ہے تو 0 سے باہر ہو جائے گی۔ یا دوسری صورت میں ، گیٹو کمانڈ کیا جائے گا۔

بی ٹی ایف ایس

اس ہدایت میں بٹ ٹیسٹ رجسٹر ایف درج ہے ، اور اگر سیٹ کریں تو چھوڑ دیں۔ اس کا موازنہ بی ٹی ایف ایس سی ہدایات سے کیا جاسکتا ہے ، اس کے علاوہ پی آئی سی اس کے بعد کی ہدایت کو خارج کردے گی اگر ہم جس قدر تھوڑا سا تشخیص کررہے ہیں اسے 0 کی بجائے 1 پر مقرر کیا گیا ہے۔

سی ایل آر ایف

یہ ہدایات کسی رجسٹر کی پوری تفصیلات کو 0 پر طے کردے گی۔ نحو یہ ہے:

سی ایل آر ایف
ہم نے اس سے پہلے سی ایل آر ایف 85 ایچ لاگو کرکے بندرگاہوں کے آؤٹ پٹ کو 0 پر مقرر کرنے کے لئے ملازم کیا تھا۔ مزید یہ کہ ہم نے اس کو استعمال کیا کہ بندرگاہوں کو ٹھیک کرنے کے لئے سی ایل آر ایف کا استعمال کرکے تمام پنوں کو آؤٹ پٹ میں شامل کریں
05 ہ

سی ایل آر ڈبلیو

یہ CLRF کی ہدایت سے مشابہت ہوسکتی ہے ، سوائے W کے رجسٹر کو کلیئر کرنے کے۔ نحو بہت آسان ہے:

سی ایل آر ڈبلیو

آر ایل ایف اور آر آر ایف

یہ سمتیں ایک رجسٹر میں تھوڑا سا نقل میں بائیں طرف (آر ایل ایف) یا دائیں (آر آر ایف) میں رجسٹر میں منتقل کردیتی ہیں۔ مثال کے طور پر ، اگر ہمیں 00000001 کی ضرورت ہو اور ہم نے RLF کو ملازمت حاصل کی ہو ، تو ایسی صورت میں ہم 00000010 کے مالک ہوسکتے ہیں۔ اس مقام پر ، اگر 10000000 موجود ہے اور RLF کی ہدایت کا اطلاق کیا ہے تو اس میں کیا ہوگا؟ یقینی طور پر ، 1 کیری جھنڈے میں رکھا جائے گا۔ اگر ہم نے ایک بار پھر آر ایل ایف کی ہدایت کا اطلاق کیا تو ، شروع میں 1 دوبارہ ظاہر ہوگا۔ یکساں ہوتا ہے ، تاہم ، اس کے برعکس ، آر آر ایف کی ہدایت کے لئے۔ مندرجہ ذیل معاملہ آر ایل ایف کی ہدایت کے لئے یہ ظاہر کرتا ہے ، جس میں ہمارے پاس کسی رجسٹر کے 8 بٹس ، ساتھ ساتھ کیری جھنڈا بھی دیکھا جاسکتا ہے۔

C 87654321
000000001
آر ایل ایف 0 00000010
آر ایل ایف 0 00000100
آر ایل ایف 0 00001000
RLF 000010000
آر ایل ایف 0 00100000
آر ایل ایف 0 01000000
آر ایل ایف 0 10000000
آر ایل ایف 1 00000000
آر ایل ایف 0 00000001

مثال پروگرام

اب ہم ایک مثال کے کوڈ کو دیکھنے والے ہیں جس کو مرتب کرکے ڈرائیو کرسکتے ہیں۔ یہ PortA بٹ 0 سے ایک ترتیب روشنی پیدا کرے گا ، جو پورٹ بیٹ 8 اور پر جا رہا ہے
پھر لوٹنا۔
پورٹ پنوں میں سے ہر ایک پر ایل ای ڈی لگائیں۔ ہمارے پاس تھوڑا سا ہوگا
اس سبق میں طریقہ کار کی نشاندہی کی۔

تاخیر والے لوپ کے لئے ٹائم ای ای یو 9 ایف ایچ متغیر۔
پورٹ بی ای کیو 06 ایچ پورٹ بی ایڈریس۔
TRISB EQU 86H Port B Tristate ایڈریس۔
پورٹا ای کیو 05 ایچ پورٹ اے ایڈریس۔
ٹرزا ای کیو 85 ایچ پورٹ اے ٹرسٹیٹ ایڈریس۔
صورتحال ایکو 03 ایچ پیج کو منتخب کریں۔
COUNT1 EQU 0CH لوپ رجسٹر۔
COUNT2 EQU 0DH لوپ رجسٹر۔

بی ایس ایف اسٹیٹس ، 5 صفحہ 1 پر جائیں
MOVLW 00H اور سیٹ اپ کریں
MOVWF TRISB دونوں بندرگاہ A اور B
آؤٹ پٹ میں MOVLW 00H ،
MOVWF ٹرزا پھر واپس جائیں
بی سی ایف اسٹیٹس ، 5 صفحہ 0
MOVLW 00H کلیئر پورٹ A
MOVWF دروازہ

مرکزی پروگرام کا آغاز

رنومول
01H پہلا بٹ MOVWF مرتب کریں
پورٹ بی سی ایل پر پورٹ بی
DELAY تھوڑی دیر انتظار کریں کال کریں
تاخیر
تھوڑا سا پورٹ B کے بائیں طرف منتقل کریں ، پھر موقوف کریں
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRLF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRLF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRLF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRLF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRLF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRLF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRLF
پورٹ بی ، 1 یہ تھوڑا سا لے جانے والے جھنڈے میں لے جاتا ہے
اب پورٹ A کی طرف بڑھیں ، اور تھوڑا سا بائیں طرف منتقل کریں
پورٹا ، 1 یہ صفر پرچم سے تھوڑا سا پورٹاکال میں منتقل ہوتا ہے
DeLAYCALL DeLAYRLF
دروازہ ، 1 کال
DeLAYCALL
DELAYRLF
دروازہ ، 1 کال
DeLAYCALL
DELAYRLF
دروازہ ، 1 کال
DeLAYCALL
تاخیر
تھوڑا سا پیچھے پورٹ ARRF پر منتقل کریں
دروازہ ، 1 کال
DeLAYCALL
DELAYRRF
دروازہ ، 1 کال
DeLAYCALL
DELAYRRF
دروازہ ، 1 کال
DeLAYCALL
DELAYRRF
پورٹا ، 1 یہ تھوڑا سا صفر پرچم میں منتقل کرتا ہے اب تھوڑا سا منتقل کریں
واپس پورٹ BRRF پر
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRRF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRRF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRRF
پورٹ بی ، 1 کال
DELAYCALL DELAYRRF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRRF
پورٹ بی ، 1 کال
DeLAYCALL
DELAYRRF
پورٹ بی ، 1 کال
DeLAYCALL
ڈیلے ، اب ہم واپس آئے ہیں جہاں سے ہم نے آغاز کیا ، گوٹو
چلیں پھر چلیں۔

ٹریننگ سیٹ میں ایک بہت اچھا آپشن موجود ہے جو آپ کو ڈیٹا ٹیبل کو استعمال کرنے کی اجازت دیتا ہے۔

ڈیٹا ٹیبل صرف اعداد و شمار کے حوالوں کی ایک فہرست ہے ، جس میں کچھ غور و خوض کی بنا پر سب کو دیکھا جاتا ہے۔
مثال کے طور پر ، آپ کے پاس ایک سرکٹ ہوسکتا ہے جس میں پی آئی سی استعمال ہوتا ہے جو مثال کے طور پر ان پٹ پن میں 1 سیکنڈ میں زیادہ ہوجاتا ہے۔ اس کے بعد آپ 7 طبقہ کے ڈسپلے میں نمبر کی نمائش کرسکتے ہیں۔

جیسے ہی وقت کا آغاز ہوا ، پی آئی سی نے مواقع کی مقدار گننا شروع کردی جو پن اونچی ہوجاتی ہے۔ 1 سیکنڈ کے بعد یہ ٹیبل کا دورہ کرتا ہے اور اعداد و شمار پر نظر ڈالتا ہے جس میں اس کو ڈسپلے پر موجود نمبر کو ظاہر کرنا ہوگا جو پن کی اونچائی پر آنے والی صورتحال کی علامت ہے۔ یہ فائدہ مند ثابت ہوسکتا ہے ، کیونکہ ہم طے نہیں کرتے ہیں کہ جب تک PIC اس کا تخمینہ نہیں لیتی اس کے بعد یہ اعداد و شمار کیا ہوسکتے ہیں۔

کسی ٹیبل کو استعمال کرکے ، ہم پی آئی سی کو اس بات کی اجازت دینے کے اہل ہیں کہ وہ کون سا اعداد و شمار پیش کرے۔ اس مرحلے پر ، اس سے پہلے کہ میں آپ کو یہ ظاہر کرتا رہوں کہ ڈیٹا ٹیبل کس طرح کام کرتا ہے ، مجھے آپ کو یہ کہنا پڑسکتا ہے کہ پی آئی سی پروگرام میں کام کرنے کے دوران اس کے ٹھکانے کا راستہ برقرار رکھتی ہے۔

یہ ان لوگوں کے لئے سہولت فراہم کرتا ہے جنہوں نے بیسک میں کچھ خاص پروگرامنگ انجام دیا ہے۔ بصورت دیگر ، آپ پریشان نہ ہوں ، آپ نظریہ کے بارے میں سیکھنا جاری رکھنا چاہتے ہیں۔ تصور کریں کہ ایک بیساک پروگرام ہے جیسا کہ ذیل میں پیش کیا گیا ہے:

10 سال K = 0
11 کے = K + 1
12 IF K> 10 پھر جائیں 20 ELSE GOTO 11
20 پرنٹ K
21 اختتام

یہ پروگرام لائن 10 پر شروع ہوتا ہے جیسے ہی کے 0 کے شیڈول ہوجاتا ہے ، یہ اگلی لائن 11 میں آجاتی ہے۔ اس کے بعد جب ہم نے 1 کو K بھی شامل کیا ہے تو ہم اس کے بعد لائن 12 میں آگے آجاتے ہیں۔

اگر K 10 سے زیادہ ہے تو ہمیں اس وقت دلچسپی ہوسکتی ہے ، صورت میں ، اگلا ہم 20 کی طرف جائیں گے ، ورنہ ہم لائن 11 پر واپس آجائیں گے۔

لائن 20 K کے دستاویزات کرتی ہے ، اور لائن 21 پروگرام کو ختم کرتی ہے۔ بیساک لائن پروگرام کے اعدادوشمار کو ملازمت دیتا ہے تاکہ پروگرامر کو اس بات کا ریکارڈ رکھنے میں مدد فراہم کی جا issues کہ لیبل اجازت نہیں رکھتے ہیں۔ PIC مقصود کے مابین فرار ہونے کے ل lab لیبل لگائے۔

ہم لیبلوں کا استعمال اس بات کو یقینی بنانے کے لize کرتے ہیں کہ ہمیں معاملات کہاں سے آگاہ ہوں ، نیز اس بات کا یقین کرنے کے لئے کہ ہم PIC کو ایک آسان طریقہ سے آگاہ کرسکتے ہیں کہ کہاں تلاش کرنا ہے۔

یقینی طور پر جو ہوتا ہے وہ ہوتا ہے جو پی آئی سی اندرونی لائن کاؤنٹر سے فائدہ اٹھاتا ہے جسے پروگرام کاؤنٹر کہا جاتا ہے۔ پروگرام کاؤنٹر (پی سی کا مختصرا)) میموری کی منزل کا ٹریل جہاں کی موجودہ ہدایت ہے۔

ہم جب بھی پی آئی سی کو کسی منتخب لیبل کو دیکھنے کے لئے مطلع کرتے ہیں تو ، یہ میموری کی جگہ کو سمجھتا ہے اور اس وجہ سے پی سی کو بڑھا دیتا ہے جب تک کہ اس میموری کی منزل کو نہ دیکھیں۔ یہ بالکل وہی طریقہ ہے جیسا کہ ہم اوپر کا بنیادی پروگرام چیک کرتے ہیں۔ ذیل میں کوڈ کا ایک طبقہ ہے ، میموری کی جگہوں کے ساتھ ، یا پی سی کے آئٹمز ، ہر ہدایت کے ساتھ:

پی سی انسٹرکشن0000 موول 03
0001 موووف 0 سی
0002 لوپ decfsc 0C
0003 گوٹو لوپ
0004 اختتام

مندرجہ بالا مظاہرے میں ، ہم نے پی سی کو 0000 پر مقرر کیا ہے۔ اس پر ہمارے پاس ہدایات کی نقل 03 ہے۔ جب پی آئی سی نے اس ڈیٹا کو نافذ کیا ہے تو ، اس سے پی سی میں اضافہ ہوتا ہے تاکہ بعد کی ہدایت کو اسکین کیا جائے۔ اس مقام پر پی آئی سی کا نظریہ موویف 0 سی ہے۔ پی سی میں ایک بار پھر اضافہ ہوا ہے۔

اب PIC کا مطالعہ decfsc 0C ہے۔ اگر 0C کی تفصیلات 0 نہیں ہیں ، تو اس صورت میں پی سی میں 1 کا اضافہ ہوتا ہے ، نیز مندرجہ ذیل ہدایات ، گوٹو لوپ ، پی سی کو پوزیشن 0003 پر واپس آنے کے لئے مطلع کرتی ہے ، جس میں مذکورہ لوپ موجود ہے۔ اگر 0C کی تفصیلات 0 ہیں تو ، پھر پی سی کو 2 سے اضافے کا مشورہ دیا جاتا ہے ، بعد میں دی گئی ہدایات کو آسانی سے چھوڑ دیں۔

ڈیٹا ٹیبل کو سمجھنا

یہ پی سی کو 0004 پوزیشن پر رکھتا ہے ، جس میں پروگرام ختم ہوتا ہے۔ منزل مقصود کو جمع کرنے والے کے ذریعہ طے کیا جاتا ہے ، اور ہمیں عام طور پر اس بات کی فکر نہیں کرنی چاہئے کہ پی سی کیا کام کر رہا ہے۔ یہاں تک کہ ہمیں ضرورت ہے کہ ہم اسے اسی طرح قابو میں رکھیں جب ہم ڈیٹا ٹیبل کو استعمال کرتے وقت کرتے ہیں۔ ڈیٹا ٹیبل کے کام کرنے کا طریقہ بیان کرنے کا سب سے آسان طریقہ یہ ہے کہ ایک مثال کے ساتھ شروع کیا جائے۔

پی سی برابر 02
Movlw 03
کال ٹیبل
:
ٹیبل ایڈ ڈبلیو ایف پی سی
retlw 01
retlw 02
retlw 03
retlw 04
retlw 05
retlw 06
retlw 07
واپسی

ابتدائی ہدایت پروگرام کاؤنٹر (02h) کے پتے کے ساتھ لیبل پی سی مختص کررہی ہے۔ ہم 03h کی قیمت ڈبلیو رجسٹر میں ڈالنے کے بعد جلد ہی ہوں گے۔ اس کے بعد ہم میز پر بات چیت کرتے ہیں۔ سبروٹین ٹیبل میں سب سے آگے کی لکیر ڈبلیو رجسٹر کی تفصیلات کو پروگرام کاؤنٹر میں بڑھا دیتی ہے۔

یہ پروگرام کاؤنٹر کو 3 سے بڑھا کر ، یا اسے ایک مختلف انداز میں رکھنے کے لئے متحرک کرتا ہے ، 3 لائنوں کو آگے بڑھنے کے لئے پروگرام کاؤنٹر کو متحرک کرتا ہے۔ جب کاؤنٹر 3 لائنوں کے نیچے آتا ہے پی آئی سی نے ہدایت نامہ کو تسلیم کیا۔ یہ کمانڈ W کے اندراج میں اس کے بعد کی قیمت بھیجتی ہے ، جس کے بعد سبروٹین سے واپس آجاتی ہے۔ RETLW بنیادی طور پر W ، واپسی کا اشارہ کرتا ہے

دیکھیں میں نے واپسی کے لفظ کے بعد کوما رکھا ہے۔ چونکہ ہم ایک سبروٹین میں ہیں ، لہذا ہمیں اس کی سطح پر واپسی کی ہدایت کی ضرورت ہے۔ لہذا ہدایات میں RET. RETLW کی ہدایت کے بعد ایک نمبر ہے ، اور ڈبلیو رجسٹر میں یہی ڈالا جاتا ہے۔

اس مثال کے طور پر یہ اعداد و شمار 3 ہیں۔ ہم کسی بھی مقدار کو ڈبلیو رجسٹر کے لئے نامزد کرسکتے ہیں ، جب تک کہ یہ اعداد و شمار ٹیبل سبروٹین میں پروگرام کاؤنٹر کے ساتھ مل جائیں تو ہم ایک جوابی ہدایات دریافت کریں گے۔ مذکورہ بالا مثال میں اس سے ظاہر ہوتا ہے کہ ہم 1 سے 7 تک کسی بھی تعداد کے مالک ہیں۔ اگر ہم سبروٹین سے آگے نکل جاتے ہیں تو ، ہم پروگرام کے ایک اضافی حصے کو انجام دینے میں کامیاب ہوجائیں گے۔ اسی وجہ سے ، عام طور پر یہ اعداد و شمار کی میز کو بالکل PIC پروگرام کے اختتام کی طرف رکھنا ایک سمارٹ اقدام ہے ، لہذا اگر ہم اس معاملے میں اوورشوٹ کرتے ہیں تو ہم کسی بھی طرح پروگرام کے اختتام پر پہنچنے والے ہیں۔

رکاوٹوں کا موضوع سب سے لمبا اور مشکل ترین ثابت ہوسکتا ہے۔

آپ کو مداخلتوں کی تفصیل دینے کا کوئی پیچیدہ طریقہ نہیں مل سکتا ، تاہم اس حصے کے اختتام کی طرف تھوڑی قسمت کے ساتھ آپ اپنے پروگراموں میں مداخلتیں لاگو کرسکتے ہیں۔
ہم نے سیکشن کو 2 مراحل میں الگ کردیا ہے۔ اس سے عنوان کو حصوں میں الگ کرنے کے قابل بنانا ہے ، اور آسانی سے سمجھنے کے ل you آپ کو ایک آسان کام فراہم کرنا ہے۔

بالکل ایک رکاوٹ کیا ہے؟ یقینی طور پر ، جیسا کہ اصطلاح اشارہ کرتی ہے ، ایک رکاوٹ ایک ایسی تکنیک یا سگنل ہے جو مائکرو پروسیسر / مائکروکنوٹرالر کو ہر اس چیز سے روکتا ہے جس کے انجام دینے سے یہ کچھ مختلف ہوسکتا ہے۔

مجھے آپ کو روزانہ کی ایک مثال پیش کرنے کی اجازت دیں۔ سوچئے کہ آپ اپنے ہی گھر میں آرام کر رہے ہیں ، اور کسی دوسرے شخص سے گفتگو کر رہے ہیں۔ اچانک فون کی آواز آرہی ہے۔

آپ نے بات کرنا چھوڑ دی ، اور کال کرنے والے سے بات کرنے کے لئے ٹیلیفون پکڑ لیا۔ ایک بار جب آپ سے ٹیلیفون کا تعامل ہوجائے تو ، آپ ٹیلیفون کی گھنٹی بجنے سے پہلے ہی فرد سے گفتگو کرنے پر واپس جانے کا فیصلہ کرتے ہیں۔ کسی سے باتیں کرتے وقت اس کے معمولات پر غور کرنا ممکن ہے ، فون کی گھنٹی بجنے سے آپ کی گفتگو میں خلل پڑتا ہے ، اور روٹین میں توڑ فون پر بات کرنے کا طریقہ ہے۔

جب کہ فون پر گفتگو ختم ہوجاتی ہے ، پھر آپ چیٹنگ کے اپنے معمول کے معمول پر واپس جاتے ہیں۔ یہ مثال ٹھیک ہے کہ پروسیسر کو کارروائی کرنے میں کس طرح مداخلت ہوتی ہے۔

پرائمری پروگرام کام کررہا ہے ، ایک سرکٹ میں کچھ خاص کام انجام دیتا ہے ، تاہم ، جب کوئی خلل ہوتا ہے تو بنیادی پروگرام رک جاتا ہے جبکہ ایک مختلف روٹین انجام دیا جاتا ہے۔ معمول ختم ہوتا ہے ، پروسیسر بالکل پہلے کی طرح پرائمری روٹین میں چلا جاتا ہے۔

مداخلتوں کو سمجھنا

پی آئی سی کے پاس مداخلت کے 4 ذرائع ہیں۔ ان کو کئی ایک گروہوں میں توڑا جاسکتا ہے۔ دو رکاوٹوں کا ذریعہ ہیں جو PIC میں ظاہری طور پر استعمال ہوسکتے ہیں ، جبکہ دیگر دو داخلی عمل ہیں۔ میں یہاں دو بیرونی اقسام کو واضح کرنے دیتا ہوں۔ ایک بار جب ہم ٹائمر پر پہنچ کر اور ڈیٹا اسٹور کرتے ہیں تو دوسرے دو مختلف ٹیوٹوریلز میں بیان کیے جائیں گے۔

اگر آپ کو پی آئی سی کا پن آؤٹ چیک کرنا پڑتا ہے تو ، آپ دیکھیں گے کہ یہ پن 6 RB0 / INT ہے۔ اس مقام پر ، RB0 واضح طور پر پورٹ B بٹ ہے۔ INT نمائندگی کرتا ہے کہ یہ بیرونی مداخلت پن کی طرح تشکیل بھی کرسکتا ہے۔ مزید برآں ، پورٹ بی پنوں 4 سے 7 (پنوں 10 سے 13) کو بھی رکاوٹوں کے لئے استعمال کیا جاسکتا ہے۔ اس سے پہلے کہ ہم INT یا کسی اور پورٹ B پنوں پر ملازمت کر سکیں ، ہمیں لازمی طور پر دو کاموں کو پورا کرنا چاہئے۔ بہت پہلے ہمیں پی آئی سی کو آگاہ کرنا چاہئے کہ ہم رکاوٹیں استعمال کریں گے۔

اگلا ، ہمیں لازمی طور پر یہ بتانا ہوگا کہ ہم کون سا پورٹ بی پن I / O پن کی بجائے کسی رکاوٹ کے طور پر استعمال کرنے جارہے ہیں۔ پی آئی سی کے اندر آپ کو ایک رجسٹر مل سکتا ہے جس کو INTCON کے نام سے جانا جاتا ہے ، اور اس کا پتہ 0Bh پر ہے۔ اس رجسٹر میں آپ کو 8 بٹس دریافت ہوں گی جو قابل یا غیر فعال ہوسکتی ہیں۔ INTCON کا بٹ 7 GIE کے نام سے جانا جاتا ہے۔ یہ گلوبل انٹرگینپٹ قابل ہے۔ اسے 1 پر مقرر کرنے سے PIC کو آگاہ کیا جاتا ہے کہ ہم ایک رکاوٹ کو ملازمت دیں گے۔

INTCON کے Bit 4 کو INTE ، INTerrup सक्षम کے نام سے جانا جاتا ہے۔ یہ تھوڑا سا PIC کو پہنچانا کہ RB0 ایک رکاوٹ پن بننے جا رہا ہے۔ بٹ 3 کی تشکیل ، جسے RBIE کہا جاتا ہے ، نے PIc کو آگاہ کیا کہ ہم پورٹ B کے بٹس کو 4 سے 7 تک استعمال کرنے جارہے ہیں۔ اس وقت PIC سمجھتا ہے کہ جب یہ پن زیادہ یا کم ہوسکتا ہے تو ، اس کی کارکردگی کو روکنا ہوگا اور مداخلت کے ساتھ آگے بڑھنا ہوگا۔ روٹین اس مرحلے پر ، ہمیں پی آئی سی کو مطلع کرنا ہوگا کہ آیا اس رکاوٹ کا امکان بڑھتے ہوئے کنارے (0V سے + 5V) یا گرتا ہوا کنارے (+ 5V سے 0V) سگنل کی تبدیلی پر ہوگا۔

سیدھے الفاظ میں ، کیا ہم چاہتے ہیں کہ ہر وقت PIC رکاوٹ پیدا کرے جب سگنل ایک سے بلندی پر ، یا اعلی سے نیچے کی طرف جاتا ہے۔ جرم کے ذریعہ ، یہ قائم کیا جاسکتا ہے کہ اسے بڑھتے ہوئے کنارے پر رکھا جائے۔

کنارے ’ٹرگرنگ‘ ایک اضافی رجسٹر میں شیڈول کیا گیا ہے جسے آپشن رجسٹر کہتے ہیں ، ایڈریس 81h پر۔ جس قدر ہم پرجوش ہیں وہ تھوڑا سا 6 ہے ، جسے اکثر INTEDG کہا جاتا ہے۔

اسے 1 پر رکھنا PIC کو بڑھتے ہوئے کنارے (پہلے سے طے شدہ حالت) پر خلل ڈالنے کے لئے متحرک کردیتا ہے اور اسے 0 پر سیٹ کرنے سے PIC کو سلائیڈنگ کنارے پر خلل ڈالنے کی ترغیب دیتا ہے۔ اگر آپ چاہتے ہیں کہ PIC بڑھتے ہوئے کنارے پر سرگرم ہو ، تو آپ کو یقینی طور پر اس کے لئے کچھ کرنے کی ضرورت نہیں ہے۔

اس مقام پر ، افسوس کے ساتھ ، آپشن رجسٹر بینک 1 میں ہے ، اس کا مطلب ہے کہ ہم بینک 0 سے بینک 1 میں ترمیم کرنے میں لطف اٹھاتے ہیں ، اس کے بعد بینک 0 میں واپسی کے بعد آپشن رجسٹر میں تھوڑا سا سیٹ کریں۔ یہاں کی کلید ہر چیز کو پورا کرنا ہے بینک 1 کا ایک واحد ہڑتال میں اندراج ہے ، مثال کے طور پر پورٹ پن قائم کرنا ، اس کے بعد اگر آپ کا کام ہوجائے تو بینک 0 میں واپس آجائیں۔

ٹھیک ہے ، اس کے نتیجے میں ہم نے PIC کو مطلع کیا ہے کہ کون سا پن ممکنہ طور پر رکاوٹ کا باعث بنے گا ، اور جہاں ٹرگر ہونے کا رخ ہے ، پروگرام میں اور پی آئی سی میں کسی بھی وقت جب رکاوٹ پیش آتی ہے تو کیا چلتا ہے؟ سامان کی ایک جوڑے کی جگہ. بہت پہلے ، ایک ’’ پرچم ‘‘ طے شدہ ہے۔

یہ پی آئی سی کے اندرونی پروسیسر کو مطلع کرتا ہے کہ ایک وقفے سے رکاوٹ پیدا ہوگئی ہے۔ اگلا ، پروگرام کاؤنٹر (جس کے بارے میں میں نے پچھلے سبق کے بارے میں بات کی تھی) پی آئی سی کے اندر ایک مخصوص پتے سے متعلق نکات۔ آئیے تیزی سے ان سب کو انفرادی طور پر چیک کرتے ہیں۔ ہمارے INTCON رجسٹر میں ، بٹ 1 رکاوٹ والا جھنڈا ہے ، جسے INTF کہا جاتا ہے۔ اس مقام پر ، جب بھی کوئی خلل پڑتا ہے تو ، اس جھنڈے کا امکان 1 پر لگایا جائے گا۔

جب مداخلت نہیں ہوتی ہے تو ، پرچم 0 پر رکھ دیا جاتا ہے۔ اس کے ساتھ ہی یہ سب کچھ انجام پانے والا ہے۔ اس مقام پر آپ غور و فکر کر رہے ہیں ‘کیا بات ہے؟’ یقینی طور پر ، اگرچہ اس پرچم کو 1 کا شیڈول کیا گیا ہے ، پی آئی سی قابل نہیں ہے ، اور کسی اور مداخلت پر رد عمل ظاہر نہیں کرے گی۔ لہذا ، ہم اظہار کریں کہ ہم ایک رکاوٹ پیدا کرتے ہیں۔ ممکنہ طور پر یہ جھنڈا 1 سے طے ہوجائے گا ، اور پی آئی سی رکاوٹ کا کام کرنے کے لئے ہمارے معمول پر جاسکتی ہے۔

جب اس جھنڈے کو 1 پر طے نہیں کیا گیا تھا ، اور پی آئی سی کو اس مداخلت کا جواب جاری رکھنے کی اجازت دی گئی تھی ، تو پھر پن کو لگانے سے PIC ہماری مداخلت والے معمول کے آغاز میں واپس آسکتا ہے ، اور اسے کسی بھی طرح مکمل نہیں کیا جاسکتا ہے۔ ٹیلیفون کے میرے مثال کی طرف لوٹتے ہوئے ، یہ ٹیلیفون اٹھانے کے مترادف ہے ، اور فورا. ہی اس پر بحث کرنے کے لئے آگے بڑھنا پھر سے بجنا شروع ہوجاتا ہے کیونکہ کوئی دوسرا شخص آپ کے ساتھ بات کرنا چاہتا ہے۔

ایک مکالمہ مکمل کرنے کا مشورہ دیا جاتا ہے ، اس کے بعد فرد سے بات کرنے کے لئے دوبارہ فون پر قبضہ کریں۔ آپ کو اس پرچم کے ساتھ ایک چھوٹی سی پریشانی مل سکتی ہے۔ اگرچہ PIC جلدی سے اس پرچم کو 1 پر سیٹ کرتا ہے ، پھر بھی اسے 0 مرتب نہیں کرتا! اس سرگرمی کا استعمال پروگرامر کے ذریعہ کرنا چاہئے - یعنی آپ۔ یہ آسانی کے ساتھ پورا کیا جاسکتا ہے ، چونکہ مجھے کچھ خاص گمان ہے ، اور پی آئی سی کے درمیان رکاوٹ معمول پر عمل کرنے کے بعد اسے حاصل کرنے کی ضرورت ہے۔

یاد داشت کی جگہ جب بھی آپ شروع میں پی آئی سی کو طاقت بناتے ہیں ، یا پھر کوئی ری سیٹ موجود ہونے کی صورت میں ، پروگرام کاؤنٹر کو 0000h پر توجہ دینے کے لئے نکات ، جو پروگرام کی یادداشت کے آغاز پر فوری طور پر ہوسکتے ہیں۔ لیکن ، اگر اس میں کوئی خلل پڑتا ہے تو ، پروگرام کاؤنٹر پتہ 0004h پر ظاہر کرتا ہے۔

لہذا ، جب ہم اپنا پروگرام مرتب کررہے ہیں جس میں مداخلتیں ہوں گی ، ہمیں سب سے پہلے PIC کو مطلع کرنا ہوگا کہ وہ 0004h ایڈریس پر امید کریں ، اور اس رکاوٹ کے معمول کو برقرار رکھیں جو پروگرام کے بقیہ سے ایڈریس 0004h پر شروع ہوتا ہے۔

یہ انجام دینے میں پریشانی سے پاک ہوسکتا ہے۔ ابتدائی طور پر ، ہم اپنا پروگرام او آر جی کے نام سے جانے والی کمانڈ سے شروع کرتے ہیں۔ یہ حکم اصل کی طرف اشارہ کرتا ہے ، یا شروع ہوتا ہے۔ ہم اس کے ساتھ کسی پتے پر قائم ہیں۔ چونکہ PIC 0000h ایڈریس پر شروع ہوتی ہے ، لہذا ہم ORG 0000h ٹائپ کرتے ہیں۔ اس کے بعد ہمیں 0004h ایڈریس پر نظر انداز کرنا ہوگا۔ ہم ایک GOTO ہدایات لگا کر یہ کام انجام دیتے ہیں ، اس کے ساتھ ایک لیبل بھی ہوتا ہے جو ہمارے بنیادی پروگرام میں اشارہ کرتا ہے۔

اس کے بعد ہم ایک اور اور جی کے ساتھ اس GOTO کمانڈ پر عمل کریں گے ، اس لمحے کے ساتھ 0004h پتے کے ساتھ۔ اس کمانڈ کے بعد ہی ہم اپنا روکا ہوا روٹین ڈالیں گے۔ اس موقع پر ، ہم ممکنہ طور پر دوسری او آر جی کمانڈ کے بعد اپنی مداخلت والے معمول کو ٹائپ کرنے کے قابل ہوسکتے ہیں ، یا ہم ایک جی او ٹی او بیان دینے میں کامیاب ہوجاتے ہیں جو رکاوٹ کے معمول کی طرف اشارہ کرتا ہے۔

یہ واقعتا آپ کی طرف سے آپشن سے متعلق ہے۔ پی آئی سی کو مطلع کرنے کے لئے جو یہ پیش کش رکاوٹ معمول کے اختتام پر پہنچی ہمیں روٹین کے اختتام کی طرف RTFIE کمانڈ لگانی ہوگی۔ یہ کمانڈ مداخلت شدہ معمول سے واپسی کا اشارہ دیتی ہے۔ اگرچہ پی آئی سی نے اس کو نوٹس کیا ، پروگرام کاؤنٹر اشارہ کرتا ہے کہ مداخلت سے پہلے پی آئی سی کی آخری پوزیشن تھی۔ ہم نے مندرجہ بالا ڈسپلے کرنے کے لئے کوڈ کا ایک مختصر سیکشن نیچے قائم کیا ہے۔

رکاوٹیں استعمال کرتے وقت آپ کو مطلع کیا جانا چاہئے۔ ابتدائی رجحان یہ ہے کہ اگر آپ اپنے بنیادی پروگرام میں ایک جیسی رجسٹر اور مداخلت والے معمول کو بروئے کار لاتے ہو تو ، ذہن میں رکھو کہ جب رکاوٹ رونما ہونے پر رجسٹر کی تفصیلات زیادہ تر ممکنہ طور پر تبدیل ہوجاتی ہیں۔

مثال کے طور پر ، ڈبلیو رجسٹر کو ڈیٹا کو پورٹ اے پرائمری پروگرام میں بھیجنے کے لئے استعمال کریں ، لہذا آپ وقفے سے معمول کے مطابق ڈبلیو رجسٹر کا استعمال ڈیٹا کو ایک منزل سے دوسری جگہ منتقل کرنے کے لئے کر سکتے ہیں۔

اگر آپ محتاط نہیں رہتے ہیں تو ، ڈبلیو رجسٹر میں اس کی آخری قیمت بھی شامل ہوگی جب یہ وقفے سے معمول کے مطابق تھی ، لہذا جب آپ رکاوٹ سے واپس آجاتے ہیں تو یہ معلومات پورٹ اے کو پہنچانے والی ہے اس کی بجائے اس سے پہلے کہ آپ کے پاس اس کی قیمت ہے۔ رکاوٹ واقع ہوئی ہے.

اس کے آس پاس وسائل یہ ہیں کہ جب آپ رکاوٹ معمول کے مطابق ایک بار پھر اس کا استعمال کریں تو ڈبلیو رجسٹر کی تفصیلات کو لمحہ بہ لمحہ بچت کریں۔ دوسرا حقیقت یہ ہے کہ آپ اس کے درمیان تاخیر پاسکتے ہیں جب ایک رکاوٹ ہوتی ہے اور جب اس کے بعد پیدا ہوتا ہے۔ جب آپ سمجھتے ہو ، پی آئی سی کے پاس بیرونی گھڑی ہوتی ہے ، جو ممکنہ طور پر کرسٹل ہوسکتا ہے یا یہ ایک ریزسٹر-کیپسیسیٹر کومبو ہوسکتا ہے۔

اس گھڑی کی تعدد کی قطع نظر ، PIC اسے 4 سے تقسیم کرتا ہے جس کے بعد داخلی وقت کے لئے اس کو ملازمت دیتی ہے۔ مثال کے طور پر اگر آپ کے پاس 4 میگا ہرٹز کا کرسٹل آپ کے PIC سے منسلک ہے ، تو اس صورت میں PIC 1MHz پر ہدایات پر عمل کرے گی۔ اس داخلہ کا وقت انسٹرکشن سائیکل کے نام سے جانا جاتا ہے۔ اس مقام پر ، ڈیٹا شیٹ کا دعوی ہے (بلا شبہ کم پرنٹ میں) کہ آپ کو مداخلت کے درمیان 3 سے 4 انسٹرکشن راؤنڈ کو چالو کرنے کی ضرورت ہے۔

میرا 4 راؤنڈ قابل بنانا ہوگا۔ تاخیر کے پیچھے پی آئی سی کے لئے وقت درکار ہوتا ہے کہ وہ مداخلت والے پتے ، جھنڈے پر چھلانگ لگائے ، اور روکے روٹین سے واپس آجائے۔ لہذا ، اگر آپ پی آئی سی کے لئے کسی رکاوٹ کو چالو کرنے کے لئے متبادل سرکٹ کے ساتھ کام کرتے ہیں تو اسے اپنے ذہن میں رکھیں۔

اس مقام پر ، ایک نقطہ یہ حقیقت ہے کہ اگر آپ پورٹ بی کے 4 سے 7 بٹس کو ایک رکاوٹ کے طور پر استعمال کرتے ہیں۔ آپ کسی رکاوٹ کے طور پر کام کرنے کے لئے پورٹ بی پر مخصوص پنوں کا انتخاب کرنے سے قاصر ہیں۔

لہذا ، اگر آپ ان پنوں کی اجازت دیتے ہیں تو ، وہ ممکنہ طور پر تمام قابل استعمال ہوسکتے ہیں۔ لہذا ، مثال کے طور پر ، آپ کے پاس آسانی سے 4 اور 5 بٹس نہیں ہوسکتے ہیں - 6 اور 7 کے بٹس ایک ہی وقت میں بااختیار ہوجائیں گے۔ ایک رکاوٹ کی نمائندگی کرنے کے لئے چار بٹس حاصل کرنے کا اصل مقصد کیا ہے؟ یقینی طور پر ، آپ PIC کے پاس سرکٹ لگائے ہوئے ہوسکتے ہیں ، اگر کوئی چار لائنوں میں سے کوئی اونچی ہوجائے تو ، اس صورت میں یہ ایک مسئلہ ہوسکتا ہے کہ آپ کو پی آئی سی کو فوری طور پر اثر انداز ہونے کی ضرورت ہوگی۔

اس کی ایک مثال گھریلو سلامتی کا الارم ہوسکتا ہے ، جس میں چار سینسر پورٹ بی پنوں سے 4 سے 7 تک منسلک ہوتے ہیں۔ کوئی بھی مخصوص سینسر پی آئی سی کو الارم کو متحرک کرنے کا اشارہ کرسکتا ہے ، اور الارم سگنلنگ معمول ایک رکاوٹ معمول ہے۔ اس سے بندرگاہوں کی مستقل جانچ پڑتال سے بچ جاتا ہے اور پی آئی سی کو مختلف معاملات کو جاری رکھنے کی اجازت ملتی ہے۔ اگلے سبق کے اندر ، ہم ایک رکاوٹ کا انتظام کرنے کے لئے ایک پروگرام مرتب کرنے جارہے ہیں۔

ہم نے آخری سبق کے اندر بہت ساری بنیادی باتوں کا معاملہ کیا ، لہذا مجھے لگتا ہے کہ اب وقت آگیا ہے کہ ہم نے اپنا پہلا پروگرام مرتب کیا۔

ہم جس پروگرام کو لکھیں گے اس میں ان مواقع کی مقدار گنتی ہوگی جو ہم سوئچ کو چالو کرتے ہیں ، اور پھر اس کی نمائش کرتے ہیں۔

اس پروگرام کی گنتی 0 سے 9 تک ہوگی ، جو بائنری شکل میں 4 ایل ای ڈی پر دیکھنے کے قابل ہوگا ، اور اس کے ساتھ ساتھ ان پٹ یا مداخلت کا امکان بھی RB0 پر ہوگا۔

ہم سب سے پہلے جس چیز کا استعمال کرنا چاہئے وہ ہے پی آئی سی کو اس پتے پر اچھلنے کے لئے مطلع کرنا جس میں پروگرام کاؤنٹر جب بھی کوئی رکاوٹ پیش آتا ہے اس کی طرف اشارہ کرتا ہے۔

آپ دیکھیں گے کہ ہم ہیکساڈیسیمل نمبروں کی نمائش کا ایک انوکھا طریقہ استعمال کررہے ہیں۔ اس سے پہلے کہ میں ہوا F9h لگائیں جس میں ایچ نے ہیکساڈیسیمل کا اشارہ کیا۔ ہم اسے 0xF9 کے بطور لکھ سکتے ہیں ، یہی وہ ڈھانچہ ہے جسے ہم اب سے ملازمت کرنے جارہے ہیں۔

اب ہمیں پی آئی سی کو یہ بتانے کی ضرورت ہے کہ ہم رکاوٹیں استعمال کرنے جارہے ہیں ، اور ہم RB0 پن 6 کو ایک رکاوٹ پن کے طور پر استعمال کر رہے ہیں:

bsf INTCON، 7GIE - عالمی مداخلت قابل (1 = قابل)
bsf INTCON ، 4INTE - RB0 مداخلت قابل (1 = قابل)
میں اس معاملے میں مداخلت والے جھنڈے کو صاف کرنے جا رہا ہوں (مجھے کبھی بھی کسی چیز پر اعتبار نہیں ہے!)
bcf INTCON، 1INTF - صرف اس صورت میں پرچم سا صاف کریں

فی الحال ہمیں اپنی 2 بندرگاہیں قائم کرنا ہوں گی۔ یہ بات ذہن میں رکھیں کہ اب جب ہم RB0 کو ایک رکاوٹ پن کے طور پر استعمال کررہے ہیں ، اس کو ایک ان پٹ کے طور پر قائم کرنے کی ضرورت ہے۔

ہم سوئچ شمار کی تعداد کو ذخیرہ کرنے کے لئے ایک متغیر کا استعمال کریں گے جس کو COUNT کہتے ہیں۔ ہم صرف پورٹ اے کی قیمت میں آسانی سے اضافہ کرسکتے ہیں ، لیکن آپ دیکھیں گے کہ جب ہم اپنے مداخلت کا معمول لکھتے ہیں تو میں متغیر کیوں استعمال کر رہا ہوں۔

لہذا ، ہمارا پرنسپل پروگرام تشکیل دیا گیا ہے ، اور اس وقت ہمیں پی آئی سی کو مطلع کرنا ہوگا کہ جب بھی کوئی رکاوٹ پیدا ہوتی ہے تو آگے بڑھنے کے طریقے کو کس طرح پیش کیا جائے۔ اس مثال کے ساتھ ، ہماری رکاوٹ شاید سوئچ ہوگی۔ ہر بار جب ہم سوئچ محدود ہوجاتے ہیں تو ہم جو کچھ PIC کرنا چاہتے ہیں وہ سایڈست COUNT میں سے ایک ہے۔

بہر حال ، ہم صرف یہ ظاہر کرنا چاہتے ہیں کہ سوئچ 0 سے 9 تک بند ہوجاتا ہے۔ اوپر ، میں نے بتایا کہ ہر بار جب خلل پڑتا ہے تو ہم آسانی سے پورٹ اے پر قدر بڑھا سکتے ہیں۔ تاہم ، پورٹ اے میں 5 بٹس ہیں ، اگر ہم نے بندرگاہ میں آسانی سے اضافہ کیا تو ، ہم سب سے زیادہ تعداد 31 رکھیں گے۔ یہاں کچھ وضاحتیں ہیں کہ میں نے 31 تک نہ جانے کا انتخاب کیوں کیا۔

ابتدائی طور پر ، ہم 7 طبقات کی اسکرین پر ملازمت کریں گے ، جو زیادہ سے زیادہ صرف 0 سے 15 (ہیکس میں 0 سے F) تک جاسکتی ہے۔ اگلا ، میں اس کے علاوہ آپ کو ریاضی کے کچھ احکامات بھی دکھانا چاہتا ہوں جن پر آپ گذشتہ کچھ اسباق میں ٹھوکر کھا گئے تھے۔

لہذا ہم اپنے مداخلت والے معمولات کو جاری رکھیں گے۔ فی الحال ہم سب سے پہلے ہمیں اپنے ڈبلیو رجسٹر کی تفصیلات کو مختصر طور پر اسٹور کرنا ہے ، کیونکہ ہم اس کا اطلاق COUNT کے مندرجات کو پورٹا میں منتقل کرنے کے لئے کر رہے ہیں۔ اگر ہم اسے بچانے کے لئے تیار نہیں ہیں ، تو اس معاملے میں ہم اپنی ریاضی کی وجہ سے بالکل مختلف نمبر فراہم کرسکتے ہیں۔ لہذا پہلے اسے پورا کریں:

اس وقت ہم سمجھتے ہیں کہ آیا COUNT کی قیمت 9 یا اس سے زیادہ ہے۔ بس ہمیں ابھی تکمیل کرنے کی ضرورت ہے اگر کاونٹ 9 سے زیادہ ہے تو اسے 0 پر واپس رکھیں ، ورنہ مرکزی پروگرام پر واپس جائیں تاکہ یہ یقینی بنایا جاسکے کہ ہم اسے پورٹ اے تک پہنچانے کے اہل ہیں یا نہیں کیونکہ آپ سمجھتے ہیں کہ بی ٹی ایف ایس کمانڈ بعد میں ہوگا۔
کیری جھنڈا شیڈول ہونے کی صورت میں ہدایات COUNT مثلا COUNT COUNT = 10:

اب جو کام کرنا باقی ہے وہ ہے اجتماعی طور پر داخل ہونے کے ساتھ ساتھ اپنے استحکام کی قدروں کا تعی .ن کرنا ، جسے ہم اپنے پروگرام کے آغاز میں صحیح کارکردگی کا مظاہرہ کرنے کے اہل ہیں۔

جب بھی آپ سوئچ کو چالو کرتے ہیں ، ایل ای ڈی بائنری میں 0000 سے 1010 تک واپس جائیں گے اور پھر 0000 پر جائیں گے۔

مندرجہ ذیل اعداد و شمار مذکورہ بالا کوڈ کے ساتھ مطابقت پذیر سرکٹ ڈایاگرام کو ظاہر کرتا ہے۔ دلچسپ بات یہ ہے کہ آپ دیکھیں گے کہ ٹائمنگ کاپاکیٹر کو ڈیزائن میں شامل کیا گیا ہے۔ یہ ایک چھوٹی سی چال ہے جس کے ذریعہ آپ کو آزادی حاصل ہوتی ہے کہ اگر آپ اس وقت میں آپ کے ساتھ نہ ہوں تو کیپسیٹر کو شامل کرنے سے گریز کریں۔

یہاں گنجائش آسکیلیٹر پن اور گراؤنڈ میں آوارہ گنجائش کے ذریعے کھیل میں آتی ہے۔
یقینا ایسا نہیں لگتا ہے کہ عملی طور پر کاپسیٹر سے بچنا ایک بہت ذہین طریقہ ہے کیونکہ آوارہ قیمت مختلف دی گئی شرائط کے ساتھ مختلف ہوسکتی ہے۔

ایک اور حص whichہ جس کا سرکٹ میں مشاہدہ کیا جاسکتا ہے وہ سوئچ کے اس پار مذمت کرنے والا نیٹ ورک ہے۔ یہ میکانیکل سوئچنگ کے دوران مداخلت کو روکتا ہے اور اگر P سوئچ ایک ہی ٹوگل یا ایک سے زیادہ ٹوگلز تھا تو PIC کو الجھن میں پڑنے سے روکتا ہے۔




پچھلا: قابل پروگرام بائی ڈائریکشنل موٹر ٹائمر سرکٹ اگلا: بک بوسٹ سرکٹ کس طرح کام کرتے ہیں