Pengetahuan Dasar pemrograman Display LCD 2×16 dan 4×20 dg C codevision untuk AVR



Tampak Depan Display LCD 2x16
Fungsi Display
Fungsi display dalam suatu aplikasi microcontroller sangat penting sekali . diantaranya untuk :
  • Memastikan data yg kita input valid
  • Mengetahui hasil suatu proses
  • Memonitoring  suatu proses
  • Mendebug program
  • Menampilkan pesan
  • dll
Display yang kita akan bahas pada kali ini adalah display LCD 2×16 , artinya LCD terdiri  dari 2 baris dan 16 karakter.  Jika anda sudah bisa menggunakan LCD 2×16 maka akan sangat mudah anda menggunakan type ukuran yang lain spt 2×8,2×20,4×20,4×40 .  Karena type2 yang saya sebutkan tadi cara pemrogramanya tidak jauh berbeda.
Memprogram  LCD 2×16 dengan bahasa C   Codevision. 
Buatlah project baru  codevision  dgn codewizard ,  pilih port yang akan dihubungkan dgn LCD =Port  C dan pilih banyaknya karakter dlm 1 baris  char =16  lalu klik ok.
Agar kita dapat menggunakan fungsi-fungsi  untuk   LCD  kita perlu header file lcd.h . Type LCD yang ditangani oleh lcd.h antara lain:  1×8, 2×12, 3×12, 1×16, 2×16, 2×20, 4×20, 2×24 dan 2×40.
Didalam program template   akan disertakan  secara otomatis baris berikut:
#include <lcd.h>
Selain itu ada tipe LCD lain yg disupport Codevision antara lain : 4×40  dengan header file:
#include <lcd4x40.h>

Contoh template yang dibuatkan oleh Codewizard
#include <mega8535.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

// Declare your global variables here

void main(void)
{

// LCD module initialization
lcd_init(16);

while (1)
      {
      // Place your code here

      };
}

Fungsi-fungsi untuk menampilkan LCD.
  • lcd_gotoxy(kolom,baris) fungsi untuk mensetting posisi karakter pertama.
contoh : lcd_gotoxy(0,0); artinya posisi awal di kolom 0, baris 0 (baris pertama) 
  •  lcd_putsf(string) //fungsi untuk menampilkan string
      contoh : lcd_putsf("Hallo");
  • void lcd_clear(void)   , fungsi untuk menghapus tampilan LCD.
 
Fungsi untuk menampilkan type data integer tdk tersedia , 
maka kita harus merubah data integer kedalam array type char
contoh :
char tampung[16]
int data_integer;
 data_integer = 1234

lcd_gotoxy(0,0);  //menampilkan data di kolom 0 baris ke-0
lcd_puts("data integernya=");

sprintf(tampung,"%i ",data_integer);  // simpan data integer ke array tampung[16]
lcd_gotoxy(0,1);         //menampilkan data di kolom 0 baris ke-2          
lcd_puts(tampung);      //menampilkan array tampung bertype char
Fungsi untuk LCD 4×20 :
bedanya hanya pada fungsi lcd_gotoxy(kolom,baris)
pada LCD 2×16   maximum (1,15)  artinya maksimum baris =2   dan kolom 16.
baris = 0 dan 1  , kolom 0 samapai 15.
pada LCD4x20 maximum (3,19)  artinya maximum baris ke 4 dan kolom 20
baris 0,1,2  3  dan kolom 0 sampai 19.
Contoh untuk  LCD 4×20:
lcd_gotoxy(3,17);  //menampilkan data di kolom 0 baris ke-0
lcd_puts("ok");
maka kata ok akan muncul dimulai pada baris ke-4 dan kolom ke 18.

LCD Display 4X20
Koneksi  LCD  2×16  atau  4 x20    dengan Microcontroller
Pin yang terdapat pada modul LCD 2×16 dan 4×20 sama persis jadi anda dapat mengikuti gambar dibawah ini:

Mengenal IDE AVR Studio 5 : C/C++ Compiler , Editor & Tool AVR

