كيفية تحسين هذا الرمز باستخدام C و PIC16F84A؟

StackOverflow https://stackoverflow.com//questions/10710087

  •  13-12-2019
  •  | 
  •  

سؤال

أنا أستخدم mikroc لبرنامج PIC16F84A، ولدي الوظيفة التالية

giveacodicetagpre.

هذه الوظيفة، تأخذ كل بت من D (8 بت) وإخراجها إلى منفذ دبوس RA3، RA4، RB0، ...، RB5.

كيف يمكنني تحسين هذا الرمز، والذاكرة هي اهتمامي الأول.

تحديث ::

من pic16f84a.h:

giveacodicetagpre.

هل يمكنني استخدام هذه القيم من ملف الرأس، لتقديم الوظيفة بضع أسطر من التعليمات البرمجية داخل حلقة؟

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

المحلول

على افتراض أن portb.b0 من خلال portb.b5 عبارة عن أجزاء من المنفذ خارج، القيام بذلك قد يكون أسرع:

giveacodicetagpre.

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

نصائح أخرى

اقرأ القيمة الحالية للمنفذ أو سجل LAT للحصول على A & B. إذا كان هذا الموافقة المسبقة عن علم يحتوي على كلا من الموافقة المسبقة عن علم، فمن المهم أن تعرف الفرق، لذلك أقترح عليك القيام ببعض الأبحاث إذا لم تكن متأكدا من استخدامها.

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

بدلا من ذلك، إذا تم تعيين جميع المسامير الأخرى الموجودة على المنفذ A & B لإدخال تسجيل TRIS المرتبط بكل منفذ، تخطي خطوة القراءة.

لذلك على سبيل المثال:

giveacodicetagpre.

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

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

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