Sisukord:
- 1. samm: ülevaade
- 2. samm: pordi lähtestamine
- 3. samm: ülimadal võimsus
- 4. samm: taimer
- Samm: vähese energiatarbega režiim
- 6. samm: ISR-taimer
- Samm: riistvara katkestamine
- 8. samm: ISR- lähtestamine/ vajutamine
- 9. samm: KOODI
- 10. samm: viitekood
Video: MSP430 sekundite loendur: 10 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Tere tulemast! Sekundite loenduri tegemine: projekti jaoks CCStudio 8 ja MSP430F5529 kasutamine.
C keel mikrokontrolleri kodeerimiseks. Vähese energiatarbega režiimide, taimerite ja katkestuste rakendamine. Väljundit kuvatakse 7 segmendi kaudu.
1. samm: ülevaade
Alustagem!
Initsialiseerige valvekoera taimer väljalülitatud olekusse, kasutades valvekoera taimeri jaoks vajalikku parooli (see aitab kontrollida lõpmatuid silmuseid, tagades protsessori turvalisuse).
#kaasake
/** * peamine.c */
int main (tühine)
{
WDTCTL = WDTPW | WDTHOLD; // peatada valvekoera taimer
tagasitulek 0;
}
2. samm: pordi lähtestamine
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 ütleb meile, et kogu PORT-3 on lähtestatud sisendite vastuvõtmiseks.
P3DIR | = 0xFF ütleb meile, et kogu PORT-3 lähtestatakse väljundite andmiseks.
P3DIR | = 0x01 lähtestatakse PORT-3 väljundiks ainult tihvt P3.0. See järgneb kuueteistkümnendsüsteemi sadama kaardistamisele.
P4REN | = 0xFF, see näitab, et PORT-4 tihvtidel on üles/alla takistid lubatud.
Nende valimiseks Pull UP või Pull DOWN kasutatakse käsku P $ OUT | = 0xFF.
Kui kasutatakse väärtust 0xFF, konfigureeritakse need tõmmatavateks takistiteks ja kui 0x00, siis allalaadimiseks.
3. samm: ülimadal võimsus
MSP430F5529 võimaldab meil vähendada protsessori toitekaod. See on kasulik iseseisvates rakendustes.
See nõuab väljundi kõigi pinide või portide deklareerimist.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
4. samm: taimer
Taimeri kasutamine ühe sekundi viivituse loomiseks. See kasutab 1MHz SMCLK -d, samuti töötab taimer vähese energiatarbega režiimis (järgmises etapis pärast selle loendamist LPM -i katkestamine). See protsess säästab protsessori energiat ja koormust
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Väärtused on 999, kuna taimeriregistris nulli tagasi pöördumiseks kulub veel üks arv.
Samm: vähese energiatarbega režiim
_BIS_SR (LPM0_bits+GIE);
See lubab üldise katkestamise lubamise (GIE) ja seab protsessori LPM0 -le, kus CPU -d toetav MCLK on välja lülitatud ning SMCLK ja ACLK töötavad, mis hoiavad taimerit töös. nii et näeme, et protsessor on energia säästmise tõttu välja lülitatud.
6. samm: ISR-taimer
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (tühine)
{
z ++;
kui (z> viivitus)
{
P3OUT = kood [x];
P6OUT = kood1 [y];
x ++;
kui (x == 10)
{
x = 0;
y ++;
}
kui (y == 6)
y = 0;
z = 0;
}
}
pragma vektor on mõeldud ISR -i esitamiseks C embd -s.
kood [x] ja kood1 [y] on massiivid, mis sisaldavad kahe seitsme segmendi väljundväärtusi 60 sekundi loenduri kuvamiseks.
Samm: riistvara katkestamine
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Siin kuulutatakse P2.1 riistvarakatkestuseks, kui nuppu vajutatakse, lähtestatakse loendur väärtusele.
ülejäänud programm on kirjutatud selle katkestuse ISR -i.
8. samm: ISR- lähtestamine/ vajutamine
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (tühine)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kood [x];
P6OUT = kood1 [y];
v ++;
jaoks (i = 0; i
{
P1OUT | = BIT0; //P1.0 = lüliti
_ viivitustsüklid (1048576);
P1OUT & = ~ BIT0; // P1.0 = lüliti
_ viivitustsüklid (1048576);
}
See ISR lähtestab loenduri ja loeb, mitu korda ülejäänud osa vajutati.
(Siin kuvatakse LED -lüliti abil, saab kasutada ka mõnda muud massiivi ja taimerit, et näidata neid väärtusi väljundina 7 segmendis).
9. samm: KOODI
#kaasake
#defineerige viivitus 1000
sümbolikood = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
sümbolikood = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
lenduv allkirjastamata int x = 0, y = 0, z = 0;
lenduv allkirjastamata int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // peatada valvekoera taimer
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);
}
// Taimer A0 teenuse katkestamise rutiin
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (tühine)
{
z ++;
kui (z> viivitus)
{
P3OUT = kood [x];
P6OUT = kood1 [y];
x ++;
kui (x == 10)
{
x = 0;
y ++;
}
kui (y == 6)
y = 0;
z = 0;
}
}
// Riistvara katkestusteenuse rutiin
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (tühine)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kood [x];
P6OUT = kood1 [y];
v ++;
jaoks (i = 0; i
{P1OUT | = BIT0; // P1.0 = lüliti
_ viivitustsüklid (1048576);
P1OUT & = ~ BIT0; // P1.0 = lüliti
_ viivitustsüklid (1048576);
}
}
10. samm: viitekood
GitHubi hoidla
Soovitan:
Külastajate loendur, kasutades 8051 ja infrapunaandurit koos LCD -ga: 3 sammu
Külastajate loendur koos LCD -ekraaniga 8051 ja IR -anduriga: Head sõbrad, olen selgitanud, kuidas teha külastajate loendurit 8051 ja IR -anduri abil, ning kuvanud selle LCD -ekraanil. 8051 on üks populaarsemaid mikrokontrollereid, mida kasutatakse hobi-, kommertsrakenduste tegemiseks kogu maailmas. Olen teinud visiooni
CMOS Sageduste loendur: 3 sammu
CMOS Sageduste loendur: see juhend koos PDF -failide ja fotodega selle kohta, kuidas ma diskreetsest loogikast lõbutsemiseks oma sagedusloenduri kujundasin. Ma ei hakka üksikasjalikult kirjeldama, kuidas ma ahelaid tegin või kuidas neid juhtmeid ühendada, kuid skeemid on valmistatud KICADis, mis on tasuta pehme
MicroBiti ruumi täituvuse loendur ja kontroller: 4 sammu
MicroBiti ruumide täituvuse loendur ja kontroller: Pandeemia ajal on üks viis viiruse leviku vähendamiseks inimeste vahelise füüsilise distantseerimise maksimeerimine. Tubades või kauplustes oleks kasulik teada, kui palju inimesi on igal ajal suletud ruumis. See projekt kasutab paari
Külastajate loendur Arduino kasutamine TinkerCadis: 3 sammu
Külastajate loendur Arduino kasutamine TinkerCadis: Mitu korda peame jälgima isikut/inimesi, kes külastavad mõnda kohta, näiteks seminari saali, konverentsisaali või kaubanduskeskust või templit. Seda projekti saab kasutada mis tahes konverentsiruumi või seminariruumi sisenevate külastajate lugemiseks ja kuvamiseks
Arduino loendur, kasutades TM1637 LED -ekraani: 7 sammu
Arduino loendur TM1637 LED -ekraani abil: selles õpetuses õpime, kuidas teha lihtsat numbriloendurit, kasutades LED -ekraani TM1637 ja Visuino. Vaadake videot