Dari Ebook-Ebook  ttg  AVR terbitan luar negri yang pernah  saya baca  kebanyakan mereka menggunakan AVR Studio. Tapi bagi pemula ga usah khawatir sebab baik Codevision maupun AVR studio  sama sama menggunakan bahasa pemrograman C .  silahkan Anda pilih yang mana saja yang menurut anda cocok. Buat para pemula yang penting anda lebih dahulu mengerti ttg konsep konsep dasar pemrograman microcontroller AVR.
Cara penginstallan AVR Studio 5  dgn cara  klik file tunggal hasil download :  as5installer-5.0.1163-full.exe  selanjutnya kita tinggal klik ok, yes, oke ,yes, next  dan finish :-).
Persyaratan Yang dibutuhkan:
AVR Studio berbasis  Microsoft .NET 4.0 technology .
  • Windows XP (x86)  Service Pack 3 – semua  edisi kecuali Starter Edition
  • Windows Vista (x86 & x64)  Service Pack 2 – semua edisi kecuali Starter Edition
  • Windows 7 (x86 & x64)
  • Windows Server 2003 (x86 & x64)  Service Pack 2
  • Windows Server 2003 R2 (x86 & x64)
  • Windows Server 2008 (x86 & x64)  Service Pack 2
  • Windows Server 2008 R2 (x64)
Hardware yg direkomendasikan:
  • 1.6GHz processor atau yg lebih cepat.
  • DirectX 9 capable video card  dgn resulusi 1024×768  (min 800×600 )
  • 1 GB (32 Bit) atau 2 GB (64 Bit) RAM  (tambahkan  512 MB jika berjalan di virtual machine)
  • 5400 RPM hard disk drive
  • 2 GB free hard disk space

IDE AVR Studio 5
Beberapa  Fitur AVR Studio 5:
  •  AVR Studio 5 mensupport  semua AVR microcontrollers  8 bit dan 32 bit.
  • Compiler C yang terintegrasi .  Anda tidak perlu lagi menginstall  tool2 secara terpisah spt versi sebelumnya . AVR Studio 5 sudah termasuk  compiler, assembler , simulator, debugger dan programmers.
  • Editor yang lebih mudah digunakan.
  • Atmel AVR  software framework , kumpulan kode yang siap pakai.
Tampilan menu utama
kereeen
Membuat Project Baru
Step 1
Project Baru
Step 2
step 2
Step 3
step3
Step 4
step 4


sumber:

Pengetahuan Dasar penggunaan Timer Counter Mikrokontroler AVR

Pin Timer /Counter pada AVR
Pin Timer / Counter Pada Atmega8535
Tujuan Pembahasan timer dan counter AVR :
1. Melaksanakan tugas tertentu secara ber ulang  (mode normal).
2. Menghitung panjang pulsa (input capture)
3. Menghitung banyaknya event ( sebagai counter).
4. Mengendalikan kecepatan motor DC (pulsa wide modulation /PWM).
5. Membuat penundaan waktu (delay).
6. Sinyal generator gelombang kotak.
Komponen utama Timer/Counter adalah sebuah register  yg tugasnya hanya berhitung dari 0 sampai batas maximumnya, register ini pada AVR disebut  register TCNT .  Misalnya  sebuah register TCNT    pada AVR adalah 8 bit,  maka nilai maksimunya adalah 255.
Register yang digunakan untuk mendukung operasi Timer Counter pada AVR :
  • Register TCNT = register pencacah dari 0 sampai nilai maximum yg kita tentukan.
  • Register TCCR =Untuk pengaturan mode  operasi  Timer/Counter
  • Register TIMSK =Untuk  memilih Timer Counter  mana yg aktif.
  • Register TIFR = Untuk mengetahui adanya interupsi akibat operasi Counter Timer .
  • Register OC (output compare) = untuk menyimpan nilai pembanding dgn nilai pd register  TCNT.
Jadi kalau kita ingin melakukan pengaturan (men set up )   Timer/Counter kita fokuskan ke register TCCRn .  n adalah no timer ,  misal  jika kita ingin menggunakan Timer 0 maka yg kita atur adalah TCCR0.
Kapan  dia  berfungsi sbg timer dan kapan dia berfungsi sbg counter?
konseptimer
Ketika sumber clock  dari   system clock  (kristal) maka ia  berfungsi sbg timer.
Ketika sumber clock dari external / pin T maka ia berlaku sebagai counter.
pemilihan sumber clock ada pada bit  CS pada register TCCR.
MODE TIMER O 
Untuk menentukan mode timer O di lakukan pd bit WGM-OO dan WGM-OI pada register control (TCCRO) seperti pada tabel dibawah ini.
modetimer0
1.  Mode Normal sebagai Timer
Memilih mode ini dgn cara menset semua bit  WGM OI =O dan WGMOO=O  , pada register TCCR
Digunakan  untuk melaksanakan pekerjaan yang berulang dgn interval tertentu juga bisa digunakan utuk membuat delay.  Nilai TCNT akan terus menerus mengalami kenaikan tiap di clock oleh simber clok yg sudah dipilih. Jika sudah mencapai maksimumnya nilai TCNT akan kembali 0  dan mengeset bit Flag TOV0 di register TIFR.  Waktu interval  dapat dirubah rubah dengan merubah nilai maximum TCNT.  Makin kecil nilai maximum TCNT makin kecil pula waktu intervalnya.  Contoh sebagai gambaran saja , jika periode clock yg di berikan ke timer 1 detik,  maka dgn nilai max TCNT diset 255 , interval timer  1 x255 = 255 detik. untuk nilai max  TCNT  di set 10 . Maka periode interval 1×10 = 10 detik.

