Mundarija:
- 1 -qadam: tushuncha
- 2 -qadam: Portni ishga tushirish
- 3 -qadam: Ultra past quvvat
- 4 -qadam: TIMER
- 5 -qadam: Kam quvvat rejimi
- 6-qadam: ISR-taymer
- 7 -qadam: Uskuna uzilishi
- 8-qadam: ISR- Qayta tiklash/ bosish tugmasi
- 9 -qadam: KOD
- 10 -qadam: Malumot kodi
Video: MSP430 soniya hisoblagichi: 10 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Xush kelibsiz! Soniya hisoblagichini yaratish: loyiha uchun CCStudio 8 va MSP430F5529 dan foydalanish.
Mikro tekshirgichni kodlash uchun C tili. Kam quvvatli rejimlar, taymerlar va uzilishlar. Chiqish 7 segment orqali ko'rsatiladi.
1 -qadam: tushuncha
Boshlaylik!
Kuzatuvchi taymeri uchun zarur parol yordamida qo'riqchi taymerini O'chirish holatiga o'tkazing (bu protsessor xavfsizligini ta'minlash uchun cheksiz tsikllarni tekshirishga yordam beradi).
#qo'shing
/** * asosiy.c */
int main (bekor)
{
WDTCTL = WDTPW | WDTHOLD; // qo'riqchi taymerini to'xtatish
qaytarish 0;
}
2 -qadam: Portni ishga tushirish
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 bizga PORT-3 ning butun qismi kirish uchun ishga tushirilganligini aytadi.
P3DIR | = 0xFF bizga aytadiki, PORT-3 ning hammasi chiqish uchun ishga tushirilgan.
P3DIR | = 0x01 faqat P3.0 pimi PORT-3da chiqish uchun ishga tushiriladi. Bu o'n oltilik portni xaritalashdan so'ng sodir bo'ladi.
P4REN | = 0xFF, bu shuni ko'rsatadiki, PORT-4 pinlari yuqoriga/pastga qarshiliklari yoqilgan.
Ularni Pull UP yoki Pull DOWN orasidan tanlash uchun P $ OUT | = 0xFF buyrug'i ishlatiladi.
Agar 0xFF ishlatilsa, ular Pull UP rezistorlari sifatida konfiguratsiya qilinadi, 0x00 esa POWN DOWN.
3 -qadam: Ultra past quvvat
MSP430F5529 protsessordan quvvat yo'qotilishini kamaytirishga imkon beradi. Bu mustaqil dasturlarda foydalidir.
Bu barcha pinlar yoki portlarning chiqarilishini e'lon qilishni talab qiladi.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
4 -qadam: TIMER
Bir soniyani kechiktirish uchun taymerdan foydalanish. Bu 1 MGts chastotali SMCLK -dan foydalanadi, shuningdek taymer past quvvatli rejimda ishlaydi (keyingi bosqichda uning hisobi LPMdan uziladi). Bu protsessor yukini va quvvatini tejaydi
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Qiymatlar - 999, chunki taymer registrida nolga qaytish uchun yana bir marta hisoblash kerak.
5 -qadam: Kam quvvat rejimi
_BIS_SR (LPM0_bits+GIE);
Bu Umumiy uzilishni yoqish (GIE) ni ishga tushiradi va protsessorni LPM0 ga qo'yadi, bu erda protsessorni qo'llab -quvvatlaydigan MCLK o'chirilgan va taymer ishlashini ta'minlaydigan SMCLK va ACLK ishlaydi. Shunday qilib, biz quvvatni tejash orqali CPU o'chirilganini ko'rishimiz mumkin.
6-qadam: ISR-taymer
#pragma vektori = TIMER0_A0_VEKTOR
_ uzilish bo'shligi Timer_A (bo'sh)
{
z ++;
agar (z> kechikish)
{
P3OUT = kod [x];
P6OUT = kod1 [y];
x ++;
agar (x == 10)
{
x = 0;
y ++;
}
agar (y == 6)
y = 0;
z = 0;
}
}
pragma vektori I emblemasi uchun C embd.
kod [x] va kod1 [y] - bu 60 sekundli hisoblagichni ko'rsatish uchun ikkita etti segment uchun chiqish qiymatlarini o'z ichiga olgan massivlar.
7 -qadam: Uskuna uzilishi
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Bu erda P2.1 uskuna uzilishi deb e'lon qilinadi, agar tugma bosilsa, hisoblagich qiymatga qaytadi.
qolgan dastur bu uzilish ISR ichida yozilgan.
8-qadam: ISR- Qayta tiklash/ bosish tugmasi
#pragma vektori = PORT2_VEKTOR
_ uzilish void port_2 (bekor)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kod [x];
P6OUT = kod1 [y];
v ++;
uchun (i = 0; i
{
P1OUT | = BIT0; //P1.0 = o'tish
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = o'tish
_delay_cycles (1048576);
}
Bu ISR hisoblagichni qayta o'rnatadi va qolganlari necha marta bosilganligini hisoblab chiqadi.
(Bu erda displey LEDni almashtirish orqali amalga oshiriladi, shuningdek, bu qiymatlarni 7 segmentda chiqish sifatida ko'rsatish uchun boshqa qator va taymerdan foydalanish mumkin).
9 -qadam: KOD
#qo'shing
#kechikish 1000ni aniqlang
char kodi = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char kod1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
uchuvchi belgisiz int x = 0, y = 0, z = 0;
uchuvchi belgisiz int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // qo'riqchi taymerini to'xtatish
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);
}
// Taymer A0 uzilish xizmati tartibi
#pragma vektori = TIMER0_A0_VEKTOR
_ uzilish bo'shligi Timer_A (bo'sh)
{
z ++;
agar (z> kechikish)
{
P3OUT = kod [x];
P6OUT = kod1 [y];
x ++;
agar (x == 10)
{
x = 0;
y ++;
}
agar (y == 6)
y = 0;
z = 0;
}
}
// Uskuna uzilishlarining xizmat ko'rsatish tartibi
#pragma vektori = PORT2_VEKTOR
_ uzilish void port_2 (bekor)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kod [x];
P6OUT = kod1 [y];
v ++;
uchun (i = 0; i
{P1OUT | = BIT0; // P1.0 = o'tish
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = o'tish
_delay_cycles (1048576);
}
}
10 -qadam: Malumot kodi
GitHub ombori
Tavsiya:
8051 va LCD displeyli IQ sensori yordamida tashrif buyuruvchilar hisoblagichi: 3 qadam
LCD bilan 8051 va IQ sensori yordamida tashrif buyuruvchilar hisoblagichi: Aziz do'stlar, men 8051 va IQ sensori yordamida mehmonlar hisoblagichini yasashni tushuntirdim va uni LCD displeyda ko'rsatdim. 8051 - bu butun dunyo bo'ylab sevimli mashg'ulotlarini, tijorat dasturlarini ishlab chiqarishda ishlatiladigan eng mashhur mikrokontrolderlardan biri. Men vizitka qildim
CMOS chastota hisoblagichi: 3 qadam
CMOS chastotali hisoblagichi: bu o'z ichiga olgan PDF va fotosuratlarni o'z ichiga olgan qo'llanma, men o'zimning chastotali hisoblagichimni diskret mantiqdan zavqlanish uchun yaratganman. Men elektron cho'chqalarni qanday yasaganim yoki uni qanday simlar bilan bog'laganim haqida batafsil ma'lumotga ega bo'lolmayman, lekin sxemalar yumshoq yumshoq KICADda tuzilgan
Arduino yordamida oddiy chastota hisoblagichi: 6 qadam
Arduino -dan foydalanadigan oddiy chastota hisoblagichi: Ushbu qo'llanmada biz Arduino -dan foydalanib oddiy chastota hisoblagichini yasashni o'rganamiz. Videoni tomosha qiling
DIY Arduino 30 soniya yuvish taymerini qanday qilish kerak, COVID tarqalishini to'xtating: 8 qadam
DIY Arduino 30 soniya yuvish taymerini qanday qilish kerak, COVID tarqalishini to'xtating: salom
CD/DVD -dagi barcha ma'lumotlarni 5 soniya yoki undan kamroq vaqt ichida o'ldiring: 3 qadam
CD/DVD -dagi barcha ma'lumotlarni 5 soniya yoki undan kamroq vaqt ichida o'ldiring. CD/DVD -dagi barcha ma'lumotlarni 5 soniya yoki undan kamroq vaqt ichida o'ldiring. Nega bunday qilmoqchisiz: ++ Bir necha yil eski zaxira nusxalarini yo'q qiling ++ Sizni eslayman. yotoqxonadagi maxsus vaqtni DVD ++ ga yoqib yubordi. Sizning Ex CD/DVDni qaytarib olishni xohlaydi. ++ AOL DISK BILAN QIZIQ !!!! qotib kuldim