Sadržaj:
- Korak 1: Uvid
- Korak 2: Inicijalizacija porta
- Korak 3: Ultra niska snaga
- Korak 4: TIMER
- Korak 5: Način niske potrošnje energije
- Korak 6: ISR-mjerač vremena
- Korak 7: Hardverski prekid
- Korak 8: ISR- Resetiraj/ pritisni gumb
- Korak 9: KOD
- Korak 10: Referentni kod
Video: Brojač sekundi MSP430: 10 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Dobrodošli! Izrada brojača sekundi: Korištenje CCStudio 8 i MSP430F5529 za projekt.
C jezik za kodiranje mikro kontrolera. Primjena načina rada, mjerača vremena i prekida male snage. Izlaz se prikazuje putem 7 segmenata.
Korak 1: Uvid
Započnimo!
Inicijalizirajte nadzorni mjerač vremena u isključeno stanje pomoću potrebne lozinke za nadzorni mjerač vremena (pomaže u kontroli beskonačnih petlji, čuvajući procesor na sigurnom).
#uključi
/** * main.c */
int main (void)
{
WDTCTL = WDTPW | WDTHOLD; // zaustavljanje mjerača vremena nadzornika
return 0;
}
Korak 2: Inicijalizacija porta
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 nam govori da je cijeli PORT-3 inicijaliziran za primanje ulaza.
P3DIR | = 0xFF nam govori da je cijeli PORT-3 inicijaliziran za davanje izlaza.
P3DIR | = 0x01 samo je pin P3.0 inicijaliziran za izlaz u PORT-3. Ovo slijedi mapiranje heksadecimalnog porta.
P4REN | = 0xFF, to znači da su na pinovima PORT-4 omogućeni otpornici za povlačenje/spuštanje.
Da biste ih odabrali između Povuci gore ili Povuci DOLJE, koristi se uputa P $ OUT | = 0xFF.
Ako se koristi 0xFF, oni se konfiguriraju kao otpornici na povlačenje, a ako se 0x00 konfiguriraju kao povlačenje prema dolje.
Korak 3: Ultra niska snaga
MSP430F5529 omogućuje nam smanjenje gubitaka snage procesora. Ovo je korisno u samostalnim aplikacijama.
Ovo zahtijeva deklaraciju svih pinova ili portova za izlaz.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Korak 4: TIMER
Korištenje mjerača vremena za generiranje kašnjenja od jedne sekunde. Ovo koristi SMCLK od 1MHz, a mjerač vremena radi i u načinu rada niske potrošnje energije (u sljedećem koraku, nakon što je prebrojen prekinut iz LPM -a). Ovaj proces štedi energiju i opterećuje procesor
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Vrijednosti su 999, jer je za vraćanje na nulu u registru mjerača vremena potrebno još jedno računanje.
Korak 5: Način niske potrošnje energije
_BIS_SR (LPM0_bit+GIE);
To omogućuje omogućavanje općeg prekida (GIE) i stavlja CPU na LPM0, gdje je MCLK koji podržava CPU isključen, a SMCLK i ACLK se pokreću kako bi tajmer radio. tako da možemo vidjeti da je CPU isključen, štedeći energiju.
Korak 6: ISR-mjerač vremena
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
if (z> odgoda)
{
P3OUT = kôd [x];
P6OUT = kod1 [y];
x ++;
ako (x == 10)
{
x = 0;
y ++;
}
ako (y == 6)
y = 0;
z = 0;
}
}
vektor pragme služi za ISR reprezentaciju u C embd.
code [x] i code1 [y] su nizovi koji sadrže izlazne vrijednosti za dva sedam segmenta, za prikaz brojača od 60 sekundi.
Korak 7: Hardverski prekid
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Ovdje se P2.1 deklarira kao hardverski prekid, ako se pritisne gumb, brojač se vraća na vrijednost.
ostatak programa zapisan je unutar ISR -a ovog prekida.
Korak 8: ISR- Resetiraj/ pritisni gumb
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kôd [x];
P6OUT = kod1 [y];
v ++;
za (i = 0; i
{
P1OUT | = BIT0; //P1.0 = prebacivanje
_odgoda_cikli (1048576);
P1OUT & = ~ BIT0; // P1.0 = prebacivanje
_odgoda_cikli (1048576);
}
Ovaj ISR poništava brojač i broji koliko je puta pritisnut ostatak.
(Ovdje je prikaz napravljen pomoću LED prekidača, može se koristiti i drugi niz i mjerač vremena, za prikaz tih vrijednosti kao izlaz u 7 segmentu).
Korak 9: KOD
#uključi
#define delay 1000
kôd znaka = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
hlapljivi bezznačni int x = 0, y = 0, z = 0;
hlapljivi bezznačni int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // zaustavljanje mjerača vremena nadzornika
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_bit+GIE);
}
// Timer A0 rutina usluge prekida
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
if (z> odgoda)
{
P3OUT = kôd [x];
P6OUT = kod1 [y];
x ++;
ako (x == 10)
{
x = 0;
y ++;
}
ako (y == 6)
y = 0;
z = 0;
}
}
// Uslužna rutina prekida hardverskog prekida
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kôd [x];
P6OUT = kod1 [y];
v ++;
za (i = 0; i
{P1OUT | = BIT0; // P1.0 = prebacivanje
_odgoda_cikli (1048576);
P1OUT & = ~ BIT0; // P1.0 = prebacivanje
_odgoda_cikli (1048576);
}
}
Korak 10: Referentni kod
GitHub spremište
Preporučeni:
Kako napraviti brojač koraka?: 3 koraka (sa slikama)
Kako napraviti brojač koraka?: Nekada sam se dobro snašao u mnogim sportovima: hodanje, trčanje, vožnja bicikla, igranje badmintona itd. Volim jahanje da bih brzo putovao. Pa, pogledaj moj trbušni trbuh … Pa, u svakom slučaju, odlučujem ponovno početi vježbati. Koju opremu trebam pripremiti?
Kako napraviti Arduino mjerač vremena za pranje 30 sekundi, ZAUSTAVITE ŠIRENJE COVID -a: 8 koraka
Kako napraviti Arduino mjerač vremena za pranje 30 sekundi, ZAUSTAVITE ŠIRENJE COVID -a: zdravo
20 sekundi Mjerač vremena za pranje za COVID-19: 6 koraka (sa slikama)
20 Mjerač vremena za pranje ruku za COVID-19: Kako se globalni COVID-19 širio, trebali bismo se zaštititi ne samo skupljajući manje i noseći maske za lice, već i češće perući ruke. Nije učinkovit protiv virusa ako to ne učinite ne perite ruke pravilno. Kako pravilno oprati ruke? W
Prekidač pljeskanja (40 pljeskanja u 5 sekundi): 4 koraka (sa slikama)
Pljeskajuća sklopka (40 pljeskanja u 5 sekundi): Pljeskajuća sklopka ima mogućnost uključivanja/isključivanja bilo koje električne komponente povezivanjem izlaza kruga s relejnom sklopkom. Ovdje ćemo napraviti prekidač pljeskanja s nekoliko komponenti s vrlo dobrim objašnjenjima. U usporedbi sa svim ostalim prekidačima pljeskanja
Ubijte sve podatke na CD -u/DVD -u za 5 sekundi ili manje .: 3 koraka
Ubijte sve podatke na CD -u/DVD -u za 5 sekundi ili manje: Ubijte sve podatke na CD -u/DVD -u za 5 sekundi ili manje.Zašto biste to htjeli učiniti: ++ Uništite stare sigurnosne kopije od nekoliko godina ++ Zapamtite vas snimio vrijeme posebne spavaće sobe na DVD ++ Vaš bivši želi natrag CD/DVD. ++ ZABAVA SA AOL DISKOM !!!! lol