Pada mode normal selain bisa diset sebagai timer    juga sebagai counter, dgn cara merubah sumber clocknya menggunakan triger di pin TO .  Pengantian sumber clock melalui set bit CSO2:CSOl:CSOO pada register TCCRO seprti tampak pd gambar dibawah ini(  untuk lebih jelasnya lihat  penjelasan no 3.  mode normal sbg  counter   )
modenormal
Cara seting pilihan sebagai Timer atau counter pada codewizard di codevision
setwizardtimer
pilihan scala clock CS02:CSo1:CSoo untuk xtal 11.059.200hz  pd codevision sudah berupa pilihan  frekwensi clock timer:
timer_systemclock_cavr
2.  Mode Input Capture .
Digunakan untuk meng hitung panjang pulsa yang mentriger pin ICP (PortD.6 pada atmega8535).  Setiap kali Pin ICP di triger akan TCNT akan ditambah 1. nilai TCNT akan direset pada triger berikutnya.  Sebelum direset nilai TCNT di simpan di register ICR.
Contoh code:
/*======================================================
Chip type           : ATmega8535
Compiler            : CodeVision
Clock frequency     : 4.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
Author              : pccontrol.wordpress.com 
*****************************************************/

#include <mega8535.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
unsigned char bufferperiodeL[15];
unsigned char bufferperiodeH[15]; 

// Timer 1 input capture interrupt service routine
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{

sprintf(bufferperiodeL,"%i ",ICR1L);
sprintf(bufferperiodeH,"%i ",ICR1H); 

lcd_gotoxy(0,1);
lcd_puts(bufferperiodeH);
lcd_gotoxy(4,1);
lcd_puts(bufferperiodeL);   

ICR1H=0;
ICR1L=0;
TCNT1L =0;
TCNT1H =0;
}

void main(void)
{

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Normal top=FFFFh

// Noise Canceler: Off
// Input Capture on Rising Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: On

TCCR1A=0x00;
TCCR1B=0x45;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x20;

// LCD module initialization
lcd_init(16);
    lcd_gotoxy(0,0);
      lcd_putsf("periode pulsa :");
// Global enable interrupts
#asm("sei")

while (1)
      {

      };
}
keterangan program :
setiap ada perubahan tegangan dari  o ke 1 di pin ICP /portD.6  maka akan memicu interupt input capture.  besaran panjang pulsa antara 2 rising edge ada di register ICR1H dan ICR1L .   misal hasil di ICR1 = 1250  maka  perioda pulsa = 1/clock timer * 1250 .  Clock timer  sudah kita pilih  3,906 khz.
(1/3906) * 1250 =   0,32   detik.
3.  Mode Normal sebagai Counter

Digunakan untuk menghitung jumlah event yang mentriger pin T0 (portB.0) jika kita menggunakan  timer0  atau T1 (portB.1) pada timer1.
/*===================================================
Chip type           : ATmega8535
Author              : Pccontrol.wordpress.com
Clock frequency     : 4.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
*****************************************************/

#include <mega8535.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

unsigned int hitunganMSB;
unsigned int hitunganLSB;
 unsigned char bufferCounter[15];
 unsigned long int hitungan;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
//hitungan lebih dari 255

hitunganMSB = hitunganMSB + 1;

}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Timer/Counter 0 initialization
// Clock source: T0 pin Falling Edge
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x06;
TCNT0=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("counter :");
// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here
      hitunganLSB = TCNT0;
      hitungan = hitunganMSB + hitunganLSB; 

      sprintf(bufferCounter,"%i ", hitungan );
   lcd_gotoxy(0,1);
   lcd_puts(bufferCounter);
      };
}
4. Mode PWM , Pulsa Wide Modulation.
Mode PWM ada dua yaitu PWM phase correct dan Fast PWM.  perbedananya yaitu pada PWM phase corect counter  (TCNT) bergulir/mencacah naik dan turun . sedangkan pada Fast PWM counter  (TCNT) hanya bergulir naik saja .
Untuk menjadikan Timer counter  mode PWM phase corect yaitu  dgn Cara men set bit WGM01=1 dan bit WGM0 =0  ,  pada register TCCR.
MODETIMER
Salah satu kegunaan sinyal PWM  antara lain untuk  mengendalikan Kecepatan putaran  Motor DC.   Gambar berikut ini menunjukan berbagai bentuk PWM dan efek terhadap kecepatan Motor DC yang berbeda sesuai bentuk pulsa PWM.
Pulsa Wide Modulation

