جدول المحتويات:

برنامج AVR Assembler التعليمي 11: 5 خطوات
برنامج AVR Assembler التعليمي 11: 5 خطوات

فيديو: برنامج AVR Assembler التعليمي 11: 5 خطوات

فيديو: برنامج AVR Assembler التعليمي 11: 5 خطوات
فيديو: Assembly Microcontroller AVR 1 Introduction + program ميكروكنترولر اسيمبلى مقدمة اى فى ار + برنا مج 2024, يوليو
Anonim
برنامج AVR Assembler التعليمي 11
برنامج AVR Assembler التعليمي 11
برنامج AVR Assembler التعليمي 11
برنامج AVR Assembler التعليمي 11
برنامج AVR Assembler التعليمي 11
برنامج AVR Assembler التعليمي 11

مرحبًا بك في البرنامج التعليمي 11!

في هذا البرنامج التعليمي القصير ، سنقوم أخيرًا ببناء الجزء الأول من مشروعنا النهائي.

أول شيء يجب عليك فعله هو الانتقال إلى الخطوة الأخيرة من هذا البرنامج التعليمي ومشاهدة الفيديو. ثم عد هنا. [توقف أثناء القيام بذلك….] حسنًا. الآن المضي قدما.

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

السبب في أنني أقوم ببناء هذا هو أنني أعتقد أنني قد أرغب في نهاية المطاف في الحصول على طاولة كرابس فيغاس بالحجم الكامل في "كهف الرجل" في قبو منزلي. ومع ذلك ، ليس لدى أي من أصدقائي أدنى فكرة عن كيفية التعامل مع الرهانات والقوائم أو تسجيلها أو دفع تعويضاتها. لذلك اعتقدت أنه سيكون من الرائع أن تقوم الطاولة بجميع أعمال التاجر من أجلنا! عندما نضع رهانًا على الطاولة ، يمكننا أيضًا دفع زر ضغط صغير بجوار المربع الذي تظهر عليه رقائقنا لإظهار مقدار ما تم وضعه هناك ، ثم يمكن للمتحكم الدقيق حساب العائد لذلك المربع بعد لفة النرد وعرضه. ما زلت غير متأكد تمامًا من كيفية تنظيم هذا الجانب. اعتقدت أن كل شخص سيُطلب من كل شخص أن يضع كل رهاناته بدوره بحيث يسجل المتحكم مكان أموال كل شخص قبل تسجيل اللاعب التالي وما إلى ذلك. وبعد ذلك ، يمكن للكمبيوتر عرض الدفعات على كل مربع ويمكنه أيضًا الاحتفاظ "بإجمالي نقود" لكل لاعب.

بالنسبة لإحدى صور غلاف هذا البرنامج التعليمي ، كان علي فقط استخدام صورة لي وأنا أسحب 5 ارسالا ساحقا على طاولة البوكر في فيغاس هذا الصيف. هههه. تنغمس لي.

هنا رابط إلى المجموعة الكاملة من دروس مجمّع AVR الخاصة بي:

الخطوة 1: الفضلات

الفضلات!
الفضلات!
الفضلات!
الفضلات!
الفضلات!
الفضلات!

في هذا البرنامج التعليمي ، سنقوم فقط ببناء الجزء الأبسط من لعبة الكرابس النهائية. هذا يسمى "خط المرور" ويمكنك المراهنة عليه. يمكنك معرفة كل ما تحتاج لمعرفته حول جزء "خط المرور" من اللعبة من خلال مشاهدة مقطع فيديو تعليمي قصير مدته دقيقتان أرفقته بهذه الخطوة.

سنقوم بإنشاء شاشة عرض أخرى مكونة من 4 أرقام والتي سوف تتعقب نقود الموزع بنفس الطريقة التي تتبعها شاشة العرض الحالية المكونة من 4 أرقام لتتبع أموال اللاعب. سيبدأ الموزع بمبلغ 20 دولارًا وسيبدأ اللاعب بمبلغ 20 دولارًا (إجمالي الأموال الممكنة في اللعبة هو 9999 دولارًا - الحد الأقصى لشاشات العرض المكونة من 4 أرقام ، لكننا سنحتاج فقط إلى 20 دولارًا لهذه القطعة الأولى من اللعبة أو خلاف ذلك. سيكون مملاً في أقصى الحدود ويصعب الفوز أو الخسارة في فترة زمنية مناسبة). إذا أخذ اللاعب كل أموال التاجر ، يفوز اللاعب. إذا فقد اللاعب كل أمواله ، يفوز التاجر.

