فهرست مطالب:
- مرحله 1: بصیرت
- مرحله 2: راه اندازی بندر
- مرحله 3: قدرت فوق العاده کم
- مرحله 4: تایمر
- مرحله 5: حالت کم مصرف
- مرحله 6: تایمر ISR
- مرحله 7: وقفه سخت افزاری
- مرحله 8: ISR- تنظیم مجدد/ دکمه را فشار دهید
- مرحله 9: کد
- مرحله 10: کد مرجع
تصویری: MSP430 شمارنده ثانیه: 10 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
خوش آمدی! ساخت ثانیه شمارنده: استفاده از CCStudio 8 و MSP430F5529 برای پروژه.
زبان C برای کدگذاری میکرو کنترلر استفاده از حالت های کم مصرف ، تایمرها و وقفه ها. خروجی از طریق 7 Segment نمایش داده می شود.
مرحله 1: بصیرت
شروع کنیم!
با استفاده از گذرواژه مورد نیاز برای تایمر نگهبان ، تایمر نگهبان را در حالت خاموش تنظیم کنید (این به بررسی حلقه های نامحدود کمک می کند ، و پردازنده را ایمن نگه می دارد).
#عبارتند از
/** * main.c */
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 استفاده می شود ، آنها را به عنوان مقاومت Pull UP پیکربندی می کنند و اگر 0x00 آنها را به عنوان Pull DOWN پیکربندی می کنند.
مرحله 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) ؛
این حالت General interrupt Enable (GIE) را فعال می کند و CPU را روی LPM0 قرار می دهد ، جایی که MCLK که از پردازنده پشتیبانی می کند خاموش است و SMCLK و ACLK اجرا می شوند که تایمر را فعال نگه می دارد. بنابراین می توانیم ببینیم CPU در آنجا با صرفه جویی در قدرت خاموش شده است.
مرحله 6: تایمر ISR
#بردار پراگما = TIMER0_A0_VECTOR
_ زمان خالی وقفه Timer_A (void)
{
z ++ ؛
if (z> تأخیر)
{
P3OUT = کد [x] ؛
P6OUT = کد 1 [y] ؛
x ++ ؛
اگر (x == 10)
{
x = 0 ؛
y ++ ؛
}
اگر (y == 6)
y = 0 ؛
z = 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
_درگاه خالی وقفه_2 (خالی)
{
P2IFG & = ~ BIT1؛
x = 0 ؛ y = 0 ؛
P3OUT = کد [x] ؛
P6OUT = کد 1 [y] ؛
v ++ ؛
برای (i = 0 ؛ i
{
P1OUT | = BIT0؛ //P1.0 = جابجایی
_چرخه های تاخیری (1048576) ؛
P1OUT & = ~ BIT0؛ // P1.0 = تغییر وضعیت
_چرخه های تاخیری (1048576) ؛
}
این ISR شمارنده را بازنشانی می کند و تعداد دفعات فشار داده شده را محاسبه می کند.
(در اینجا صفحه نمایش از طریق ضامن led ساخته شده است ، همچنین می تواند از آرایه و تایمر دیگری برای نشان دادن این مقادیر به عنوان خروجی در 7 بخش استفاده کند).
مرحله 9: کد
#عبارتند از
#تعریف تاخیر 1000
کد char = {0xFC ، 0x60 ، 0xDA ، 0xF2 ، 0x66 ، 0xB6 ، 0xBE ، 0xE0 ، 0xFE ، 0xE6} ؛
char char1 = {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) ؛
}
// تایمر A0 روال سرویس را قطع می کند
#بردار پراگما = TIMER0_A0_VECTOR
_ زمان خالی وقفه Timer_A (void)
{
z ++ ؛
if (z> تأخیر)
{
P3OUT = کد [x] ؛
P6OUT = کد 1 [y] ؛
x ++ ؛
اگر (x == 10)
{
x = 0 ؛
y ++ ؛
}
اگر (y == 6)
y = 0 ؛
z = 0 ؛
}
}
// سخت افزار وقفه روتین سرویس
#بردار پراگما = PORT2_VECTOR
_درگاه خالی وقفه_2 (خالی)
{
P2IFG & = ~ BIT1؛
x = 0 ؛
y = 0 ؛
P3OUT = کد [x] ؛
P6OUT = کد 1 [y] ؛
v ++ ؛
برای (i = 0 ؛ i
{P1OUT | = BIT0؛ // P1.0 = تغییر وضعیت
_چرخه های تاخیری (1048576) ؛
P1OUT & = ~ BIT0؛ // P1.0 = تغییر وضعیت
_چرخه های تاخیری (1048576) ؛
}
}
مرحله 10: کد مرجع
مخزن GitHub
توصیه شده:
شمارنده بازدیدکننده با استفاده از سنسور 8051 و IR با LCD: 3 مرحله
شمارنده بازدیدکننده با استفاده از سنسور 8051 و IR با LCD: دوستان عزیز ، نحوه ساخت پیشخوان بازدیدکننده با استفاده از سنسور 8051 و IR را توضیح دادم و آن را در LCD نمایش دادم. 8051 یکی از محبوب ترین میکروکنترلرها است که برای ایجاد سرگرمی و برنامه های تجاری در سراسر جهان استفاده می شود. ویزیت کرده ام
فرکانس ساده شمارنده با استفاده از آردوینو: 6 مرحله
ساده شمارنده فرکانس با استفاده از آردوینو: در این آموزش ما یاد می گیریم که چگونه یک فرکانس شمارنده ساده با استفاده از آردوینو بسازیم. فیلم را تماشا کنید
نحوه ساخت تایمر شستشو 30 ثانیه آردوینو ، توقف گسترش COVID: 8 مرحله
نحوه ساخت تایمر شستشو 30 ثانیه Arduino ، STOP COVID STOP: سلام
Clap Switch (40 ضربه در 5 ثانیه): 4 مرحله (همراه با تصاویر)
Clap Switch (40 Claps در 5 ثانیه): Clap Switch این قابلیت را دارد که با اتصال خروجی مدار به سوئیچ رله ، هر جزء الکتریکی را روشن/خاموش کند. در اینجا ما قصد داریم یک کلید clap با چند جزء با توضیحات بسیار خوب ایجاد کنیم. در مقایسه با سایر کلیدهای چنگ زدن
همه اطلاعات روی CD/DVD را در 5 ثانیه یا کمتر بکشید: 3 مرحله
همه اطلاعات را روی CD/DVD در 5 ثانیه یا کمتر بکشید.: همه داده ها را در CD/DVD در 5 ثانیه یا کمتر بکشید. چرا می خواهید این کار را انجام دهید: ++ پشتیبان گیری قدیمی چند ساله را از بین ببرید ++ شما را به خاطر بسپاریم زمان خواب مخصوص DVD ++ سابق شما CD/DVD را می خواهد. ++ با AOL DISK سرگرم می شود !!!! LOL