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

عداد الثواني MSP430: 10 خطوات
عداد الثواني MSP430: 10 خطوات

فيديو: عداد الثواني MSP430: 10 خطوات

فيديو: عداد الثواني MSP430: 10 خطوات
فيديو: CpE451 Ch6 Part1 Embedded Systems and Microcontrollers 2024, شهر نوفمبر
Anonim
عداد الثواني MSP430
عداد الثواني MSP430

أهلا بك! عمل عداد الثواني: استخدام CCStudio 8 و MSP430F5529 للمشروع.

لغة C لترميز وحدة التحكم الصغيرة. تطبيق أوضاع الطاقة المنخفضة والمؤقتات والمقاطعات. يتم عرض الإخراج عبر 7 قطاعات.

الخطوة 1: البصيرة

تبصر
تبصر

هيا نبدأ!

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

#يشمل

/** * ج الرئيسية */

int main (باطل)

{

WDTCTL = WDTPW | WDTHOLD ؛ // إيقاف مؤقت جهاز المراقبة

العودة 0 ؛

}

الخطوة 2: تهيئة المنفذ

{

P3DIR = 0xFF ؛ // P3DIR = 0x00 ؛

P6DIR = 0xFF ؛

P4DIR | = 0x00 ؛

P4REN | = 0xFF ؛

P4OUT | = 0xFF ؛

}

يخبرنا P3DIR | = 0x00 أنه تم تهيئة PORT-3 بالكامل لأخذ المدخلات.

P3DIR | = 0xFF يخبرنا أنه تم تهيئة PORT-3 بالكامل لإعطاء مخرجات.

P3DIR | = 0x01 تتم تهيئة الدبوس P3.0 فقط للإخراج في PORT-3. يتبع هذا تعيين منفذ سداسي عشري.

P4REN | = 0xFF ، يشير هذا إلى أن دبابيس PORT-4 لديها مقاومات سحب لأعلى / لأسفل ممكنة.

لتحديدها بين Pull Up أو Pull DOWN ، يتم استخدام التعليمات P $ OUT | = 0xFF.

إذا تم استخدام 0xFF ، يتم تكوينها كمقاومات سحب وإذا كانت 0x00 يتم تكوينها على أنها سحب لأسفل.

الخطوة 3: طاقة منخفضة للغاية

يسمح لنا MSP430F5529 بتقليل فقد الطاقة من المعالج. هذا مفيد في التطبيقات المستقلة.

هذا يستدعي الإعلان عن كل رقم التعريف الشخصي أو المنافذ للإخراج.

{

P7DIR | = 0xFF ؛

P6DIR | = 0xFF ؛

P5DIR | = 0xFF ؛

P4DIR | = 0xFF ؛

P3DIR | = 0xFF ؛

P2DIR | = 0xFF ؛

P1DIR | = 0xFF ؛

}

الخطوة 4: المؤقت

استخدام الموقت لتوليد تأخير من ثانية واحدة. يستخدم هذا SMCLK بسرعة 1 ميجاهرتز ، ويعمل المؤقت أيضًا في وضع الطاقة المنخفضة (في الخطوة التالية ، بعد أن تم قطعه من LPM). هذه العملية توفر الطاقة والعبء على المعالج

TA0CCTL0 = CCIE ،

TA0CCR0 = 999 ؛

TA0CTL = TASSEL_2 + MC_1 ،

القيم هي 999 ، حيث يأخذ العدد عدًا إضافيًا للتراجع إلى الصفر في سجل المؤقت.

الخطوة 5: وضع الطاقة المنخفضة

_BIS_SR (LPM0_bits + GIE) ؛

يتيح ذلك تمكين المقاطعة العامة (GIE) ، ويضع وحدة المعالجة المركزية على LPM0 ، حيث يتم إيقاف تشغيل MCLK الذي يدعم وحدة المعالجة المركزية ، وتشغيل SMCLK و ACLK الذي يحافظ على تشغيل المؤقت. حتى نتمكن من رؤية وحدة المعالجة المركزية متوقفة عن التشغيل ، عن طريق توفير الطاقة.

الخطوة 6: ISR-Timer

ISR- الموقت
ISR- الموقت

# متجه براغما = TIMER0_A0_VECTOR

_interrupt Void Timer_A (باطل)

{

z ++ ؛

إذا (z> تأخير)

{

P3OUT = كود [x] ؛

P6OUT = code1 [y] ،

x ++ ؛

إذا (س == 10)

{

س = 0 ؛

ذ ++ ؛

}

إذا (ص == 6)

ص = 0 ؛

ض = 0 ؛

}

}