كيف تربح أو تخسر المال؟ حسنًا ، أولئك الذين لعبوا لعبة الكرابس ، أو شاهدوا أشخاصًا "يطلقون النرد" في الشارع ، أو شاهدوها تُلعب ضد الكازينو في فيغاس ، سيعرفون بالفعل. بالنسبة لبقيةكم ، اسمحوا لي أن أقدم لكم وصفًا موجزًا لجزء "خط المرور" من اللعبة الذي سنقوم بترميزه اليوم.

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

الطريقة التي يعمل بها خط المرور هي هذه. تضع رهانًا ثم تقوم برمي النرد. أول لفة تسمى "لفة الخروج". إذا حصلت على 2 (عيون ثعبان) أو 3 (ace deuce) أو 12 (صندوق سيارات) في لفة الخروج ، فإنك تخسر رهانك ويسمى "craps". إذا قمت بتدوير 7 (طبيعي) أو 11 (a yo ، أو yo-leven) فستفوز. إذا قمت بتدوير أي رقم آخر ، فسيصبح هذا الرقم هو "نقطتك". بمجرد إنشاء "نقطة" ، ستستمر في رمي النرد بهدف ضرب النقطة مرة أخرى قبل رمي 7. إذا حصلت على نقطتك قبل رمي 7 ، فستربح حتى نقودًا. لذا فإن الرهان بالدولار يكسبك دولارًا من التاجر. إذا حصلت على 7 قبل طرح نقطتك ، فهذا يسمى "سبعة خارج" وستفقد رهانك للتاجر.

بعد ذلك تبدأ من جديد. ضع رهانًا على خط المرور ورمي النرد ، 7 أو 11 فوزًا ، 2 ، 3 ، أو 12 خسارة.

هناك العديد من أنواع الرهانات ، "لا تنجح" ، "تمرر الاحتمالات" ، "لا تنجح في الاحتمالات" ، "تعال رهان" ، "لا تراهن" ، "حقل" ، "بورن" ، " طرق صعبة "، وما إلى ذلك ، وما إلى ذلك ، يمكنك العثور على التفاصيل هنا:

en.wikipedia.org/wiki/Craps

كما قلت أعلاه ، في الوقت الحالي ، سنقوم فقط بترميز جزء خط المرور من اللعبة وهو كل ما كان لديهم في اليوم الذي كان فيه الأطفال يرمون النرد على الحائط من أجل نقود غداء بعضهم البعض ، وبالتالي هذا هو المكان الذي سنبدأ فيه.

ومع ذلك ، قبل أن نبدأ في البرمجة ، فلنقم ببناء العرض النقدي للوكيل. لهذا ، أريد استخدام واحدة من أكبر شاشات العرض المكونة من 4 أرقام والتي يمكنك الحصول عليها من Sparkfun أو في أي مكان آخر. من الآن فصاعدًا ، لن أقوم بإدراج المواد الموجودة في هذه البرامج التعليمية. إذا كنت تقوم بالفعل ببناء كل شيء معي ، فأنت تعرف بالفعل من أين تحصل على المواد وما هي. من غير المجدي بالنسبة لي أن أسردها أو كم تكلفتها.

لذلك ، لنأخذ إحدى لوحات النماذج الأولية لدينا ، وشاشة كبيرة مكونة من 4 أرقام ، و ATmega328p أخرى للتحكم في هذه الشاشة ، وبنائها كما فعلنا مع بكرة النرد ، وعرض المشغل من قبل. سنقوم أيضًا بإرفاق رؤوس للطاقة والبرمجة واتصالات TWI تمامًا مثل الآخرين.

الخطوة 2: العرض النقدي للتاجر

العرض النقدي للتاجر
العرض النقدي للتاجر
العرض النقدي للتاجر
العرض النقدي للتاجر
العرض النقدي للتاجر
العرض النقدي للتاجر

