Konfigurasi
pin pada UC ATMega328
Masing masing pin pada Port B, Port C dan Port D dapat dikonfogurasi
sebagai input dan output.
Untuk menkonfigurasi sebagai input maka DDRx = 0; dan jika sebagai
output DDRx = 1.
DDRx = Data Direction Register B, C atau D.
Contoh potongan program untuk menkonfigurasi masing masing bit,
Setiap pin jika diset sebagai output memiliki kemampuan yang tinggi
sebagai sink atau sebagai source, atau dengan kata lain dapat
menyalakan LED secara langsung.
Setiap pin jika diset sebagai input maka internal pull-up resistor
harus diaktifkan.
Contoh program.
#include<avr/io.h>
int main(void)
{
DDRB &= ~(1 <<
PINB1); //Set pin PB1 sebagai input
PORTB |= 1 << PINB1; // Mengaktifkan pull-up resistor PB1
PORTB |= 1 << PINB1; // Mengaktifkan pull-up resistor PB1
DDRB |= (1 << PINB0);
//Set PB0 sebagai output
int tekan = 0; //memberi nilai awal variabel tekan = 0
while (1)
{
int tekan = 0; //memberi nilai awal variabel tekan = 0
while (1)
{
if (bit_is_clear(PINB, 1))
//Check jika PB1 menjadi low
{
{
//Perintah
Perintah
}
else // Jika PB1 tetap tinggi
{
//Perintah Perintah
}
}
else // Jika PB1 tetap tinggi
{
//Perintah Perintah
}
}
}
Jika
diinginkan penghematan daya (mengurangi konsumsi arus) maka pin pin
yang tidak dipergunakan agar tidak difloating. Pin pin yang tidak
dipergunakan agar diberi pull-up resistor atau pull-down resistor
secara external. Tidak dibenarkan menghubungkan secara langsung pin
pin yang tidak dipergunakan ke VCC atau ke GND.
Register yang terlibat untuk mensetting I/O Port
Bit-4
PUD = Pull-Up Disable. Jika bit PUD diset (mcucr |= (1 <<pud)
maka seluruh pull-up pada I/O menjadi disable meskipun Ddxn dan
PORTxn menkonfigurasi pull-up aktif.
Tidak ada komentar:
Posting Komentar