متجه براغما هو لتمثيل ISR في C embd.

الكود [x] و code1 [y] هي المصفوفات التي تحتوي على قيم مخرجات للقطعتين السبعة ، لعرض عداد 60 ثانية.

الخطوة 7: مقاطعة الأجهزة

P2DIR = 0x00 ؛

P2REN = 0x02 ،

P2OUT = 0x02 ؛

P2IE | = BIT1 ؛

P2IES | = BIT1 ؛

P2IFG & = ~ BIT1 ؛

هنا يتم الإعلان عن P2.1 كمقاطعة للأجهزة ، إذا تم الضغط على الزر ، يتم إعادة تعيين العداد إلى القيمة.

برنامج الباقي مكتوب داخل ISR لهذه المقاطعة.

الخطوة 8: ISR- زر إعادة الضبط / الضغط

# متجه براغما = PORT2_VECTOR

_interrupt void port_2 (باطل)

{

P2IFG & = ~ BIT1 ؛

س = 0 ؛ ص = 0 ؛

P3OUT = كود [x] ؛

P6OUT = code1 [y] ،

v ++ ؛

لـ (أنا = 0 ؛ أنا

{

P1OUT | = BIT0 ؛ //P1.0 = تبديل

_delay_ycles (1048576) ؛

P1OUT & = ~ BIT0 ؛ // P1.0 = تبديل

_delay_ycles (1048576) ؛

}

يعيد ISR ضبط العداد ، ويحتفظ بعدد المرات التي تم فيها الضغط على الباقي.

(هنا يتم العرض عبر تبديل الصمام ، ويمكن أيضًا استخدام صفيف ومؤقت آخر ، لإظهار هذه القيم كإخراج في 7 مقاطع).

الخطوة 9: الكود

الشفرة
الشفرة

#يشمل

# تعريف تأخير 1000

كود char = {0xFC، 0x60، 0xDA، 0xF2، 0x66، 0xB6، 0xBE، 0xE0، 0xFE، 0xE6} ؛

رمز الحرف 1 = {0x7E ، 0x30 ، 0x6D ، 0x79 ، 0x33 ، 0x5B} ؛

متقلبة غير موقعة int x = 0 ، y = 0 ، z = 0 ؛

متقلبة غير موقعة int v = 0 ، i = 0 ؛

باطل رئيسي ()

{

WDTCTL = WDTPW | WDTHOLD ؛ // إيقاف مؤقت جهاز المراقبة

P7DIR | = 0xFF ؛

P7OUT | = 0x00 ؛

P8DIR | = 0xFF ؛

P8OUT | = 0x00 ؛

P4DIR | = 0xFF ؛

P4OUT | = 0x00 ؛

P5DIR | = 0xFF ؛

P5OUT | = 0x00 ؛

P1DIR = 0xFF ؛

P3DIR = 0xFF ؛

P6DIR = 0xFF ؛

P2DIR = 0x00 ؛

P2REN = 0x02 ،

P2OUT = 0x02 ؛

P2IE | = BIT1 ؛

P2IES | = BIT1 ؛

P2IFG & = ~ BIT1 ؛

TA0CCTL0 = CCIE ،

TA0CCR0 = 999 ؛

TA0CTL = TASSEL_2 + MC_1 ،

_BIS_SR (LPM0_bits + GIE) ؛

}

// روتين خدمة المقاطعة Timer A0

# متجه براغما = TIMER0_A0_VECTOR

_interrupt Void Timer_A (باطل)

{

z ++ ؛

إذا (z> تأخير)

{

P3OUT = كود [x] ؛

P6OUT = code1 [y] ،

x ++ ؛

إذا (س == 10)

{

س = 0 ؛

ذ ++ ؛

}

إذا (ص == 6)

ص = 0 ؛

ض = 0 ؛

}

}

// روتين خدمة مقاطعة الأجهزة

# متجه براغما = PORT2_VECTOR

_interrupt void port_2 (باطل)

{

P2IFG & = ~ BIT1 ؛

س = 0 ؛

ص = 0 ؛

P3OUT = كود [x] ؛

P6OUT = code1 [y] ،

v ++ ؛

لـ (أنا = 0 ؛ أنا

{P1OUT | = BIT0 ؛ // P1.0 = تبديل

_delay_ycles (1048576) ؛

P1OUT & = ~ BIT0 ؛ // P1.0 = تبديل

_delay_ycles (1048576) ؛

}

}

الخطوة 10: الرمز المرجعي

الكود المرجعي
الكود المرجعي

مستودع جيثب

موصى به: