Cuprins:
- Pasul 1: Insight
- Pasul 2: inițializarea portului
- Pasul 3: Putere foarte redusă
- Pasul 4: TIMER
- Pasul 5: Mod de consum redus
- Pasul 6: Timer ISR
- Pasul 7: întrerupere hardware
- Pasul 8: ISR- Resetare / Buton de apăsare
- Pasul 9: COD
- Pasul 10: Cod de referință
Video: Contor MSP430 Seconds: 10 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Bine ati venit! Realizarea contorului de secunde: Utilizarea CCStudio 8 și MSP430F5529 pentru proiect.
Limbaj C pentru codarea microcontrolerului. Aplicarea modurilor de consum redus, cronometrelor și întreruperilor. Ieșirea este afișată prin 7 segmente.
Pasul 1: Insight
Sa incepem!
Inițializați cronometrul câinelui de supraveghere la starea OPRIT utilizând parola necesară pentru cronometrul câinelui de supraveghere (vă ajută să verificați buclele infinite, păstrând procesorul în siguranță).
#include
/ ** * main.c * /
int main (nul)
{
WDTCTL = WDTPW | WDTHOLD; // oprește cronometrul câinelui de pază
retur 0;
}
Pasul 2: inițializarea portului
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 ne spune că întregul PORT-3 este inițializat pentru a lua intrări.
P3DIR | = 0xFF ne spune că întregul PORT-3 este inițializat pentru a da ieșiri.
P3DIR | = 0x01 doar pinul P3.0 este inițializat la ieșire în PORT-3. Aceasta urmează o mapare a portului hexazecimal.
P4REN | = 0xFF, aceasta indică faptul că pinii PORT-4 au activat rezistențele de tragere sus / jos.
Pentru a le selecta între Pull UP sau Pull DOWN, se folosește instrucțiunea P $ OUT | = 0xFF.
Dacă se folosește 0xFF se configurează ca rezistențe Pull UP și dacă 0x00 se configurează ca Pull DOWN.
Pasul 3: Putere foarte redusă
MSP430F5529 ne permite să reducem pierderile de energie de la procesor. Acest lucru este util în aplicații independente.
Acest lucru necesită declararea tuturor pin-urilor sau porturilor la ieșire.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Pasul 4: TIMER
Utilizarea temporizatorului pentru întârzierea generării unei secunde. Acest lucru folosește SMCLK de 1 MHz, de asemenea, temporizatorul rulează în modul de consum redus (în pasul următor, după numărare, este întrerupt de la LPM). Acest proces economisește puterea și sarcina procesorului
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Valorile sunt de 999, deoarece este nevoie de încă un număr pentru a reveni la zero în registrul temporizatorului.
Pasul 5: Mod de consum redus
_BIS_SR (LPM0_bits + GIE);
Aceasta activează Activarea întreruperii generale (GIE) și pune CPU-ul la LPM0, unde MCLK care acceptă cpu-ul este dezactivat și rulează SMCLK și ACLK care menține cronometrul în funcțiune. deci putem vedea CPU este oprit, economisind energie.
Pasul 6: Timer ISR
#pragma vector = TIMER0_A0_VECTOR
_interrupt void Timer_A (nul)
{
z ++;
dacă (z> întârziere)
{
P3OUT = cod [x];
P6OUT = code1 [y];
x ++;
if (x == 10)
{
x = 0;
y ++;
}
if (y == 6)
y = 0;
z = 0;
}
}
vectorul pragmatic este pentru reprezentarea ISR în C embd.
code [x] și code1 [y] sunt matricele care conțin valori de ieșire pentru cele două șapte segmente, pentru afișarea contorului de 60 de secunde.
Pasul 7: întrerupere hardware
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Aici P2.1 este declarat ca o întrerupere hardware, dacă butonul este apăsat, contorul se resetează la valoare.
programul de rest este scris în ISR-ul acestei întreruperi.
Pasul 8: ISR- Resetare / Buton de apăsare
#pragma vector = PORT2_VECTOR
_interrupt void port_2 (nul)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = cod [x];
P6OUT = code1 [y];
v ++;
pentru (i = 0; i
{
P1OUT | = BIT0; //P1.0 = comută
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = comută
_delay_cycles (1048576);
}
Acest ISR resetează contorul și ține cont de câte ori a fost apăsat restul.
(Aici este afișarea se face prin comutare cu led, se poate utiliza, de asemenea, o altă matrice și temporizator, pentru a afișa acele valori ca ieșire în 7 segmente).
Pasul 9: COD
#include
#define delay 1000
cod char = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
volatile nesemnate int x = 0, y = 0, z = 0;
volatile nesemnate int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // oprește cronometrul câinelui de pază
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 întrerupe rutina serviciului
#pragma vector = TIMER0_A0_VECTOR
_interrupt void Timer_A (nul)
{
z ++;
dacă (z> întârziere)
{
P3OUT = cod [x];
P6OUT = code1 [y];
x ++;
if (x == 10)
{
x = 0;
y ++;
}
if (y == 6)
y = 0;
z = 0;
}
}
// Rutina de service a întreruperii hardware-ului
#pragma vector = PORT2_VECTOR
_interrupt void port_2 (nul)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = cod [x];
P6OUT = code1 [y];
v ++;
pentru (i = 0; i
{P1OUT | = BIT0; // P1.0 = comută
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = comută
_delay_cycles (1048576);
}
}
Pasul 10: Cod de referință
GitHub Repository
Recomandat:
Contor vizitator folosind senzorul 8051 și IR cu LCD: 3 pași
Contor vizitator folosind senzorul 8051 și IR cu LCD: Dragi prieteni, am explicat cum să faci un contor vizitator folosind senzorul 8051 și IR și să-l afișez pe LCD. 8051 este unul dintre cele mai populare microcontrolere utilizate pentru realizarea aplicațiilor comerciale hobby din întreaga lume. Am făcut o viziune
Contor de calitate a aerului interior: 5 pași (cu imagini)
Contor de calitate a aerului interior: Proiect simplu de verificare a calității aerului în casa dvs. Deoarece rămânem / lucrăm mult de acasă în ultima vreme, ar putea fi o idee bună să monitorizați calitatea aerului și să vă reamintiți când este timpul să deschideți fereastra și să aduci niște aer proaspăt
Contor simplu 20 LED Vu folosind LM3915: 6 pași
Simple 20 LED Vu Meter Folosind LM3915: Ideea de a face un contor VU a fost pe lista mea de proiecte de mult timp. Și, în sfârșit, o pot face acum. VU meter este un circuit pentru un indicator al puterii semnalului audio. Circuitul contorului VU este de obicei aplicat unui circuit amplificator astfel încât
Cum să faci un contor de pași ?: 3 pași (cu imagini)
Cum să fac un contor de pași ?: obișnuiam să performez bine la multe sporturi: mersul pe jos, alergatul, mersul pe bicicletă, jocul de badminton etc. Îmi place să călăresc să călătoresc în preajmă. Ei bine, uită-te la burtica mea ostilă …… Ei bine, oricum, decid să reîncep să fac mișcare. Ce echipament ar trebui să pregătesc?
Contor de pași - Micro: Bit: 12 pași (cu imagini)
Step Counter - Micro: Bit: Acest proiect va fi un counter counter. Vom folosi senzorul accelerometrului încorporat în Micro: Bit pentru a ne măsura pașii. De fiecare dată când Micro: Bit se clatină, vom adăuga 2 la număr și îl vom afișa pe ecran