Cara pembentukan sinyal Fast  PWM 
Nilai pada register Counter TCNT akan terus menerus naik sampai nilai maximum, lalu kembali ke 0. begitu seterusnya selama sinyal clock diberikan kepada timer. Nilai OCR diset untuk mengatur pembentukan PWM.
saat nilai TCNT  >  nilai OCR maka pin OC mengeluarkan sinyal HIGH ,
saat nilai TCNT < nilai OCR maka pin OC mengeluarkan sinyal LOW.
Gambar berikut menunjukan tiga buah nilai OCR yang berbeda ,yg  menghasilkan  sinyal output  PWM   berbeda pula pada pin OC.
mode PWM
Cara Membuat PWM pada CodeWizard  di Codevision spt pada gambar berikut:
membuat pwm 25% pada output OC0 dgn Timer0
code program:
#include <mega8535.h>

// Declare your global variables here

void main(void)
{

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x08;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 62.500 kHz
// Mode: Phase correct PWM top=FFh
// OC0 output: Non-Inverted PWM
TCCR0=0x63;
TCNT0=0x00;
OCR0=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

while (1)
      {
      // Place your code here

      };
}

PWM phase corect
PWM PHASE CORRECT
5. Membuat Delay dengan Timer.
#include <mega8535.h>

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
delay = delay + 1
}

void main(void)
{
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Normal top=FFh
TCCR0=0x05;
TCNT0=0xD9;
// Timer0 enable
TIMSK=0x01;
// Global enable interrupts
#asm("sei")

while (1)
      {
      //program utama disini
       delay(100);   //delay 1 detik   (100*10ms=1000ms)
      };
}

Void delay(int delay_ms)
{
   TCNT0=0xD9;  //interval  timer = 10 ms
   delay=0
   while(delay<=delay_ms)
   {
    //muter2 disini
    }
}

Timer Mode CTC (clear timer on compare match)

Pada mode ini counter TCNT akan bergulir/mencacah naikkemudian akan kembali 0 saat nilai  TCNT = OCR0. Untuk menghasilkan gelombang kotak pd pin OC kita set OC0 toggle yaitu dgn memberi nilai  COM1 =0 dan COM0 =1 di register TCCR.   

modectc
====================================================================
Kesimpulan cara Pengesetan register TCCR
timer_seting
referensi :

Dasar Pemrograman Input dan Output Mikrokontroler AVR dengan C Codevision

Menggunakan Port  Input dan Output Microcontroller

Beberapa contoh  input dan output
contoh Input dan Output  microcontroller
Input Output Port
Karakteristik  PORT  Microcontroller
  • Port  A,B,C,D Bisa di gunakan  sebagai input atau output
  • Tiap Port bisa sekaligus  dibaca /ditulis sebagai 8 pin   atau  1 pin saja.
  • Input output  menggunakan tegangan TTL,  5V untuk logika1   dana 0v = logika 0.
Pemrograman Port sebagai  Input (membaca port)
1. Set Port sebagai input  diregister   DDRx  (ganti x dgn A,B,C atu D sesuai port yg akan di setting)
Misal PORTC  (bit  PORTC.0 ~ PORTC.7 )  sebagai input
DDRC = 0000 0000b   ; ( atau bisa di tulis 0x0h )
2. Hasil membaca port ada di register  PINx
Membaca data Port :
Char data_input;        //  variable untuk menyimpan  data input
data_input  = PINC     ;     // baca port C
Pemrograman Port sebagai  output 
1. Set Port sebagai output  diregister   DDRx  (x=A,B,C,D)
Misal PORTA (bit  PORTA.0 ~ PORTA.7 ) sebagai input
DDRA =  1111 1111b   ; ( atau bisa di tulis 0xFFh )
2. Tulis data yg akan di  keluarkan di register PORTx
Menulis  data  ke  Port :
PORTA = 1111 1010b
Contoh inisialisasi Port di program
#include <mega8535.h>
void main(void)
{
// inisialisasi Port A sebagai output :
PORTA=0×00;
DDRA=0xFF;
// Inisialisasi  Port C sebagai input  :
PORTC=0×00;
DDRC=0×00;
while (1)
      {
      // tempatkan  code  yg akan kita buat disini
      };
}
Contoh program  - PortC sbg Input  dan
                                          – PortA sbg output
