زر روتينية في منتصف الوقت ، مبادئ العقود التجارية الدولية

A

arash_micro

Guest
مرحبا.
أريد أن الروتينية زر في منتصف الوقت ، مبادئ العقود التجارية الدولية.
أنا أكتب هذا الرمز (دون روتين debounce) ولكنه لا work.What 'ق بلدي خاطئ.

إذا كان (RB4 = 0) (
DelayMs (50) ؛
chanal ؛
)

شكرا.

 
مرحبا ،
ليس لدي أي فكرة عن الشفرة.ولكن أستطيع أن أرى خطأ في بناء الجملة في هذا الجزء كنت المذكورة أعلاه.إذا كان (RB4 = 0) سيحل محله إذا كان (RB4 == 0).

تعرف على قدم المساواة هي واحدة لتعيين قيمة مزدوجة وعلى قدم المساواة هو للتحقق

مع أطيب التحيات.

 
كنت تصحيح يعمل error.It في pruteuse ولكن ليس في الزمن الحقيقي.
لماذا؟

 
مرحبا ،

كل ذلك على كيفية depands الجهاز متصلا!هو الزر الخاص بك متصلا Vcc أو أرضي؟أي عند الضغط على الزر ، ماذا يحصل على رقم التعريف الخاص بك 1 أو 0؟
أود أن أقول لك الحصول على 0 ، بحيث يمكنك زر connectet على جانب واحد على أرضي ، والآخر لديك RB4 مع إسحب (يجب أن يكون ذلك).
ثم أنت رمز سيبدو هذا :
رمز :إذا كان (RB4 == 0)

(

DelayMs (50) ؛

إذا كان (RB4 == 0) / / وإذا كان لا يزال على

chanal ؛

)

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

إذا (! RB0) / / لو RB0 ليست عالية ثم تنفيذ التعليمات البرمجية
(
YOUR_CODE ؛
)
ومن ثم فإن القانون سيتم تنفيذها عند دبوس منخفضة.
وبالمثل إذا ش تريد تنفيذ مدونة خاصة عندما دبوس عالية دعونا نقول RB0 ثم رمز يجب أن يكون مثل هذا
إذا كان (RB0)
(
YOUR_CODE ؛
)
آمل أن يكون هذا يجعل نقطة اور واضحة.
تمنيات

 
مرحبا وسيم ،

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

حظ سعيد.

 
مرحبا Gidimiz!
شكرا للتحليل.سبق لي أن أعرف ما ش ذكرتها ، ولكن ما كنت أحاول أن أركز في قانون بلدي هو أنه ليست هناك حاجة لكتابة "إذا كان (RB0 == 1)"
ش يمكن ببساطة كتابة "إذا كان (RB0)" وبالمثل
، بدلا من "إذا كان (RB0 == 0)" ش يمكن الكتابة
"إذا كان (! RB0).
من courese يجب عليك إضافة بعض التأخير لجعل عملية تبديل موثوق بها.
مرة أخرى شكرا للتحليل.
تمنيات

 
مرحبا وسيم ،
وسيم كتب :

...
ولكن ما كنت أحاول أن أركز في قانون بلدي هو أنه ليست هناك حاجة لكتابة "إذا كان (RB0 == 1)"

ش يمكن ببساطة كتابة "إذا كان (RB0)" وبالمثل ، بدلا من "إذا كان (RB0 == 0)" ش يمكن الكتابة

"إذا كان (! RB0)...

 
gidimiz كتب :

مرحبا وسيم ،هناك مشكلة مع رمز من أن لديك موقع.
سيكون لديك للقيام حالة انتظار ومن ثم التحقق من الرقم مرة أخرى.
هناك طرق أخرى ، ولكن هذا هو أبسط.
 
مرحبا ليرة سورية ،

لمدة طويلة هناك طريقة أخرى للقيام بذلك من دون برنامج عالقة!
سوف تحتاج إلى تنفيذ جهاز توقيت مع المقاطعة (يمكنك استخدام أي من ترانسنيستريا المولدوفية) ومجموعة منها إلى أدنى حد أنك ستحتاج.على سبيل المثال ، إذا كان الشيء صام ستحتاج هو في اشهار الصمام كل 0.5 ثانية ، ثم جمهورية ترانسنيستريا المولدوفية يتعين وضعها ليقطع كل 0.5.إذا كانت فقط على الزر ، يمكنك أن يقطع كل 1sec.
حسنا ، لا يوجد لديك بعض الموقت ان المقاطعات في كل ثانية 1 ، وذلك ما.في المقاطعة ، سوف يرتفع العلم في كل مرة هذه المقاطعة لن يحدث.(لا ينسى لمسح علامة TMRIF).ثم في رمز الرئيسية التي سوف تتحقق من أن العلم وكان من المقرر أن تم الضغط على زر.إذا كان كل شيء من أجل تصحيح 4 مرات (أي 4 ثوان مرت) ثم نفذ...
هنا هو رمز بعبارات عامة ، وأنا لا أعرف ما البرمجي الذي تستخدمه.
رمز :باطل المقاطعة (الفراغ)

(

إذا كان (TMR0IF) / / كنت على علم الموقت 0

(

TMR0IF = 0 ؛

SecFlag = 1 ؛

TMR0 = 0x80 ؛ / / قيمة لتحديث TMR0

)

)باطلة الرئيسي (الفراغ)

(

SetIO () ؛ / / مجموعات كل الإعلام والتوعية والمحيطيةفي حين (1)

(

إذا كان (SecFlag) / / 1 ثانية اجتاز

(

SecFlag = 0 ؛ / / إعادة تعيين علم ثانية

إذا كان (RB0) / / إذا كان لا يزال يضغط الزر

زر ؛

إذا (! RB0 & & زر> = 1) / / اذا كان الافراج عن الزر عند نقطة معينة أو في نهاية المطاف.
يمكنك وضع هذه الوظيفة هنا أو أفضل خارج هذه الوظيفة.

(

زر = 0 ؛

)

إذا كان (زر> = 4)

RA0 =! RA0 ؛ / / هل تبديل الصمام.

)

إذا (! RB0 & & زر> = 1) / / الوظيفة نفسها كما كانت من قبل ، ولكن هنا.

المدونة الخاصة بك...

) / / نهاية الوقت (1)) / / نهاية الرئيسية

 
مرحبا Gidimiz!
مرحبا بك.سأظل دائما نقدر تعليقاتكم ، لأنه بمجرد البدء في التفكير بأن كل شيء ش وقد علمت بعد ذلك تبدأ بك إلى أسفل سافلين.
حتى اقدر التعليقات اور حيث أنه من المفيد دائما لمناقشة الأمور مع poeple الأخرى.
تمنيات.

 
مرحبا وسيم ،

شكرا...
Donload مجاني "، سهلة للحصول على شفرة الكتابة MPLAB مستخدمين. (آخر جديد الإصدار.)" ولقد نشرت.انكم حقا مثل ذلك إذا كنت تستخدم جيم رمز.
يتمتع.

 

Welcome to EDABoard.com

Sponsor

Back
Top