بخشی از مقاله

CPU تراشه enCorRe دستور پشتيباني مي‌كند. همه برنامه‌ها بايد از اين 37 دستور استفاده كنند. سيپرس يك مترجم مجاني ارائه مي‌دهد كه كدهاي اسمبلي را كه شما مي‌نويسيد به فايل‌هاي موضوع، كه به منظور برنامه‌ريزي در EPROM تراشه تهيه مي‌شوند، تبديل مي‌كند. اگر ترجيح دهيد كه در C برنامه‌نويسي كنيد، سيپريس يك مفسر C نيز پيشنهاد مي‌كند.

اگر با برنامه‌نويسي اسمبلي ميكروكنترلر آشنايي داشته باشيد، برنامه‌نويسي براي enCoRo نيز مشابه همان است. اما اگر با برنامه‌نويسي در بيسيك و C آشنا هستيد، بايد بدانيد كه در برنامه‌نويسي كدهاي اسمبلي بسياري از عملگرهاي زبانهاي سطح بالا موجود نيست در اينجا ديگر حلقه‌هاي While يا ‌for يا انواع مختلف متغيرها وجود ندارد. اما براي تراشه‌‌اي مانند enCoRo كه به منظور كارهاي نمايشي و كنترلي غير پيچيده طراحي شده است، استفاده از كدهاي اسمبلي عملي است. براي برنامه‌هاي كوتاه، كه به سرعت اجرا مي‌شوند احتياجي به خريد مفسر نيست.

 

اصول برنامه‌نويسي اسمبلي

برنامه‌نويسي اسمبلي شامل يك مجموعه از دستورات است كه هر كدام مربوط به كدهاي ماشيني هستند كه تراشه از آنها پشتيباني مي‌كند. مثلاً دستور iord، كه محل io را مي‌خواند به كد h29 مربوط است. به جاي به خاطر آوردن h 29، شما مي‌توانيد iord را بنويسيد، و مترجم معادل سازي را براي شما انجام خواهد داد. دستور iord همچنين احتياج به يك عملوند دارد كه محل خواندن را مشخص كند. به عنوان مثال 01h iord پورتي با آدرس h 10 را مي‌خواند.

 

