ساعة ذكية مع BASIC على 6502 المادية


ظل المعالج 6502 موجودًا منذ أكثر من 40 عامًا ولا يزال يستخدم في عدد من الأنظمة المدمجة. تواصل WDC إنتاج الرقاقات الطرفية من الفئة 65C02 و 65Cxx. وجد المؤلف أنها متاحة الآن في حزم PLCC و QFP ، ولكن نادراً ما يتم استخدام خيارات الرقائق هذه. لم تعد الدوائر الدقيقة في حزم DIP متوفرة ، لأن الطلب من جانب الشركات المصنعة محليًا وحده صغير جدًا. قرر المؤلف إنشاء أصغر لوحة فردية على 6502 ، وهو ما يمكنه. من الممكن أن يكون أصغر معالج أحادي اللوحة مصنوع يدويًا على هذا المعالج (غير عصامي وأقل ، على سبيل المثال ، تماغوتشي). والنتيجة هي جهاز يمكنك من خلاله اختيارياً تطوير حقيبة معصم بحزام. تم التقاط الشاشة من نوكيا 5110 ، وقد تمت كتابة الصدفة بواجهة جميلة ، وقد ظهر ، ربما ، الساعة الذكية الوحيدة على 6502.

تحتوي الساعة على: معالج 65C02 بتردد ساعة قدره 8 ميجاهرتز وشريحة 65C22 وشاشة تحكم LCD وأزرار استطلاعات على اللوحة ولوحة مفاتيح خارجية وشاشة Nokia 5110 (84 × 48 بكسل) و 32 كيلو بايت من ذاكرة الوصول العشوائي الساكنة و 16 كيلو بايت من ذاكرة الوصول العشوائي في مساحة العنوان. الجهد الكهربائي هو 3.3 فولت.

والأهم من ذلك: كمحطة لرسو السفن ، يمكنك توصيل مصفوفة لوحة المفاتيح من Commodore 64 بالموصل الموجود على اللوحة ، والحصول على شيء مشابه لـ Seiko UC-2000 ( مراجعة على Habré ):


الدائرة وطوبولوجيا لوحة الدوائر المطبوعة المترجمة في KiCad. أبعاد اللوحة على الوجهين هي 3x1.5 بوصة. جميع المكونات هي SMD ، باستثناء لوحة PLCC ، وكذلك موصلات لوحة المفاتيح وشاشات الكريستال السائل.



طوبولوجيا في الرسم التوضيحي ليس لتوسيع نطاق. ظهور اللوحة قبل التجميع:



بعد:



الأرشيف (الدوائر ، اللوحات ، البرامج الثابتة ، إلخ.)

على الساعة ، يمكنك تشغيل العديد من التطبيقات المدمجة. واحد منهم ، G'Mon (Generic Monitor) ، هو أداة التطوير والتصحيح الرئيسية. يتيح لك عرض وتحرير محتويات الذاكرة في خلايا وشظايا منفصلة ، والتحول إلى البرامج ، وملء أقسام ذاكرة الوصول العشوائي بالبايت المحدد ، ونقل الأجزاء عبر مساحة العنوان. يتم تبسيط إصدار الشاشة المستخدمة في الساعة ، بالإضافة إلى ذلك ، EhBasic يناسب ROM. بالكاد حصل عليها ، لم يتبق سوى 100 بايت مجانية. تتم إعادة ترجمة المترجم بطريقة تمكن من الجمع بين النواة. وهو بدوره يحتوي على جميع إجراءات التهيئة ، والعمل مع الواجهات الخارجية ، وكذلك العلاقة بين جميع البرامج المتاحة. وتطبيق آخر - القائمة الرئيسية.