نقوم ببناء عرض الموزع بنفس الطريقة التي استخدمناها مع شاشة اللاعب المكونة من 4 أرقام في البرنامج التعليمي الأخير. الاختلاف الوحيد هو أنه أكبر ، ويحتوي على عدد أقل من المسامير ، لذلك سنقوم بترتيبها وتوصيلها بأسلاك مختلفة.

لقد أرفقت صورة لأسلاك هذه الشاشة. يمكنك أن ترى أنه أكبر ويحتوي على دبابيس أقل من شاشة playercash الخاصة بنا. الصورة مأخوذة من صفحة sparkfun حيث حصلت على الشاشة وتوضح أي المسامير هي القوة لكل رقم وأي دبابيس تتحكم في كل جزء من الأجزاء في رقم.

كالعادة ، يجب أن تبدأ بتوصيل الشاشة بلوحة التجارب النموذجية واختبار كل جزء للتأكد من أنك تفهم كيف يتم توصيلها بالأسلاك. ثم يجب عليك توصيله بدبابيس متحكم AVR على لوح التجارب وتشغيله من هناك حتى يعمل كل كودنا في هذا البرنامج التعليمي. أخيرًا ، في النهاية ، يجب عليك بناء اللوحة الخارجية ولحامها. ثم عند اختبار المنتج النهائي ، ستعرف أن أي مشاكل تأتي من مهمة اللحام والقطع وليس الرمز. كذلك لا تنس البديهية المعروفة من النجارة "قم بالقياس مرتين ، واقطع مرة واحدة" ، أو في حالة عمل لوحات الدوائر: "قص مرتين ، ولحام مرة واحدة". كما ترى في الصورة ، لقد انهارت أخيرًا واشتريت ملحق Dremel المثالي لهذا النوع من العمل. "مجموعة نقاط الماس". كلفته 5 دولارات ، لكن هذا أقل بكثير من تكلفة علاج إدارة الغضب الذي يأتي مع زيادة عملي في القطع عدة مرات على التوالي.

أنا أستخدم مقاومات 330 أوم لهذه الشاشة. تمر دبابيس COM من خلال المقاوم إلى GND وتنتقل الطاقة إلى أي جزء تريد عرضه. سأستخدم PC0 عبر PC3 لدبابيس COM و PB0 و PB1 و PB2 و PB3 و PB4 و PD5 و PD6 و PD7 للقطاعات.

هذا هو مفتاح تعظيم فرصك في تصحيحه:

  1. خريطة خارج الدائرة
  2. قطع الدائرة
  3. تحقق من الأسلاك الخاصة بك
  4. إرفاق المقاومات والأغطية والمذبذب البلوري
  5. تحقق من التوصيلات والأسلاك مرة أخرى
  6. قم بتوصيل الأسلاك الخارجية
  7. نعلق متحكم
  8. تحقق من الأسلاك مرة أخرى
  9. إرفاق الشاشة المكونة من 4 أرقام
  10. تحقق من كل رقم باستخدام زوج من الأسلاك من اللوح
  11. ضعه جانبًا واكتب الكود ، مع العلم أنه من المحتمل أن تضطر إلى تعديل الأشياء لاحقًا على أمل ألا تخفي الاتصال الذي يجب قطعه.

لقد عرضت سلسلة من الصور لوظيفة الأسلاك الخاصة بي. يرجى إدراك أنك حر في توصيل جهازك بالطريقة التي تريدها. من المحتمل جدًا أنه يمكنك العثور على خريطة أفضل مما فعلت ويجب عليك استخدامها. لا شيء في هذه البرامج التعليمية يعتمد على كيفية توصيل المكونات الخاصة بك ، طالما أنها تحتوي على منافذ الإخراج الصحيحة. الذي يذكرني. لاحظ أن هناك الآن رأسان يذهبان إلى SDA واثنان يذهبان إلى SCL؟ لماذا تفترض أننا فعلنا ذلك؟

