Running LED dengan Menggunakan ATMEGA32
00.07
Running LED pada Mikrokontroller Atmega 32
Mikrokontroler
ini memiliki karakteristik sebagai berikut.
-Menggunakan
arsitektur AVR RISC
- 131 perintah dengan satu clock cycle
- 32 x 8 register
Data dan program memori
- 32 Kb In-System Programmable Flash
- 2 Kb SRAM
- 1 Kb In- System EEPROM
- 8 Channel 10-bit ADC
- Two Wire Interface
- USART Serial Communication
- Master/Slave SPI Serial Interface
- On-Chip Oscillator
- Watch-dog Timer
- 32 Bi-directional I/O
- Tegangan
operasi 2,7 – 5,5 V
Arsitektur AVR ini menggabungkan perintah secara
efektif dengan 32 register umum. Semua register tersebut langsung terhubung
dengan Arithmetic Logic Unit (ALU) yang memungkinkan 2 register terpisah
diproses dengan satu perintah tunggal dalam satu clock cycle. Hal ini
menghasilkan kode yang efektif dan kecepatan prosesnya 10 kali lebih cepat dari
pada mikrokontroler CISC biasa. Berikut adalah blok diagram Mikrokontroler AVR ATMega32.
Gambar 1. Blok diagram AVR ATMega32
2. KONFIGURASI
PIN ATMEGA 32 [kembali]
Konfigurasi pin Mikrokontroler AVR ATMega32
Gambar 2. Pin-pin ATMega32
Secara fungsional konfigurasi pin
ATMega32 adalah sebagai berikut:
a. VCC
- Tegangan
sumber
b. GND (Ground)
- Ground
c. Port A (PA7 – PA0)
Port A adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin
memilki internal pull-up resistor. Output buffer port A dapat mengalirkan arus
sebesar 20 mA. Ketika port A digunakan sebagai input dan di pull-up secara
langsung, maka port A akan mengeluarkan arus jika internal pull-up resistor
diaktifkan. Pin-pin dari port A memiliki fungsi khusus yaitu dapat berfungsi
sebagai channel ADC (Analog to Digital Converter) sebesar 10 bit. Fungsi-fungsi
khusus pin-pin port A dapat ditabelkan seperti yang tertera pada tabel ….
Port
|
Alternate Function
|
PA7
|
ADC7 (ADC input channel 7)
|
PA6
|
ADC6 (ADC input channel 6)
|
PA5
|
ADC5 (ADC input channel 5)
|
PA4
|
ADC4 (ADC input channel 4)
|
PA3
|
ADC3 (ADC input channel 3)
|
PA2
|
ADC2 (ADC input channel 2)
|
PA1
|
ADC1 (ADC input channel 1)
|
PA0
|
ADC0 (ADC input channel 0)
|
Tabel 1. Fungsi khusus port A
d. Port B (PB7 – PB0)
Port B adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin
mengandung internal pull-up resistor. Output buffer port B dapat mengalirkan
arus sebesar 20 mA. Ketika port B digunakan sebagai input dan di pull-down
secara external, port B akan mengalirkan arus jika internal pull-up resistor
diaktifkan.
Pin-pin port B
memiliki fungsi-fungsi khusus, diantaranya :
·
SCK port B,
bit 7
Input pin clock untuk up/downloading memory.
·
MISO port B,
bit 6
Pin output data untuk uploading memory.
· MOSI port B, bit 5
Pin input
data untuk downloading memory.
Fungsi-fungsi
khusus pin-pin port B dapat ditabelkan seperti pada tabel …
Port
|
Alternate
Function
|
PB7
|
SCK (SPI
Bus Serial Clock)
|
PB6
|
MISO (SPI
Bus Master Input/Slave Output)
|
PB6
|
MOSI (SPI
Bus Master Output/Slave Input)
|
PB5
|
SS (SPI
Slave Select Input)
|
PB3
|
AIN1
(Analog Comparator Negative Input)
OCO
(Timer/Counter0 Output Compare Match Output)
|
PB2
|
AIN0
(Analog Comparator Positive Input)
INT2
(External Interrupt 2 Input)
|
PB1
|
T1
(Timer/Counter1 External Counter Input)
|
PB0
|
T0 (Timer/Counter
External Counter Input) XCK (USART External Clock Input/Output)
|
Tabel 2. Fungsi khusus port B
e. Port C (PC7 – PC0)
Port C adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin
memiliki internal pull-up resistor. Output buffer port C dapat mengalirkan arus
sebesar 20 mA. Ketika port C digunakan sebagai input dan di pull-down secara
langsung, maka port C akan mengeluarkan arus jika internal pull-up resistor
diaktifkan. Fungsi-fungsi khusus pin-pin port C dapat ditabelkan seperti yang
tertera pada tabel dibawah ini.
Port
|
Alternate
Function
|
PC7
|
TOSC2
(Timer Oscillator Pin 2)
|
PC6
|
TOSC1
(Timer Oscillator Pin 1)
|
PC6
|
TD1 (JTAG
Test Data In)
|
PC5
|
TD0 (JTAG
Test Data Out)
|
PC3
|
TMS (JTAG
Test Mode Select)
|
PC2
|
TCK (JTAG
Test Clock)
|
PC1
|
SDA
(Two-wire Serial Bus Data Input/Output Line)
|
PC0
|
SCL
(Two-wire Serial Bus Clock Line)
|
Tabel 3. Fungsi khusus port C
f.
Port D (PD7 – PD0)
Port D adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin
memiliki internal pull-up resistor. Output buffer port D dapat mengalirkan arus
sebesar 20 mA. Ketika port D digunakan sebagai input dan di pull-down secara
langsung, maka port D akan mengeluarkan arus jika internal pull-up resistor
diaktifkan. Fungsi-fungsi khusus pin-pin port D dapat ditabelkan seperti yang
tertera pada tabel dibawah ini.
Port
|
Alternate Function
|
PD7
|
OC2 (Timer / Counter2 Output
Compare Match Output)
|
PD6
|
ICP1 (Timer/Counter1 Input Capture
Pin)
|
PD6
|
OCIB (Timer/Counter1 Output
Compare B Match Output)
|
PD5
|
TD0 (JTAG Test Data Out)
|
PD3
|
INT1 (External Interrupt 1 Input)
|
PD2
|
INT0 (External Interrupt 0 Input)
|
PD1
|
TXD (USART Output Pin)
|
PD0
|
RXD (USART Input Pin)
|
Tabel
4. Fungsi khusus port D
Berikut ini adalah rangkaian
simulasi running led dengan menggunakan mikrokontroller atmega 32. Software
yang digunakan untuk simulasi rangkaian adalah protheus, sedangkan software
yang digunakan untuk compiler adalah code vision avr. Pada rangkaian digunakan
Port A sebagai output LED , dan pada Port C digunakan untuk input saklar, juga
ada port reset,Xtal1,Xtal2,Aref, dan AVcc sebagai inputnya..
Gambar 3.
Screnshoot rangkaian simulasi
Ini adalah bentuk program dari running
led, dengan pengkonversian bilangan heksadesimal ke bilangan biner, lalu
bilangan biner ini lah yang akan dieksekusi, hingga menjadi perintah HIGH atau
LOW pada led, sehinggan led dapat hidup dan mati.
Listing program :
while (1)
{
// Place your code here
PORTA=0xFF;
delay_ms(200);
PORTA=0xAA;
delay_ms(200);
PORTA=0xA5;
delay_ms(200);
PORTA=0x5A;
delay_ms(200);
PORTA=0x55;
delay_ms(200);
PORTA=0x0F;
delay_ms(200);
PORTA=0xF0;
delay_ms(200);
PORTA=0x00;
delay_ms(500);
}
}
{
// Place your code here
PORTA=0xFF;
delay_ms(200);
PORTA=0xAA;
delay_ms(200);
PORTA=0xA5;
delay_ms(200);
PORTA=0x5A;
delay_ms(200);
PORTA=0x55;
delay_ms(200);
PORTA=0x0F;
delay_ms(200);
PORTA=0xF0;
delay_ms(200);
PORTA=0x00;
delay_ms(500);
}
}
Berikut contoh pengkonversian bilangan hexadecimal,
biner dan decimal :
Bilangan Hexadecimal
|
Bilangan Biner
|
Blangan Decimal
|
FF
|
11111111
|
255
|
A5
|
10100101
|
168
|
0F
|
00001111
|
16
|
A0
|
10100000
|
160
|
Tabel 5. Contoh Pengkonversian Hexadecimal ke Biner