يشغل رمز كبير يتفاعل مع شاشة LCD من Nokia 5110 جزءًا كبيرًا من النواة عبر بروتوكول SPI الذي تم تنفيذه من خلال البرنامج حتى 6522. يرسل البرنامجان الفرعيان WriteBYTE و Command بيانات ورسوم وأوامر إلى شاشة LCD على التوالي. نظرًا لعدم وجود وضع نص للجهاز ، تتم كتابة إجراءات إرسال الأحرف إلى الشاشة. يتم تخزين مولد الحروف في ROM ويمثله جدولان للبحث: أحدهما للبايت العالي ، والآخر للبايت المنخفض. تشير جميعًا إلى الموضع المطلق لبايت حرف البدء في ROM. يجب تشغيل روتين الكتابة بعد كتابة رمز ASCII على بطارية المعالج ، كما يتم استخدامه كتنسيق X لجداول البحث. يكتب الروتين أولاً رمز ASCII إلى المخزن المؤقت للشاشة في الذاكرة. ثم تقوم بالبحث عن بيانات البلاطة المقابلة وتعيين مؤشر لها. عرض 8 بايت متتالية من المؤشر ، فإنه يستدعي روتين CCheck. يتحقق ذلك برمجياً من موضع المؤشر ، وإذا كانت الشاشة ممتلئة ، فإنه يستدعي الروتين الفرعي Scroll ، الذي يحول الصورة بسطر نص واحد. نظرًا لأن المؤلف لم ينفذ القراءة من وحدة تحكم LCD ، يتم فهرسة النص وفقًا لموضع المؤشر وكتابته إلى المخزن المؤقت في الذاكرة. يعرض الروتين الفرعي Scroll الأسطر الثلاثة السفلية من المخزن المؤقت إلى الخطوط الثلاثة الأولى على شاشة LCD ، ثم تملأ الخط السفلي بمسافات. الروتين المتبقي للعمل مع شاشات LCD هو CReturn. يبحث من خلال جدول البحث عن الموضع الأولي للسطر التالي ، وإذا لم يكن السطر الحالي هو الأسفل ، فإنه يزيد موضع المؤشر بواحد. إذا كان بيت القصيد - يستدعي إجراء التمرير ، وعندها فقط ينتهي.

يتم استقصاء لوحة المفاتيح خلال 6522 بواسطة روتين GetKey الفرعي. يقرأ مصفوفة لوحة المفاتيح سطراً وكتابة البايتات إلى الذاكرة. إذا تحولت أي وحدات بت إلى صفر ، فإنها تحدد رمز ASCII للمفتاح المضغوط من خلال جدول البحث. في الأساس ، لا يحتوي الكود على دورات من أجل العمل في أسرع وقت ممكن. لا تستخدم الخطوط الفرعية لتحويل البتات المعطاة إلى مؤشرات جداول البحث ، ولكن كنتيجة لذلك ، تبين أن الكود كبير جدًا وغير فعال.

فيديو:


المؤلف لم يعد يعمل على هذه البرامج الثابتة ، وانتقل إلى مشاريع أخرى. إنه يأمل أن يكون الرمز مفيدًا لأولئك الذين يرغبون في التحكم في شاشة LCD من Nokia 5110 من لوحة واحدة إلى 6502. ويمكن بسهولة نقل الإجراءات المناسبة إلى برامج أخرى. وأهم هذه العناصر هي Write و Write_NS و Command و WriteBYTE و LCDInit و LCDClear و CCheck و CCheck_NS و CReturn و Scroll و SETCursor. إجراءات مفيدة أخرى هي LCDHome و WriteBMP. من الضروري وضع متغيرات LCDCursor و GTmp و GTmp5 و GTmp6 في الذاكرة ، وكذلك طول شاشة جدول 84 بايت. بالإضافة إلى ذلك ، هناك حاجة إلى جداول البحث CRTbl و CTableX و CTableY ، وكذلك الصور النقطية Char و Char2 مع جميع التجانبات.

إذا كنت ترغب في إنشاء مجموعات أخرى من التجانبات ، فاستخدم القوالب من مجلد الأصول. في GIMP ، قم بتصدير الصورة النقطية إلى ملف .data بتنسيق RGB (وليس RGBX). لا تنتبه إلى ملف .pal ، ثم ضع ملف .data في مجلد BitConvert من الأرشيف. تشغيل Convert.sh filename.data للحصول على ملف FONT.bin ، والذي سيكون مجموعة من البلاط.

Source: https://habr.com/ru/post/ar448758/


All Articles