#include <mega8535.h>
Char  inputdata;
Char outputdata;
void main(void)
{
// inisialisasi Port A sebagai output :
PORTA=0×00;
DDRA=0xFF;
// Inisialisasi  Port C sebagai input  :
PORTC=0×00;
DDRC=0×00;
while (1)
      {
      // tempatkan  code  yg akan kita buat disini
          inputdata = PINC
          outputdata = inputdata + 1;
         PORTA =  outputdata;
      };
}
Pemrograman Input Output dengan codevision
1. Buka code vision
2. Buat Project baru
3. Pilih gunakan codewizard
Codewizard
Untuk memilih kaki kaki  PORTA sebagai input atau output ,  klik in atau out  spt tampak pada gambar diatas. Setelah itu klik file->Generate save and exit . setelah itu kita akan dibuatkan template program sbb:
#include <mega8535.h>

void main(void){// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
PORTA=0x00;
DDRA=0x0F;
// Port B initialization
PORTB=0x00;
DDRB=0x00;

// Port C initialization
PORTC=0x00;
DDRC=0x00;

// Port D initialization
PORTD=0x00;
DDRD=0x00;

while (1)
     {  
    // Place your code here

      };
}

Pemrograman Dasar Mikrokontroler AVR Dengan Bahasa C untuk Pemula

Untuk pemula yang  ingin segera membuat aplikasi dengan cara yang mudah dan praktis, bisa memilih microcontroller AVR  dan CodeVision sebagai tool membuat program nya.
Codevision sangat memanjakan kita dalam membuat program microcontroller. Dengan bantuan  fasilitas Code Wizard AVR  kita bisa sekejap dalam membuat program C untuk microcontroller  AVR.
Installasi CodeVision
Untuk membuat program bahasa C untuk microcontroller AVR dengan CodeVision langkah yang harus dilakukan:
1. Download CodeVision versi trial disini : http://www.hpinfotech.ro/html/download.htm
2. Install sampai selesai , lalu buka project baru   klik menu File->New    maka akan muncul menu ;
Pilih Project
Pilih Projek , lalu klik OK
3.  Kemudian  akan ada menu  pilihan apakah menggunakan Code Wizard atau tdk, pilih menggunakan CodeWizard .
Pilih Yes
Klik Yes , karena kita akan membuat program dengan bantuan CodeWizardAVR. Setelah itu akan muncul menu CodeWizardAVR   sebagai berikut:
CodeWizard mempermudah pemrograman
Cara Menggunakan CodeWizardAVR
1. Tab Chip  , berisi pilihan  
Pilihan Type AVR dan besar Clock xtal
  • Jenis microcontroller AVR    misalnya kita  pilih Atmega8535
  • Besar frekwensi clock , isi sesuai xtal yang kita pakai dlm rangkain .
2. Tab Port
Pilihan Port sebagai input atau output
 Untuk Mensetting  Port sebagai input atau output ,  kita cukup mengklik in atau out spt yg ditunjukan panah merah gb diatas. menu bersifat toggle , artinya jika kata  in diklik akan menjadi out . jika kata  out diklik akan berubah menjadi in.
(untuk saat ini kita akan memprogram Port saja . Tab-tab lainnya akan kita bahas pada artikel lainya)
Setelah selesai kita  klik menu  program-> generate,save and exit
Generate Save and exit
Jika Anda mengklik menu generate,save and exit , akan keluar menu menyimpan file-file dalam project  ini , berilah nama test ,  akan ada 3 x  permintaan menyimpan file dgn extensi berbeda. 
Setelah selesai akan muncul Template Program dalam bahasa C sbb;
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Evaluation
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date    : 6/16/2011
Author  : Freeware, for evaluation and non-commercial use only
Company :
Comments:
Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/
#include <mega8535.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTA=0×00;
DDRA=0xF0;
while (1)
{
// Place your code here
}
}
Mudah bukan …?
untuk selanjutnya  anda tinggal menambahkan program yang dibutuhkan misal kita akan tambahkan kode program membaca switch yg terhubung ke PortA.0 dan menyalakan Led yg terhubung ke PortA.7.
Maka  template program  kita tambahkan sbb :
#include <mega8535.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
PORTA=0×00;
DDRA=0xF0;
while (1)
{
// Place your code here
if (portA.0 ==1)          // jika switch di  portA.)  ditekan
{
PortA.7 = 1;             // portA.7 diberi 1 (5v)  untuk menyalakan led (misalnya )
}
}
}