الآن ، كما ترون من خلال الكود المرفق في نهاية البرنامج التعليمي ، قمت ببساطة بقص الكود ولصقه من عرض المشغل في البرنامج التعليمي الأخير إلى ملف جديد لعرض التاجر. ثم قمت بتغيير جدول بحث "المقاطع" وتغييره ليتوافق مع خريطة الدبوس الجديدة مع ملاحظة أنه بالنسبة لهذا العرض ، تكون دبابيس "com" أرضية ودبابيس المقطع 5 فولت بدلاً من العكس كما كانت للشاشة الأخرى. قمت أيضًا بتغيير تهيئة المنافذ لتعكس الأسلاك الجديدة ، وقمت بتغيير عنوان عرض dealercash إلى 0b1000000 حتى تتمكن بكرة النرد من التحدث إليه ، لقد غيرت الروتين الفرعي "للدورة" بحيث يتم إيقاف تشغيل PC0 من خلال دبابيس PC3 "com" عندما تريد تشغيل جزء معين وقمت بتغيير "الرقم" الذي يتم عرضه لأن الأسلاك الجديدة بها الأرقام بالترتيب المعاكس (إذا تركتها كما كانت وحاولت عرض 1234) سيظهر كـ 4321 بدلاً من ذلك).

هنا خريطة التسجيل الجديدة:

(PD7، PD6، PD5، PB4، PB3، PB2، PB1، PB0) = (العلامة العشرية ، c ، g ، b ، f ، a ، e ، d)

حيث 1 هو ON و 0 هو OFF.

الآن اختبر الشاشة عن طريق ضبط القيمة الأولية للشاشة على أرقام مختلفة بحيث تظهرها عند تشغيلها. سيخبرك هذا ما إذا كان كل شيء يعمل بشكل صحيح.

ثم قم بتعديل كود diceroller بحيث يستخدم العنوان الجديد للرقيق ، وربطهم ببعضهم البعض ، ثم قم بتشغيله. يجب أن يتصرف تمامًا مثل ما فعلناه في البرنامج التعليمي الأخير باستثناء أن لفات النرد تظهر الآن على الشاشة الجديدة.

رائعة! نحن الآن على استعداد لكتابة رمز بكرة النرد الجديد بحيث يتواصل مع كل من شاشة المشغل وشاشة التاجر.

الخطوة 3: مخطط البرنامج

مخطط البرنامج
مخطط البرنامج
مخطط البرنامج
مخطط البرنامج
مخطط البرنامج
مخطط البرنامج

الطريقة التي سيعمل بها الكود في لعبتنا هي أننا سنحتفظ بأسطوانة النرد كالسيد ونضيف عرض التاجر كعبد إضافي. ستتحكم أسطوانة النرد في اللعبة وستقوم بإرسال التغييرات الناتجة نقدًا إلى الموزع ويعرض اللاعب بعد كل لفة. في الوقت الحالي ، سيكون لدينا فقط رهان خط المرور 10 دولارات في كل مرة ، لذلك لا يتعين علينا أن نكون أكثر تعقيدًا بعد مع تغيير اللاعب لرهانه. في وقت لاحق ، بمجرد تشغيل الميكانيكا ، سنضيف وحدة تحكم أخرى والتي ستكون سيدًا إضافيًا سيتحكم في المراهنة والمدفوعات وستظل بكرة النرد الخاصة بنا سيدًا ولكنها تستخدم فقط لرمي النرد. سيتيح لنا ذلك الدخول في تحكيم TWI والاصطدامات والجوانب المهمة الأخرى للاتصال التسلسلي عندما يكون لديك عدة أسياد وعبيد. سنضيف أيضًا عددًا من العروض الفردية المكونة من 7 أرقام مع أزرار ضغط تحتها والتي ستسمح لنا بالمراهنة على أنواع أخرى من القوائم ، ولكن كل ذلك سيأتي في البرامج التعليمية المستقبلية. في الوقت الحالي ، نريد فقط بكرة النرد كسيد ، والعرضين كعبيد. عندما نضغط على الزر ، سيقرر الكود ما إذا كان يجب أن يدفع مبلغًا طبيعيًا ، أو يأخذ نقودًا من كرابس ، أو فرعًا إلى سلسلة "نقطة" من القوائم حتى الفوز أو ربح سبعة.

