ATMEGA8535/16/32 |
Untuk menyalakan led
dengan mikrokontroler Atmega8535/16/32 pertama kita harus mengetahui
dasar-dasar cara kerja dari led, terus dasar pemograman C pada
codevision AVR untuk fungsi input output, sedangkan disini hanya
pemograman dan cara kerjanya
Beberapa hal yang perlu diingat dalam pemograman nya, yaitu :
- DDRx (misal pada port A maka penulisanya DDRA)
DDRx berfungsi untuk dijadikan INPUT atau OUTPUT, MASUKAN atau KELUARAN
contoh:
=Jika dalam bilangan hexadecimal=
=Jika dalam bilangan hexadecimal=
DDRA=0x00
-> artinya semua portA (PA0 - PA7) di fungsikan sebagai MASUKAN/INPUT karena bernilai 00
DDRA=0xFF
->artinya semua portA (PA0 - PA7) difungsikan sebagai KELUARAN/OUTPUT karena bernilai FF
DDRA=0x0F
->karena PA0,PA1,PA2,PA3 bernilai F maka fungisnya sebagai OUTPUT,
sedangakan PA4, PA5, PA6, PA7 bernilai 0 maka fungsinya sebagai INPUT
=Jika dalam bilangan biner=
DDRA=0b00000000
-> artinya semua portA (PA0 - PA7) di fungsikan sebagai MASUKAN/INPUT karena bernilai 00000000
DDRA=0b00001111
->karena PA0,PA1,PA2,PA3 bernilai 1 maka fungisnya sebagai OUTPUT,
sedangakan PA4, PA5, PA6, PA7 bernilai 0 maka fungsinya sebagai INPUT
DDRA=0b11000101
->PA0=1, PA2=1, PA6=1, PA7=1, fungsinya sebagai OUTPUT, sedangkan sisanya sebagai INPUT
- PORTx (misal pada port A maka penulisannya PORTA)
PORTx fungsinya sebagai inisialisasi awal atau pemberian nilai awal apakah si PORTA ini bernilai HIGH/1 atau LOW/0
Contoh
Jika dalam hexa (misal di port A)
PORTA=0x00
PORTA=0x00
-> artinya dari PA0 - PA7 bernilai 0/LOW
PORTA=0x0F
->Artinya keadaan HIGH pada PA0=1, PA1=1, PA2=1, PA3=1, dan keadaan LOW pada PA4=0, PA5=0, PA6=0, PA7=0
Jika dalam biner (misal di port A)
PORTA=0b00000000
->Artinya dari PA0 - PA7 bernilai 0/LOW
PORTA=0b00001111
->Artinya keadaan HIGH pada PA0=1, PA1=1, PA2=1, PA3=1, dan keadaan LOW pada PA4=0, PA5=0, PA6=0, PA7=0
Kesimpulan
DDRx --> INPUT atau OUTPUT
PORTx --> HIGH (1) atau LOW (0)
![]() |
Rangkaian dengan PORT A |
- Setelah membuat rangkaian menggunakan proteus, sekarang kita ke tahap selanjutnya yaitu program LED.
- Berikut adalah langkah-langkah untuk membuat project baru pada CV-AVR :
- Pada menu bar klik "New File", kemudian muncul sebagai berikut :
- Pilih "Project", Lalu klik "Yes" pada form berikutnya :
- Kemudian akan muncul Form berikut untuk memilih Tipe chip yang akan digunakan. Disini kita akan menggunakan tipe chip ATmega.
- Disini kita akan menggunakan chip atmega32 dengan crystal sebesar 32.000 Mhz
- Langkah selanjutnya adalah dengan mengatur Port I/O yang akan kita gunakan. Disini kita akan menggunakan PORT C sebagai input untuk meberikan masukan berupa push button untuk mengendalikan pergerakan LED dan output menggunakan PORT A.
![]() |
PORT C |
![]() |
PORT A |
- Kemudian langkah selanjutnya ialah dengan menyimpan program yang telah dibuatt dalam satu folder yang sama, dengan melakukan generate, save and exit. Kemudian simpan file tersebut dengan nama yang sama sebanyak 3 kali. Seperti langkah berikut ini :
- Setelah melakukan langkah-langkah tersebut maka pogram akan membuat file dan folder khusus secara otomatis.
- Lalu, cara mengcompile file pada ATMEGA adalah sebagai berikut :
![]() |
1 |
![]() |
2 |
![]() |
3 |
- Selanjutnya RUN rangkaian yang telah di masukan program dengan klik 'Play' dibagian kiri bawah pada software :
- Selanjutnya saya lampirkan script program yang telah saya buat :
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : BAgas1
Version :
Date : 4/4/2017
Author : mdfschmidt
Company : http://mechatronlabs.blogspot.co.id/
Comments:
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32.h>
#include <delay.h>
// Declare your global variables here
void main(void)
{
while (1)
{
// Place your code here
DDRA.0=0;
DDRA.1=0;
DDRA.2=0;
DDRC=0xFF;
if (PINA.0==1)
{
PORTA=0b00000001;
delay_ms(20);
PORTA=0b00000010;
delay_ms(20);
PORTA=0b00000100;
delay_ms(20);
PORTA=0b00001000;
delay_ms(20);
PORTA=0b00010000;
delay_ms(20);
}
else if (PINA.1==1)
{
PORTA=0b00010000;
delay_ms(20);
PORTA=0b00001000;
delay_ms(20);
PORTA=0b00000100;
delay_ms(20);
PORTA=0b00000010;
delay_ms(20);
PORTA=0b00000001;
delay_ms(20);
}
else if (PINA.2==1)
{
PORTA=0b00011000;
delay_ms(20);
PORTA=0b00100100;
delay_ms(20);
PORTA=0b01000010;
delay_ms(20);
PORTC=0b10000001;
delay_ms(20);
}
else if (PINA.0==0&&PINA.1==0&&PINA.2==0)
{
PORTC=0b00000000;
}
}
}
- Oke sekian dulu ya postingan hari ini, semoga bermanfaat.
Tidak ada komentar:
Posting Komentar