سؤال

ما هي أفضل طريقة لإعادة تعيين PIC18 باستخدام رمز C مع برنامج التحويل البرمجي Hitech PIC18 C.

يحرر:

أنا أستخدم currenlty

void reset()
{
#asm 
  reset
#endasm
}

ولكن يجب أن يكون هناك طريقة أفضل

هل كانت مفيدة؟

المحلول

هناك الأسئلة الشائعة هنا.

س: كيف يمكنني إعادة ضبط Micro؟

طريقة واحدة هي إعادة تعيين جميع المتغيرات إلى الافتراضيات ، كما هو مدرج في دليل الموافقة المسبقة عن علم. ثم ، استخدم لغة التجميع للقفز إلى الموقع 0x0000 في Micro.

#ASM LJMP 0x0000

#endasm

هذا آمن تمامًا للاستخدام ، حتى عندما يتم استدعاؤه داخل المقاطعات أو الإجراءات. تحتوي سلسلة Micros 16x على 8 مستويات مكدس. في كل مرة يتم فيها استدعاء الإجراء ، يتم استخدام مستوى مكدس واحد لعنوان الإرجاع. إنه مخزن مؤقت دائري ، لذلك حتى لو كان Micro هو 7 مستويات إجراء عميقة وفي المقاطعة عند استدعاء إعادة تعيين ، فهذه هي البداية الجديدة للمخزن المؤقت للمكدس ، وسيستمر Micro وفقًا للمعتاد.

هناك طريقة أخرى تتمثل في تعيين مراقبة الموقت عند برمجة الشريحة ، واستخدام تعليمات CLRWDT () من خلال الكود. عندما تريد إعادة تعيين Micro ، توقف عن إزالة بتات الوكالة الدولية للطاقة وسيتم إعادة تعيين Micro بعد حوالي 18 مللي ثانية إلى 2 ثانية حسب الحرف.

نصائح أخرى

عادةً ما يكون للمترجمين وظيفة Reset () الخاصة بها ، ولكنها تفعل بالضبط ما تفعله وظيفتك ، وقد يختلف الاسم الفعلي من برنامج التحويل البرمجي إلى المترجم.

أنت تفعل ذلك بالفعل أفضل طريقة ممكنة.

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

ما لم تكن هناك وظيفة مكتبة محددة من قبل مكتبة وقت تشغيل بائع المترجم (إذا كان هذا lib موجود حتى في عالم متحكم ... ولكن يجب أن) ، ثم لا. من المؤكد أن C بحد ذاتها لن تساعدك في الخروج ، فإن القيام بـ "إعادة التعيين" هو مشكلة خاصة من النظام الأساسي لتغطية C.

يمكنني استخدام برنامج التحويل البرمجي CCSINFO.com ، الذي لديه دعوة API مماثلة لإعادة تعيين الموافقة المسبقة عن علم ، لكنني أعتقد أن حل المترجم سيفعل الشيء الصحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top