لنكتب أولاً إجراءات العبيد. هذه بسيطة من حيث أن كل ما سيفعلونه هو مشاهدة خط SDA لعناوينهم ، إذا تم استدعاؤهم فسوف يقرأون الرقم الجديد لعرضه وعرضه. هذا كل شيء! لا يتعين عليهم حتى التحدث مرة أخرى إلى السيد لأن السيد سيتابع مجاميعهم ويقوم بجميع حسابات الدفع قبل تحديثها. في البرامج التعليمية المستقبلية ، سيكون لدينا عبيد يكتبون مرة أخرى إلى السيد (على سبيل المثال ، عندما يكون لدينا شاشات عرض واحدة مكونة من 7 أرقام مع أزرار ضغط لمبلغ الرهان ، سيتعين عليهم إخبار السيد بمقدار الرهان على كل شاشة وهكذا سنقوم بذلك. خاطبهم بعنوان + قراءة المكالمة مع السيد في "وضع الاستقبال الرئيسي") ولكننا سنصل إلى ذلك في الوقت المناسب.

في الوقت الحالي ، يتم تحريض كل شيء عن طريق الضغط على زر لفة النرد متبوعًا بحساب أو دفعات زر أخرى وأخيراً رسالة إلى كل من الشاشات بمجموعها الجديدة. سيكون هناك اختبار بعد كل دفعة لتحديد ما إذا كان اللاعب قد ربح أو خسر ، وبعبارة أخرى ، إذا أصبحت نقود الموزع صفرًا بعد لفة ، أو إذا أصبحت نقود اللاعب صفرًا بعد لفة (لا الموزع أو اللاعب يمكن أن تصبح سلبية نظرًا لأنه لن يُسمح لهم إلا بالمراهنة بـ 10 دولارات أو أي شيء متبقي إذا كان أقل من 10 دولارات).

هذه هي الطريقة التي ستعمل بها. دعونا نحصل على الترميز.

الخطوة 4: إتقان كود الاتصالات

كود الاتصالات الرئيسية
كود الاتصالات الرئيسية

يمكننا الآن كتابة روتين الاتصالات لأسطوانة النرد. إنه أيضًا مطابق تقريبًا للذي كتبناه في المرة السابقة باستثناء أننا سنتواصل مع عبدين مختلفين بدلاً من عبيد واحد فقط. لاحظ أنه لكل من العبيد ، نستخدم عنوانًا مختلفًا. يجب عليك تعديل الكود بنفسك ثم اختباره بكل عنوان والتأكد من أنه يعمل تمامًا مثل البرنامج التعليمي الأخير باستثناء كل عرض منفصل.

سأقوم بإرفاق الكود الخاص بكل مكون والذي يعرض ببساطة نتيجة اللفة بحيث يمكن استخدامها لجعل الشاشات تعمل بشكل صحيح والتحقق من الأسلاك.

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

لقد قمت ، كالعادة ، بإرفاق النسخة النهائية من الكود الخاص بجهازي العرض و diceroller في الخطوة التالية جنبًا إلى جنب مع مقطع فيديو لي أثناء اختبار الشيء.

الخطوة 5: الكود النهائي والفيديو

لقد أرفقت الفيديو والبرامج الثلاثة. ستلاحظ أنه يمكنك إصلاح الرهان والتاجر المبتدئ ونقد اللاعب في الجزء العلوي من البرنامج باستخدام بيانات.equ.

في البرنامج التعليمي التالي سنضيف القدرة على المراهنة على أشياء مختلفة مما سيجعل اللعبة أكثر إثارة. الشيء المثير للاهتمام في لعبة Craps الحديثة هو أن لديك العديد من الطرق المختلفة للمراهنة ومحاولة تعظيم فرصك. في الواقع ، لعبة الكرابس هي أعلى لعبة احتمالات في الكازينو! … إذا كنت تعرف كيف تلعبها. من ناحية أخرى ، إذا كنت لا تعرف كيفية اللعب ، فستصبح واحدة من أقل الألعاب احتمالات.

بمجرد أن يكون لدينا المزيد من الأشياء التي نراهن عليها بأموالنا ، سأزيد المبلغ الإجمالي للمال في اللعبة.

يجب أن أكون ممتعا!

أراك المرة القادمة!

موصى به: