Съдържание:
- Стъпка 1: Прозрение
- Стъпка 2: Инициализация на порта
- Стъпка 3: Свръх ниска мощност
- Стъпка 4: ТАЙМЕР
- Стъпка 5: Режим на ниска мощност
- Стъпка 6: ISR-таймер
- Стъпка 7: Прекъсване на хардуера
- Стъпка 8: ISR- бутон за нулиране/ натискане
- Стъпка 9: КОД
- Стъпка 10: Референтен код
Видео: Брояч на секунди MSP430: 10 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Добре дошли! Осъществяване на брояч на секунди: Използване на CCStudio 8 и MSP430F5529 за проекта.
C език за кодиране на микроконтролера. Прилагане на режими с ниска мощност, таймери и прекъсвания. Изходът се показва чрез 7 сегмента.
Стъпка 1: Прозрение
Нека да започнем!
Инициализирайте таймера за наблюдение в състояние OFF, като използвате необходимата парола за таймера за наблюдение (помага да се контролира безкрайните цикли, като се поддържа безопасността на процесора).
#включва
/** * main.c */
int main (void)
{
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 от 1MHz, също така таймерът работи в режим на ниска мощност (в следващата стъпка, след преброяването му, прекъснато от LPM). Този процес спестява енергия и натоварва процесора
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Стойностите са 999, тъй като отнема още един брой за връщане към нула в регистъра на таймера.
Стъпка 5: Режим на ниска мощност
_BIS_SR (LPM0_bits+GIE);
Това позволява активиране на общо прекъсване (GIE) и поставя процесора в LPM0, където MCLK, който поддържа процесора, е изключен, а SMCLK и ACLK работят, което поддържа таймера да работи. така че можем да видим, че процесорът е изключен, чрез спестяване на енергия.
Стъпка 6: ISR-таймер
#pragma vector = TIMER0_A0_VECTOR
_ прекъсване на празнотата Timer_A (void)
{
z ++;
ако (z> забавяне)
{
P3OUT = код [x];
P6OUT = код1 [y];
x ++;
ако (x == 10)
{
x = 0;
y ++;
}
ако (y == 6)
y = 0;
z = 0;
}
}
pragma vector е за ISR представяне в C embd.
code [x] и code1 [y] са масивите, които съдържат изходни стойности за двата седем сегмента, за показване на брояч за 60 секунди.
Стъпка 7: Прекъсване на хардуера
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Тук P2.1 се декларира като хардуерно прекъсване, ако бутонът е натиснат, броячът се връща към стойността.
останалата програма е написана вътре в ISR на това прекъсване.
Стъпка 8: ISR- бутон за нулиране/ натискане
#pragma vector = PORT2_VECTOR
_прекъсване на void port_2 (void)
{
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 code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
летливи без знаци int x = 0, y = 0, z = 0;
летливи беззнакови int v = 0, i = 0;
void main ()
{
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);
}
// Таймер А0 услуга за прекъсване
#pragma vector = TIMER0_A0_VECTOR
_ прекъсване на празнотата Timer_A (void)
{
z ++;
ако (z> забавяне)
{
P3OUT = код [x];
P6OUT = код1 [y];
x ++;
ако (x == 10)
{
x = 0;
y ++;
}
ако (y == 6)
y = 0;
z = 0;
}
}
// Рутинна услуга за прекъсване на хардуера
#pragma vector = PORT2_VECTOR
_прекъсване на void port_2 (void)
{
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 хранилище
Препоръчано:
Как да направите брояч на стъпки?: 3 стъпки (със снимки)
Как да си направя брояч на стъпки?: Някога се представях добре в много спортове: ходене, бягане, каране на колело, игра на бадминтон и т.н. Е, вижте дебелото ми коремче … … Е, все пак решавам да рестартирам, за да тренирам. Какво оборудване трябва да подготвя?
Как да си направите таймер за измиване на Arduino 30 секунди, спрете разпространението на COVID: 8 стъпки
Как да си направите таймер за измиване на Arduino 30 секунди, спрете разпространението на COVID: здравей
Брояч на стъпки - Микро: Бит: 12 стъпки (със снимки)
Стъпков брояч - Микро: Бит: Този проект ще бъде брояч на стъпки. Ще използваме сензора за акселерометър, който е вграден в Micro: Bit за измерване на нашите стъпки. Всеки път, когато Micro: Bit се разклати, ще добавим 2 към броя и ще го покажем на екрана
Превключвател за пляскане (40 пляскания за 5 секунди): 4 стъпки (със снимки)
Плескащ превключвател (40 пляскания за 5 секунди): Прекъсвачът има способността да включва/изключва всеки електрически компонент чрез свързване на изхода на веригата към релеен превключвател. Тук ще направим превключвател с няколко компонента с много добри обяснения. В сравнение с всички останали превключватели
Убийте всички данни на CD/DVD за 5 секунди или по -малко .: 3 стъпки
Убийте всички данни на CD/DVD за 5 секунди или по -малко .: Убийте всички данни на CD/DVD за 5 секунди или по -малко. Защо искате да направите това: ++ Унищожете старите архиви от няколко години ++ Запомнете ви изгори специалното време за спалня на DVD ++ Вашият бивш иска обратно CD/DVD. ++ ЗАБАВЛЯВАНЕ С АОЛ ДИСК !!!! LOL