Yuph, Bermain mikrokontroler memang sangat menyenangkan. Memprogram mikrokontroler tidak sesulit yang dibayangkan. Banyak jalan menuju roma, banyak jalan juga cara memprogram mikrokontroler. Diantaranya ada yang menggunakan bahasa Asambly (sussaahh,,,,), bahasa C (lebih mudah), serta bahasa basic (mudah bangett.. ^^). Bahasa Basic ini yang paling mudah karena istilahnya sangat manusiawi. Bahasa C setingkat lebih sulit dabandingkan dengan bahasa basic, dan terakhir, Asambly merupakan bahasa pemrogrman yang kurang manusiawi. Hehehe..
Oke, yUkz kita belajar memporgram mikrokontroler menggunakan bahasa C.Oya, omAyib ingin berbagi informasi seputar bisnis online, silakan mampir ke halaman ini.
Ada banyak program untuk menuliskan bahasa C ini, diantaranya CodevisionAVR. Kenapa penulis menggunakan CodevisionAVR, karena penulis merasa lebih mudah digunakan terutama untuk pemula.
Silakan menginstal Codevision terlebih dahulu, atau unduh disini bagi yang belum punya. Setelah instalasi selesai, jalankan program CodevisionAVR.
- Menjalankan CodevisionAVR
- Pilih file – new, kemudian muncul box dialog, pilih project.
Gambar 3
- Kita diberi pilihan, apakah menggunakan wizard atau tidak. Jika iya, pilih yes.
- Akan mucul box dialog lagi, silakan pilih chip yang akan digunakan. Misalnya ATmega8535.
- Buka tab Ports. Pada bagian ini, kita diberi kesempatan untuk mengatur ports-ports yang akan digunakan. Pilih PortC sebagai output.
- Jika sudah, klik file-generate,save and Exit
- Proses menyimpan file dilakukan sebanyak 3 kali, masing-masing menghasilkan ekstensi *.C , *.prj, dan *.cwp. Simpan dengan nama file ledblink.
- Setelah proses meyimpan file selesai, mucul seperti dibawah ini. Disinilah kita akan menuliskan program.
- OKs, berikut listing program yang kita buat, boleh dimodifikasi.
001 | /***************************************************** This program was produced by the |
002 | CodeWizardAVR V2.04.4a Evaluation |
003 | Automatic Program Generator |
004 | © Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l. |
005 | Project : |
006 | Version : |
007 | Date : 20/12/2009 |
008 | Author : Freeware, for evaluation and non-commercial use only |
009 | Company : |
010 | Comments: |
011 | Chip type : ATmega8535 |
012 | Program type : Application |
013 | AVR Core Clock frequency: 8,000000 MHz |
014 | Memory model : Small |
015 | External RAM size : 0 |
016 | Data Stack size : 128 |
017 | *****************************************************/ |
018 | #include <mega8535.h> |
019 | #include<delay.h> |
020 | // Declare your global variables here |
021 | void main(void) |
022 | { |
023 | // Declare your local variables here |
024 | // Input/Output Ports initialization |
025 | // Port A initialization |
026 | // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In |
027 | // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T |
028 | PORTA=0x00; |
029 | DDRA=0x00; |
030 | // Port B initialization |
031 | // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In |
032 | // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T |
033 | PORTB=0x00; |
034 | DDRB=0x00; |
035 | // Port C initialization |
036 | // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In |
037 | // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T |
038 | PORTC=0x00; |
039 | DDRC=0x00; |
040 | // Port D initialization |
041 | // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out |
042 | // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 |
043 | PORTD=0x00; |
044 | DDRD=0xFF; |
045 | // Timer/Counter 0 initialization |
046 | // Clock source: System Clock |
047 | // Clock value: Timer 0 Stopped |
048 | // Mode: Normal top=FFh |
049 | // OC0 output: Disconnected |
050 | TCCR0=0x00; |
051 | TCNT0=0x00; |
052 | OCR0=0x00; |
053 | // Timer/Counter 1 initialization |
054 | // Clock source: System Clock |
055 | // Clock value: Timer1 Stopped |
056 | // Mode: Normal top=FFFFh |
057 | // OC1A output: Discon. |
058 | // OC1B output: Discon. |
059 | // Noise Canceler: Off |
060 | // Input Capture on Falling Edge |
061 | // Timer1 Overflow Interrupt: Off |
062 | // Input Capture Interrupt: Off |
063 | // Compare A Match Interrupt: Off |
064 | // Compare B Match Interrupt: Off |
065 | TCCR1A=0x00; |
066 | TCCR1B=0x00; |
067 | TCNT1H=0x00; |
068 | TCNT1L=0x00; |
069 | ICR1H=0x00; |
070 | ICR1L=0x00; |
071 | OCR1AH=0x00; |
072 | OCR1AL=0x00; |
073 | OCR1BH=0x00; |
074 | OCR1BL=0x00; |
075 | // Timer/Counter 2 initialization |
076 | // Clock source: System Clock |
077 | // Clock value: Timer2 Stopped |
078 | // Mode: Normal top=FFh |
079 | // OC2 output: Disconnected |
080 | ASSR=0x00; |
081 | TCCR2=0x00; |
082 | TCNT2=0x00; |
083 | OCR2=0x00; |
084 | // External Interrupt(s) initialization |
085 | // INT0: Off |
086 | // INT1: Off |
087 | // INT2: Off |
088 | MCUCR=0x00; |
089 | MCUCSR=0x00; |
090 | // Timer(s)/Counter(s) Interrupt(s) initialization |
091 | TIMSK=0x00; |
092 | // Analog Comparator initialization |
093 | // Analog Comparator: Off |
094 | // Analog Comparator Input Capture by Timer/Counter 1: Off |
095 | ACSR=0x80; |
096 | SFIOR=0x00; |
097 | while (1) |
098 | { |
099 | PORTD=0xFF; |
100 | delay_ms(1000); |
101 | PORTD=0x00; |
102 | delay_ms(1000); |
103 | }; |
104 | } |
- Selesai menuliskan program, selanjutnya kita meng compile untuk menghasilkan extensi *.hex
- BIla kita mengcompile, ditempat menyimpan file akan ditemukan banyak file. Yang kita butuhkan untuk diload ke mikrokontroler adalah file berekstensi *.hex . file ini dapat ditemukan didalam folder exe.
Demikian tutorial singkat belajar menggunakan CodevisionAVR. Apabila terdapat kesalahan maupun kurnag jelas, silakan mengirim pesan ke alul_sip@yahoo.com. Semoga bermanfaatn dan Selamat Belajar!