Daftar Isi:
- Langkah 1: Wawasan
- Langkah 2: Inisialisasi Port
- Langkah 3: Daya Ultra Rendah
- Langkah 4: TIMER
- Langkah 5: Mode Daya Rendah
- Langkah 6: ISR-Timer
- Langkah 7: Interupsi Perangkat Keras
- Langkah 8: ISR- Atur Ulang / Tombol Tekan
- Langkah 9: KODE
- Langkah 10: Kode Referensi
Video: Penghitung Detik MSP430: 10 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Selamat datang! Pembuatan Penghitung Detik: Menggunakan CCStudio 8 dan MSP430F5529 untuk proyek tersebut.
bahasa C untuk mengkode mikrokontroler. Menerapkan Mode Daya Rendah, Timer, dan Interupsi. Output ditampilkan melalui 7 Segmen.
Langkah 1: Wawasan
Mari kita mulai!
Inisialisasi pengatur waktu pengawas ke status OFF menggunakan kata sandi yang diperlukan untuk pengatur waktu pengawas (Ini membantu untuk tetap memeriksa loop tak terbatas, menjaga prosesor tetap aman).
#termasuk
/** * utama.c */
int utama (kosong)
{
WDTCTL = WDTPW | WDTHOLD; // hentikan pengatur waktu pengawas
kembali 0;
}
Langkah 2: Inisialisasi Port
{
P3DIR=0xFF; // P3DIR=0x00;
P6DIR=0xFF;
P4DIR |=0x00;
P4REN |=0xFF;
P4OUT |=0xFF;
}
P3DIR |=0x00 memberitahu kita bahwa seluruh PORT-3 diinisialisasi untuk mengambil input.
P3DIR |=0xFF memberitahu kita bahwa seluruh PORT-3 diinisialisasi untuk memberikan output.
P3DIR |=0x01 hanya pin P3.0 yang diinisialisasi ke output di PORT-3. Ini mengikuti pemetaan Port Heksadesimal.
P4REN |=0xFF, ini menunjukkan bahwa pin PORT-4 memiliki resistor pull up/down yang diaktifkan.
Untuk memilihnya antara Pull UP atau Pull DOWN, digunakan instruksi P$OUT |=0xFF.
Jika 0xFF digunakan mereka mengkonfigurasi sebagai resistor Pull UP dan jika 0x00 mereka mengkonfigurasi sebagai Pull DOWN.
Langkah 3: Daya Ultra Rendah
MSP430F5529 memungkinkan kita untuk mengurangi kehilangan daya dari prosesor. Ini berguna dalam aplikasi mandiri.
Ini panggilan untuk deklarasi semua pin atau Port ke output.
{
P7DIR |= 0xFF;
P6DIR |= 0xFF;
P5DIR |= 0xFF;
P4DIR |= 0xFF;
P3DIR |= 0xFF;
P2DIR |= 0xFF;
P1DIR |= 0xFF;
}
Langkah 4: TIMER
Penggunaan timer untuk Delay generasi satu detik. Ini menggunakan SMCLK 1MHz, juga timer berjalan dalam Mode Daya Rendah (pada langkah berikutnya, setelah penghitungannya terputus dari LPM). Proses ini menghemat daya dan beban pada prosesor
TA0CCTL0=CCIE;
TA0CCR0=999;
TA0CTL = TASSEL_2 + MC_1;
Nilainya adalah 999, karena dibutuhkan satu hitungan lagi untuk memutar kembali ke nol di register pengatur waktu.
Langkah 5: Mode Daya Rendah
_BIS_SR(LPM0_bits+GIE);
Ini mengaktifkan General interrupt Enable (GIE), dan menempatkan CPU ke LPM0, di mana MCLK yang mendukung cpu dimatikan, dan SMCLK dan ACLK run yang membuat timer tetap berjalan. jadi kita bisa melihat CPU dimatikan, di sana dengan menghemat daya.
Langkah 6: ISR-Timer
#pragma vector=TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z++;
jika(z>tunda)
{
P3OUT=kode[x];
P6OUT=kode1[y];
x++;
jika(x==10)
{
x=0;
y++;
}
jika(y==6)
y=0;
z=0;
}
}
vektor pragma adalah untuk representasi ISR di C embd.
code[x] dan code1[y] adalah array yang berisi nilai output untuk dua tujuh segmen, untuk menampilkan penghitung 60 detik.
Langkah 7: Interupsi Perangkat Keras
P2DIR=0x00;
P2REN=0x02;
P2OUT=0x02;
P2IE |=BIT1;
P2IES |=BIT1;
P2IFG &= ~BIT1;
Di sini P2.1 dideklarasikan sebagai interupsi perangkat keras, jika tombol ditekan, penghitung akan direset ke nilainya.
program sisanya ditulis di dalam ISR dari interupsi ini.
Langkah 8: ISR- Atur Ulang / Tombol Tekan
#pragma vector=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0; y=0;
P3OUT=kode[x];
P6OUT=kode1[y];
v++;
untuk(i=0;i
{
P1OUT |= BIT0; //P1.0 = beralih
_delay_cycles(1048576);
P1OUT &=~BIT0; // P1.0 = beralih
_delay_cycles(1048576);
}
ISR ini mengatur ulang penghitung, dan menghitung berapa kali sisanya ditekan.
(Disini tampilan dibuat melalui led toggle, bisa juga menggunakan array dan timer lain, untuk menampilkan nilai-nilai tersebut sebagai output di 7 segmen).
Langkah 9: KODE
#termasuk
#tentukan penundaan 1000
kode karakter={0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
kode karakter1={0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
volatile unsigned int x=0, y=0, z=0;
volatile unsigned int v=0, i=0;
batal utama()
{
WDTCTL = WDTPW | WDTHOLD; // hentikan pengatur waktu pengawas
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);
}
// Rutin layanan interupsi timer A0
#pragma vector=TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z++;
jika(z>tunda)
{
P3OUT=kode[x];
P6OUT=kode1[y];
x++;
jika(x==10)
{
x=0;
y++;
}
jika(y==6)
y=0;
z=0;
}
}
// Rutin layanan interupsi perangkat keras
#pragma vector=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0;
y=0;
P3OUT=kode[x];
P6OUT=kode1[y];
v++;
untuk(i=0;i
{ P1OUT |= BIT0; // P1.0 = beralih
_delay_cycles(1048576);
P1OUT &=~BIT0; // P1.0 = beralih
_delay_cycles(1048576);
}
}
Langkah 10: Kode Referensi
Repositori GitHub
Direkomendasikan:
Cara Membuat Penghitung Langkah?: 3 Langkah (dengan Gambar)
Cara Membuat Penghitung Langkah?: Dulu saya tampil bagus di banyak olahraga: berjalan, berlari, bersepeda, bermain bulu tangkis, dll. Saya suka berkuda untuk bepergian jauh. Nah, lihat perut buncitku…….Yah, bagaimanapun, aku memutuskan untuk memulai kembali untuk berolahraga. Perlengkapan apa yang harus saya siapkan?
Cara Membuat Timer Cuci 30 Detik Arduino DIY, HENTIKAN PENYEBARAN COVID: 8 Langkah
Cara Membuat DIY Arduino 30 Detik Mencuci Timer, STOP PENYEBARAN COVID: halo
Penghitung Langkah - Mikro:Bit: 12 Langkah (dengan Gambar)
Penghitung Langkah - Mikro:Bit: Proyek ini akan menjadi penghitung langkah. Kami akan menggunakan sensor akselerometer yang ada di Micro:Bit untuk mengukur langkah kami. Setiap kali Mikro:Bit bergetar, kami akan menambahkan 2 ke hitungan dan menampilkannya di layar
Clap Switch (40 Clap dalam 5 Detik): 4 Langkah (dengan Gambar)
Clap Switch (40 Clap in 5 Second): Clap Switch memiliki kemampuan untuk menghidupkan/mematikan komponen listrik apa pun dengan menghubungkan output rangkaian ke sakelar relai. Di sini kita akan membuat saklar tepuk dengan beberapa komponen dengan penjelasan yang sangat baik. Dibandingkan dengan semua sakelar tepuk lainnya
Bunuh Semua Data di CD/DVD dalam 5 Detik atau Kurang.: 3 Langkah
Bunuh Semua Data pada CD/DVD dalam 5 Detik atau Kurang.: Bunuh Semua Data pada CD/DVD dalam 5 detik atau kurang.Mengapa Anda ingin melakukan ini:++Hancurkan cadangan lama beberapa tahun++Ingat Anda membakar waktu kamar tidur khusus ke DVD++Mantan Anda menginginkan CD/DVD kembali.++FUN WITH AOL DISK!!!! tertawa terbahak-bahak