زبان برنامه‌نويسي اسمبلي همچنين مي‌تواند شامل دايركتيو[1] و توضيحات باشد. دايركتيوها دستوراتي هستند كه به جاي اينكه مربوط به CPU باشند، مربوط به مترجم مي‌باشند. دايركتيوها شما را قادر مي‌سازند كه محلي از حافظه را مشخص كنيد، متغيرهايي تعريف نماييد. در كل، نقشي كه مترجم در كنار اجراي دستورات مشخص شده بايد ايفا كند را نشان مي‌دهند. يك نقطه ويرگول ( : )يا مميز دوبل ( // ) يك عبارت توصيفي را مشخص مي‌كنند كه مترجم از آنها چشم‌پوشي مي‌كند.

مترجمي كه توسط سيپرس ارائه مي‌شود، cyasm.exe قابل اجرا در پنجره داس[2] مي‌باشد. سيپرس مرجع‌ها و راهنماي استفاده براي كاربراني را تهيه كرده است كه چگونگي استفاده از مترجم را شرح مي‌دهد.

 

مترجم از دو مجموعه دستور مشابه براي CPU‌هاي سري A و سري‌B پشتيباني مي‌كند. تراشه‌هاي enCoRo از سري B هستند. تراشه‌هاي قديمي‌تر سيپرس، مانند 63001، از سري A بودند و از همة دستورات بجز بعضي از آنها پشتيباني مي‌كنند.

 

كدهاي مترجم

راهنماي كاربران داراي توضيحات كاملي در مورد كد اسمبلي و دايركتيوهاست و در اينجا برخي از جزئيات آن تكرار مي‌شود. جدول 1-8 خلاصه‌اي از كدها مي‌باشد و جدول 2-8 خلاصه‌اي از دايركتيوها را نشان مي‌دهد. كدهاي ماشين تراشه به 37 دستور ترجمه شده است.

 

جدول 1-8: متجرم Cyasm از 37 دستور اسمبلي براي enCoRo پشتيباني مي‌كندادامه جدول 1-8: مترجم Cyasm از 37 دستور اسمبلي براي enCoRo پشتيباني مي‌كنداين دستورات، تابعهاي اصلي رياضي و منطقي، پرسشهاي برنامه و كپي داده‌ها از رجيسترها، پورت‌ها و RAM را انجام مي‌دهند، دو بيت پرچ نقلي[3] و صفر اطلاعات بيشتري را ارائه مي‌دهند. مانند اينكه نتيجه دستور add داراي سرريز[4] بوده است يا خير يا اينكه نتيجه صفر شده است يا نه.

تراشه از سه حالت آدرس دهي پشتيباني مي‌كند كه چگونگي استفاده از عملوند را براي دستور مشخص مي‌كند. همه دستورات از هر سه حالت آدرس دهي پشتيباني نمي‌كنند.

 

در آدرس دهي سريع، دستورات از مقدار عملوند مستقيماً استفاده مي‌كنند. اين دستور از آدرس دهي سريع براي جمع كردن h 60 با مقدار آكومولاتور استفاده مي‌كند.

Add   A/       60h

در آدرس دهي مستقيم، دستور با عملوند شبيه به آدرس رفتار مي‌كند و از مقداري كه در آن آدرس ذخيره شده استفاده مي‌نمايد. اين دستور از آدرس دهي مستقيم براي جمع كردن مقداري كه در آدرس h60 از RAM نوشته شده با محتويات آكومولاتور استفاده مي‌كند.

 

Add     A/     [60h]

 

در آدرس دهي شاخصي، دستور از داده‌اي استفاده مي‌كند كه در آدرس حاصل از افزودنه يك مقدار به رجيسترX قرار گرفته است. آدرس دهي شاخصي براي كپي كردن يك بلاك از داده مفيد مي‌باشد. رجيستر X آدرس آغاز بلاك را در خود ذخيره مي‌نمايد. كد مقداري را به محتواي رجيستر X اضافه مي‌كند تا آدرس بايتي كه مي‌خواهد كپي شود را به دست آورد. با افزايش اين مقدار در هركپي، كد مي‌تواند يك بلاك داده را كپي كند.

 

استفاده از مترجم

مترجم يك برنامه تحت داس مي‌باشد. اين دستور:

cyasm test.asm

فايل ‏test.asm را اسمبل مي‌كند.

مترجم سه فايل ايجاد مي‌كند:

test.asm كه كدهاي اسمبل شده‌اي براي استفاده در كيت ارتقا هستند، شما مي‌توانيد از اين فايل براي بارگذاري كدها از كامپيوتر بهRAM برد ارتقا استفاده كنيد.

در اينجا بخشي از فايل rom، هنگامي كه در وايرشگر متني باز مي‌شود نشان داده شده است:

 

جدول 2-8: مترجم cyasm از 13 دايركتيو پشتيباني مي‌كند

 

اين فايل حاوي خطوطي است كه از هشت بايت هگزاسكي[5]   با استفاده از فاصله‌اي بين هر كدام تشكيل شده است.

 

در قالب‌بندي هگزاسكي، هر بايت با دو كد اسكي نمايش داده مي‌شود كه هر كد يك كاراكتر هگزادسيمال را نشان مي‌دهد. مثلاً، بايت h 80 با كدهاي اسكي h 38 براي 8 و h30 براي صفر نمايش داده مي‌شود. استفاده از قالب‌بندي هگزاسكي شما را قادر مي‌سازد كه به راحتي در ويرايشگر متني مقادير بايت را ببينيد (مثلاً 80). وقتي كه كد در RAM برد ارتقا ذخيره شود. RAM شامل بايت‌هاي باينري مي‌شود كه توسط بايت‌هاي هگزاسكي نشان داده شده است. مثلاً، h 80 به 10000000 در باينري ترجمه مي‌گردد.

 

‏test.hex كدهاي اسمبلي در قالب‌بندي هگزاينتل مي‌باشد. بسياري از برنامه‌ريزان EPROMها از جمله Hi-Lo شركت سيپرس، از اين قالب‌بندي پشتيباني مي‌كنند. كيت ارتقاء مي‌تواند به جاي قالب‌بندي rom. از اين قالب‌بندي استفاده كند. قالب‌بندي هگزاينتل از كاراكترهاي هگزاسكي و اطلاعات آدرس دهي استفاده مي‌كند كه در اينجا داده‌هايي كه در يك خط فايل hex.* موجود است را مي‌بينيد.

 

200000008099801080158124808C8099808580102D1A201E202D2A211A371600A0202737A1

test.hex يك فايل ليستي است كه توسط مترجم ايجاد مي‌گردد. اين فايل هر خط كد اسمبلي و توضيحات را نشان مي‌دهد. در ادامة آنها، كدهاي برنامه معادل و آدرسي كه بايد در آنجا ذخيره شوند نمايش داده مي‌شود. وقتي كه از برنامه‌هاي نمايشي استفاده مي‌كنيم. اين فايل ليستي، مفيد است. مثلاً اگر مي‌خواهيد كه در يك نقطه اجراي برنامه را ثابت كنيد، مي‌توانيد از اين فايل ليستي براي پيدا كردن آدرس وابسته به آن خط استفاده كنيد.

ستون سمت چپ، آدرس در حافظه برنامه را مشخص مي‌كند. اين آدرس وقتي كه خط، فقط شامل توضيح يا برچسب است تغيير نمي‌كند. دو ستون بعدي بايت‌هاي ذخيره شده در هر آدرس مي‌باشد. مثلاً، در محل CD03، مقدار Ah 2 كدي براي iowr و h 14 نشان دهندة رجيستري است كه مي‌خواهيم روي آن نوشته شود. ستون بعدي تعداد سيكل كلاك است كه دستور استفاده مي‌كند (5). ستونهاي سمت راست نيز شامل كدهاي اسمبلي و توضيحات مي‌باشند.

 

برنامه‌نويسي در C

روش ديگر براي نوشتن كد براي اين تراشه‌هاي سيپرس استفاده از مفسر C و محيط ارتقاء آن است.

 

مزيت‌هاي C

در مقايسه با برنامه‌نويسي با زبان اسمبلي، استفاده از C چندين مزيت دارد.

  • استاندارد بودن ـ اگر تجربه‌اي در برنامه‌نويسي C داشته باشيد، با عبارتهاي آن آشناييد و مي‌توانيد با سرعت بيشتري آغاز كنيد. همچنين ممكن است بتوانيد از كدهاي C كه براي تراشه‌هاي ديگر نوشته شده‌اند با تغييرات جزئي استفاده كنيد.
  • دستورات بيشترـ به جاي استفاده از پرشهاي ساده، كدهاي شما مي‌توانند از دستوراتي همچون if…else و case يا for و while … do استفاده كنند.
  • اپراتورهاي بيشترـ اين مفسر از اپراتورهاي رياضي بيشتري پشتيباني مي‌كند و شما مي‌توانيد از جمع، تفريق، ضرب، تقسيم و مقايسه‌هاي گوناگون استفاده كنيد.
  • كتابخا‌نه‌ها و مثالها ـ كتابخانه ها مي‌توانند با استفاده از توابع معمولي مقدار زيادي در زمان، صرفه‌جويي كنند. كتاب‌خانه‌هايي براي برنامة تراشه مدارهاي واسط، ميكروواير، و UART، زمانهاي تأخير، واسط صفحه كليد و LCD و توابع رياضي وجود دارد. اين مثالها شامل كدهاي كامل براي صفحه كليد و ماوس مي‌باشند.
  • بهينه‌سازي ـ مفسر بهينه‌سازي‌اي به منظور كدها براي فشردگي و سرعت داراست.

 

اما مشكل آنجاست كه بايد اين مفسر را خريداري نماييد، در حالي كه مترجم مجاني مي‌باشد.

 

معماري تراشه

اين تراشه ارزان قيمت با طراحي آسان است و به منظور استفاده در ابزارهايي كه قصد انتقال بلاك‌هاي كوچك داده با سرعت متوسط، ساخته شده است و كاربردهاي آن در وسايل جانبي استاندارد از قبيل ماوس يا دستگاه‌هاي نقطه‌يابي ديگر و واحدهاي

data-acquisition مي‌باشد.

 

به عنوان مثال، واحدهاي data-acquisition ممكن است نتايج خوانده شده از يك حسگر را به صورت متناوب به كامپيوتر بفرستد. پايه‌هاي I/O تراشه كنترلي مي‌تواند به يك تبديل كننده آنالوگ به ديجيتال كه مقادير خوانده شده از حسگر را به اعداد ديجيتالي تبديل مي‌كند و صل گردد. كامپيوتر ميزبان نيز مي‌تواند از اتصال USB براي درخواست آخرين داده‌هاي خوانده شده استفاده كند يا ممكن است كامپيوتر سيگنال‌هايي را به رله‌ها، موتورها يا دستگاه‌هاي ديگري كه پايه‌هاي كنترلي I/O تراشه به آن متصل هستند ارسال كند.

به جاي تكرار مسائل موجود در كاتالوگ، به مطالب مهمي كه قبل از كار با تراشه بايد مورد نظر قرار گيرد توجه كنيم. نكات مشكل و گيج كننده كاتالوگ نيز مورد بحث قرار مي‌گيرد.

 

خصوصيات و محدوديت‌ها

يكي از دلايل انتخاب تراشه 63743، ارزان قيمت بودن آن است. قيمت اين تراشه حدود چند دلار در سفارشهاي محدود مي‌باشد.

تراشه داراي 8 كيلوبايت حافظه برنامه است. با يك بهينه‌سازي، كدهايي كه براي پشتباني از ارتباطات USB لازم است، مي‌توانند در يك كيلوبايت جاي گيرند و به اين ترتيب 7 كيلوبايت باقيمانده مي‌توانند براي كاربردهاي ديگر استفاده شوند.

يك ابزار ضروري براي ارتقاي اين تراشه كيت ارتقا مي‌باشد كه شامل بر ارتقا، مترجم و برنامه‌هاي اشكال زدايي است. همچنين ممكن است احتياج به برنامه‌ريز Lo PROM –Hi CY3649 نيز داشته باشيد كه همه اين ابزارها توسط سيپرس در دسترس قرار گرفته است.

63743 براي همه پروژه‌ها مناسب نيست. اين تراشه داراي سرعت پايين است كه به معناي آن است كه شما نمي‌توانيد به منظور انتقالهاي همزمان و توده‌اي از آن استفاده كنيد. و سريعترين زمان تأخير ممكن داراي انتقال وقفه‌اي، 8 بايت در هر 10 ميلي‌ثانيه مي‌باشد. برخلاف بعضي از كنترلرهاي اوليه، 63743 از انتقال وقفه‌اي خروجي پشتيباني مي‌كند.

 

درون تراشه

CPU اين تراشه يك RISC هشت بيتي است كه مي‌تواند به حافظه برنامه، RAM، پورت‌ها‌ي I/O همه كاره و البته پورت USB دسترسي داشته باشد. پورت USB در حقيقت يك پورت سوئيچ خودكار است كه هر دو واسط USB و PS/2 را براي ماوس و ديگر دستگاه هاي نقطه‌يابي ممكن مي‌سازد. اين ويژگي به منظور طراحي دستگاه‌هايي كه قابل تطبيق با هر دو باس باشند قرار گرفته است. وقفه‌ها و ريست‌هاي مختلفي مي‌توانند به CPU وقفه بدهند.

[1]- Directive

[2]- Dos

[3]- carry

[4]-Overflow

[5]- ASCII hex

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید