<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6915655194506864398</id><updated>2012-02-10T00:59:42.817+07:00</updated><category term='BASCOM AVR'/><category term='Project'/><category term='Microcontroller Basic'/><title type='text'>AVRku</title><subtitle type='html'>all about controller..</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.avrku.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.avrku.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-2282951901124002019</id><published>2011-06-02T09:44:00.001+07:00</published><updated>2011-06-07T05:47:07.145+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BASCOM AVR'/><title type='text'>Bascom AVR, Mega16,Wavecom Fastrack M1206B, SMS</title><content type='html'>&lt;p&gt;Aplikasi yang akan kita buat ini berfungsi untuk meng ON-OFF kan pin ouput microcontroller melalui SMS.&lt;/p&gt;  &lt;p&gt;Pin-pin output yang kita gunakan adalah PORTC yang sudah terhubung ke LED. Untuk men ON-OFF kan ouput, format sms yang harus dikirm &lt;strong&gt;#CMD&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;Isi CMD merupakan data biner 4bit, misal: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;#1111&lt;/strong&gt; (PORTC.0--PORTC.3 ON semua) &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;#0001&lt;/strong&gt; (hanya PORTC.0 yang ON) &lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;strong&gt;#0111&lt;/strong&gt;(hanya PORTC.3 yang OFF) dst. &lt;/li&gt; &lt;/ul&gt; &lt;span class="fullpost"&gt;   &lt;p&gt;Untuk input kita gunakan tombol yang terhubung ke PIND.2, saat tombol di tekan microcontroller akan mengirim SMS “&lt;strong&gt;PIND.2= ON&lt;/strong&gt;”.&lt;/p&gt;    &lt;p&gt;Dalam aplikasi kita akan menggunakan LCD, RS232 dan interrupt jadi sebelum mencoba artikel ini simak dahulu artikel tentang &lt;a href="http://www.avrku.com/2011/05/basom-avr-mega16-lcd-162.html" target="_blank"&gt;LCD&lt;/a&gt; dan &lt;a href="http://www.avrku.com/2011/05/bascom-avr-rs232.html" target="_blank"&gt;RS232&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Code yang digunakan:&lt;/p&gt;        &lt;hr /&gt;    &lt;pre class="csharpcode"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;
$crystal = 11059200
$baud = 9600
$&lt;span class="kwrd"&gt;lib&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;lcd4busy.lbx&amp;quot;&lt;/span&gt;


&lt;span class="rem"&gt;'***********inisialiasi PORT I/O*********&lt;/span&gt;

Led &lt;span class="kwrd"&gt;Alias&lt;/span&gt; Portc.7
Config Portc = Output

Portd.2 = 1
Config Pind.2 = Input
Config Int0 = Falling
Config Debounce = 100

&lt;span class="rem"&gt;'***********inisialiasai variabel2 dan subroutine untuk lcd*********&lt;/span&gt;

&lt;span class="rem"&gt;'karakter logo AVRku.com - IndoLab.net&lt;/span&gt;
Deflcdchar 6 , 30 , 6 , 10 , 16 , 7 , 3 , 5 , 8
&lt;span class="rem"&gt;'karakater u loading&lt;/span&gt;
Deflcdchar 0 , 32 , 32 , 32 , 31 , 31 , 31 , 32 , 32        &lt;span class="rem"&gt;'       '&lt;/span&gt;

Config Lcd = 16 * 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdport = Portb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdddr = Ddrb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdin = Pinb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_e = 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rw = 1
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rs = 0
Cursor Off


&lt;span class="kwrd"&gt;Declare&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Loading


&lt;span class="rem"&gt;'***********variabel2 untuk sms*********&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; No_hp &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; * 15
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Data_masuk &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; * 100
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Cmti_pos &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Cmgr_pos &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Index_pos &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Cmd_pos &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;       &lt;span class="rem"&gt;'position of CMTI, CMGR, SMS index, Command&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Pjg_sms_index &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Pjg_data &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Sms_index &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; * 3
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Cmd &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; * 4
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Cmdbin &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;



&lt;span class="rem"&gt;'***********main program*********&lt;/span&gt;
No_hp = &lt;span class="str"&gt;&amp;quot;+6285646690454&amp;quot;&lt;/span&gt;
&lt;span class="rem"&gt;'No_hp = Quote(no_hp)&lt;/span&gt;
Portc = &amp;amp;HFF
&lt;span class="kwrd"&gt;Call&lt;/span&gt; Loading
Print &lt;span class="str"&gt;&amp;quot;Connection OK&amp;quot;&lt;/span&gt;
Enable Interrupts
Enable Int0
&lt;span class="kwrd"&gt;On&lt;/span&gt; Int0 Kirim_sms
&lt;span class="kwrd"&gt;Do&lt;/span&gt;


   Input Data_masuk
   Toggle Led

   Pjg_data = Len(data_masuk)

   &lt;span class="rem"&gt;'periksa apakah ada data CMTI?&lt;/span&gt;
   Cmti_pos = Instr(data_masuk , &lt;span class="str"&gt;&amp;quot;CMTI&amp;quot;&lt;/span&gt;)
   &lt;span class="kwrd"&gt;If&lt;/span&gt; Cmti_pos &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;
      Index_pos = Instr(data_masuk , &lt;span class="str"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;)                   &lt;span class="rem"&gt;' posisi index sms yg baru masuk berada setelah koma &amp;quot;,&amp;quot;&lt;/span&gt;
      Incr Index_pos
      Pjg_sms_index = Pjg_data - Index_pos
      Incr Pjg_sms_index

      Sms_index = Mid(data_masuk , Index_pos , Pjg_sms_index)

      Cls
      Lcd Data_masuk
      Lowerline
      Lcd Cmti_pos ; &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; ; Pjg_data ; &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; ; Index_pos ; &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; ; Pjg_sms_index ; &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; ; Sms_index
      Print &lt;span class="str"&gt;&amp;quot;AT+CMGR=&amp;quot;&lt;/span&gt; ; Sms_index ; Chr(13) ; Chr(10)

   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;


   &lt;span class="rem"&gt;'periksa apakah ada karakter #&lt;/span&gt;

   Cmd_pos = Instr(data_masuk , &lt;span class="str"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;)
   &lt;span class="kwrd"&gt;If&lt;/span&gt; Cmd_pos &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;
      Incr Cmd_pos
      Cmd = Mid(data_masuk , Cmd_pos , 4)
      Cmdbin = Binval(cmd)
      Portc = &lt;span class="kwrd"&gt;Not&lt;/span&gt; Cmdbin

      Cls
      Lcd &lt;span class="str"&gt;&amp;quot;Command Executed&amp;quot;&lt;/span&gt;
      Lowerline
      Lcd &lt;span class="str"&gt;&amp;quot;Cmd= &amp;quot;&lt;/span&gt; ; Cmd
      Print &lt;span class="str"&gt;&amp;quot;AT+CMGD=&amp;quot;&lt;/span&gt; ; Sms_index ; Chr(13) ; Chr(10)
   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;



&lt;span class="kwrd"&gt;Loop&lt;/span&gt;


&lt;span class="rem"&gt;'***********subroutine*********&lt;/span&gt;
&lt;span class="kwrd"&gt;Sub&lt;/span&gt; Loading
   Local Geser &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Ulang &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;

   &lt;span class="kwrd"&gt;For&lt;/span&gt; Ulang = 1 &lt;span class="kwrd"&gt;To&lt;/span&gt; 2
      Cls
      Lcd Chr(6)
      Lcd Chr(32)
      Lcd &lt;span class="str"&gt;&amp;quot;AVRku-IndoLab&amp;quot;&lt;/span&gt;
      Lcd Chr(6)
      Locate 2 , 1
      Lcd &lt;span class="str"&gt;&amp;quot;loading&amp;quot;&lt;/span&gt;
      &lt;span class="kwrd"&gt;For&lt;/span&gt; Geser = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 5
         Lcd Chr(0)
         Waitms 200
      &lt;span class="kwrd"&gt;Next&lt;/span&gt; Geser
   &lt;span class="kwrd"&gt;Next&lt;/span&gt; Ulang

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;


Kirim_sms:
   Print &lt;span class="str"&gt;&amp;quot;AT+CMGS=&amp;quot;&lt;/span&gt; ; Chr(34) ; No_hp ; Chr(34) ; Chr(44) ; Chr(13) ; Chr(10)
   Print &lt;span class="str"&gt;&amp;quot;PIND.2= ON&amp;quot;&lt;/span&gt; ; Chr(26)
   Cls
   Lcd &lt;span class="str"&gt;&amp;quot;Kirim SMS ke:&amp;quot;&lt;/span&gt;
   Lowerline
   Lcd No_hp
   Waitms 200
   Gifr = 64
&lt;span class="kwrd"&gt;Return&lt;/span&gt;
End&lt;/pre&gt;
  &lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  

  

  &lt;hr /&gt;

  

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;VIDEO saat program udah jalan bisa di lihat &lt;/font&gt;&lt;a href="http://www.youtube.com/watch?v=WRJ0GpDhbCU" target="_blank"&gt;&lt;font style="background-color: #ffff00"&gt;di&amp;#160; sini&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;hr /&gt;

  &lt;p&gt;PEMBAHASAN CODE PROGRAM:&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;
$crystal = 11059200
$baud = 9600
$&lt;span class="kwrd"&gt;lib&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;lcd4busy.lbx&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;Inisialisasi library yang digunakan (m16def.dat dan lcd4busy.lbx)&lt;/p&gt;

  &lt;p&gt;setting crystal dan baud rate (xtal=11,059200MHz dan baud=9600bps) &lt;/p&gt;

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'***********inisialiasi PORT I/O*********&lt;/span&gt;

Led &lt;span class="kwrd"&gt;Alias&lt;/span&gt; Portc.7
Config Portc = Output

Portd.2 = 1
Config Pind.2 = Input
Config Int0 = Falling
Config Debounce = 100&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;PORTC.7 diberi nama Led (nama pengganti agar mudah diingat). Pin ini digunakan sebagai indikator data yang masuk lewat RS232, setiap ada data yang masuk maka PORTC.7 akan di on-off.&lt;/p&gt;

  &lt;p&gt;PORTC d setting sebagai output. Selain PORTC.7 kita juga akan menggunakan PORTC.0, PORTC.1, PORTC.2 dan PORTC.3&lt;/p&gt;

  &lt;p&gt;PIND.2 digunakan sebagai input, pin ini merupakan pin INTERRUPT EXTERNAL 0 jadi sekalian kita akan belajar cara memakai interrupt di BASCOM AVR.&lt;/p&gt;

  &lt;p&gt;nilai Debounce merupakan nilai delay untuk mengantisipasi bouncing saat tombol yang terhubung ke PIND.2 ditekan. &lt;/p&gt;

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'***********inisialiasai variabel2 dan subroutine untuk lcd*********&lt;/span&gt;

&lt;span class="rem"&gt;'karakter logo AVRku.com - IndoLab.net&lt;/span&gt;
Deflcdchar 6 , 30 , 6 , 10 , 16 , 7 , 3 , 5 , 8
&lt;span class="rem"&gt;'karakater u loading&lt;/span&gt;
Deflcdchar 0 , 32 , 32 , 32 , 31 , 31 , 31 , 32 , 32        &lt;span class="rem"&gt;'       '&lt;/span&gt;

Config Lcd = 16 * 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdport = Portb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdddr = Ddrb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdin = Pinb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_e = 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rw = 1
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rs = 0
Cursor Off


&lt;span class="kwrd"&gt;Declare&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Loading&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;setting untuk LCD dan men”daftar”kan sub routine “Loading” agar dikenali oleh Bascom AVR.&lt;/p&gt;

  

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'***********variabel2 untuk sms*********&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; No_hp &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; * 15
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Data_masuk &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; * 100
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Cmti_pos &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Cmgr_pos &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Index_pos &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Cmd_pos &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;       &lt;span class="rem"&gt;'position of CMTI, CMGR, SMS index, Command&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Pjg_sms_index &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Pjg_data &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Sms_index &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; * 3
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Cmd &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; * 4
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Cmdbin &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;Inisialisasi variabel2 yang akan digunakan untuk sms.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;No_hp&lt;/strong&gt; = menyimpan no hp tujuan.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Data_masuk&lt;/strong&gt; = data yang masuk ke serial dimasukkan ke variable ini&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Cmti_pos&lt;/strong&gt; =&amp;#160; menyimpan nilai saat proses mencari karakter “CMTI” di data_masuk. Saat ada sms baru, maka modem akan mengirim karakter “+CMTI” ke microcontroller.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Cmgr_pos&lt;/strong&gt; = menyimpan nilai saat proses mencari karakter “CMTI” di data_masuk.&amp;#160; “+CMGR” akan&amp;#160; muncul begitu kita membaca sms.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Sms_index&lt;/strong&gt; =&amp;#160; menyimpan nilai saat proses mencari posisi sms. Begitu sms diterima, maka sms tersebut oleh modem akan di simpan dengan nomer urut tertentu.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Index_pos&lt;/strong&gt; =&amp;#160; menyimpan nilai saat proses mencari karakter “,” (koma).&amp;#160; Karakter koma berada sebelum sms_index, jadi kita harus cari dulu karakter koma setelah “CMTI” untuk menemukan sms_index.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Cmd_pos&lt;/strong&gt;= menyimpan nilai saat proses mencari karakter “#” (pagar). Karakter pagar berada sebelum command (command ini untuk menggerakkan OUTPUT), jadi kita harus cari dulu karakter pagar saat membaca isi sms untuk menemukan command.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Cmd&lt;/strong&gt; =&amp;#160; menampung command yang masuk&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Cmdbin&lt;/strong&gt; = menampung data biner hasil konversi dari Cmd. Data yang akan di keluarkan ke PORTC (output) harus dalam bentuk biner &lt;/p&gt;

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;No_hp = &lt;span class="str"&gt;&amp;quot;+6285646690454&amp;quot;&lt;/span&gt;  &lt;/pre&gt;
  &lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;Nomer HP yang dituju,/ nomer HP user. Ganti sesuaikan dengan nomer HP yang anda gunakan.&lt;/p&gt;

  

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Call&lt;/span&gt; Loading&lt;/pre&gt;

  &lt;p&gt;Memanggil subroutine &lt;strong&gt;Loading.&lt;/strong&gt;&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Sub&lt;/span&gt; Loading
   Local Geser &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Ulang &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;

   &lt;span class="kwrd"&gt;For&lt;/span&gt; Ulang = 1 &lt;span class="kwrd"&gt;To&lt;/span&gt; 2
      Cls
      Lcd Chr(6)
      Lcd Chr(32)
      Lcd &lt;span class="str"&gt;&amp;quot;AVRku-IndoLab&amp;quot;&lt;/span&gt;
      Lcd Chr(6)
      Locate 2 , 1
      Lcd &lt;span class="str"&gt;&amp;quot;loading&amp;quot;&lt;/span&gt;
      &lt;span class="kwrd"&gt;For&lt;/span&gt; Geser = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 5
         Lcd Chr(0)
         Waitms 200
      &lt;span class="kwrd"&gt;Next&lt;/span&gt; Geser
   &lt;span class="kwrd"&gt;Next&lt;/span&gt; Ulang

&lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;&lt;/pre&gt;

  &lt;p&gt;Proses pada subroutine &lt;strong&gt;Loading&lt;/strong&gt; hanya berupa animasi karakater pada LCD saat awal microcontroller dijalankan, just 4 fun &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-hotsmile" alt="Hot smile" src="http://lh5.ggpht.com/-7QUOkWODoYo/Teb49OOOP9I/AAAAAAAAAeQ/6Q2gXoC6mfQ/wlEmoticon-hotsmile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;

  

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;Enable Interrupts
Enable Int0
&lt;span class="kwrd"&gt;On&lt;/span&gt; Int0 Kirim_sms&lt;/pre&gt;

  &lt;p&gt;Mengaktifkan Interrupt. Saat terjadi Interrupt External 0 / Int0 / tombol PIND.2 ditekan, program akan menuju label Kirim sms :&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;Kirim_sms:
   Print &lt;span class="str"&gt;&amp;quot;AT+CMGS=&amp;quot;&lt;/span&gt; ; Chr(34) ; No_hp ; Chr(34) ; Chr(44) ; Chr(13) ; Chr(10)
   Print &lt;span class="str"&gt;&amp;quot;PIND.2= ON&amp;quot;&lt;/span&gt; ; Chr(26)
   Cls
   Lcd &lt;span class="str"&gt;&amp;quot;Kirim SMS ke:&amp;quot;&lt;/span&gt;
   Lowerline
   Lcd No_hp
   Waitms 200
   Gifr = 64
Return&lt;/pre&gt;

  &lt;p&gt;Dari code diatas bisa dilihat bahwa micro akan mengirim sms nomer hp user.&lt;/p&gt;

  &lt;p&gt;“Gifr=64” menset nilai bit ke enam pada register GIFR, bit ke enam pada GIFR untuk flag untuk INT0. Nilai ini perlu di set saat interrupt terjadi mencegah pemanggilan ulang interrupt ketika terjadi bouncing penekanan tombol.&amp;#160; Untuk latihan coba hilangkan baris code ini, lalu lihat apa yang terjadi saat tombol ditekan? &lt;/p&gt;

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;Input Data_masuk
Toggle Led&lt;/pre&gt;

  &lt;p&gt;Data yang masuk&amp;#160; ditampung pada variabel Data_masuk. Setiap ada data yang masuk, maka led (PORTC.7) di ON-Off &lt;/p&gt;

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;Pjg_data = Len(data_masuk) &lt;/pre&gt;

  &lt;p&gt;Perintah Len untuk mengetahui jumlah data yang masuk (panjang data) &lt;/p&gt;

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'periksa apakah ada data CMTI?&lt;/span&gt;
 Cmti_pos = Instr(data_masuk , &lt;span class="str"&gt;&amp;quot;CMTI&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;p&gt;Instr digunakan untuk mengetahui posisi&amp;#160; string pada sebuah data. Pada contoh ini string yang kita cari adalah CMTI.&amp;#160; &lt;/p&gt;

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;If&lt;/span&gt; Cmti_pos &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;
      Index_pos = Instr(data_masuk , &lt;span class="str"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;)                   &lt;span class="rem"&gt;' posisi index sms yg baru masuk berada setelah koma &amp;quot;,&amp;quot;&lt;/span&gt;
      Incr Index_pos
      Pjg_sms_index = Pjg_data - Index_pos
      Incr Pjg_sms_index

      Sms_index = Mid(data_masuk , Index_pos , Pjg_sms_index)

      Cls
      Lcd Data_masuk
      Lowerline
      Lcd Cmti_pos ; &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; ; Pjg_data ; &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; ; Index_pos ; &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; ; Pjg_sms_index ; &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; ; Sms_index
      Print &lt;span class="str"&gt;&amp;quot;AT+CMGR=&amp;quot;&lt;/span&gt; ; Sms_index ; Chr(13) ; Chr(10)

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;
  &lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;Saat &lt;strong&gt;Cmti_pos&lt;/strong&gt; tidak sama dengan 0 berarti dalam variabel &lt;strong&gt;Data_masuk&lt;/strong&gt; sudah ditemukan string &lt;strong&gt;CMTI&lt;/strong&gt; yang menandakan ada sms baru. 

  &lt;p&gt;Proses yang dilakukan pada code diatas yaitu mencari karakter &lt;strong&gt;koma&lt;/strong&gt; untuk mengetahui posisi index. &lt;/p&gt;

  &lt;p&gt;Selanjutnya mencari tahu berapa digit panjang index nya, apakah 2 digit atau hanya 1 digit. Perlu di ketahui m1206b bisa menyimpan sms dari index 1 – 20. Logika yang dipakai untuk mencari panjang digit ini dengan menggunakan perintah: Pjg_sms_index = &lt;font face="Consolas"&gt;Pjg_data – Index_pos&lt;/font&gt; &lt;/p&gt;

  &lt;p&gt;Setelah posisi&amp;#160; dan panjang&amp;#160; didapat, sekarang waktunya memisahkan index dari variable &lt;strong&gt;Data_masuk&lt;/strong&gt;&amp;#160; kemudian ditampung ke&amp;#160; variabel &lt;strong&gt;Sms_index&lt;/strong&gt; menggunakan perintah: &lt;font face="Consolas"&gt;Sms_index = Mid(Data_masuk, Index_pos, Pjg_sms_index)&lt;/font&gt; &lt;/p&gt;

  &lt;p&gt;Data2&amp;#160; variabel yang sudah didapat akan ditampilkan di LCD. &lt;/p&gt;

  &lt;hr /&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'periksa apakah ada karakter #&lt;/span&gt;

   Cmd_pos = Instr(data_masuk , &lt;span class="str"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;)
   &lt;span class="kwrd"&gt;If&lt;/span&gt; Cmd_pos &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;
      Incr Cmd_pos
      Cmd = Mid(data_masuk , Cmd_pos , 4)
      Cmdbin = Binval(cmd)
      Portc = &lt;span class="kwrd"&gt;Not&lt;/span&gt; Cmdbin

      Cls
      Lcd &lt;span class="str"&gt;&amp;quot;Command Executed&amp;quot;&lt;/span&gt;
      Lowerline
      Lcd &lt;span class="str"&gt;&amp;quot;Cmd= &amp;quot;&lt;/span&gt; ; Cmd
      Print &lt;span class="str"&gt;&amp;quot;AT+CMGD=&amp;quot;&lt;/span&gt; ; Sms_index ; Chr(13) ; Chr(10)
   &lt;span class="kwrd"&gt;End&lt;/span&gt; If&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;Mencari karakter &lt;strong&gt;# (pagar)&lt;/strong&gt; yang menandakan &lt;strong&gt;command&lt;/strong&gt; untuk menggerakkan output. &lt;/p&gt;

  &lt;p&gt;Proses yang terjadi pada code di atas adalah mengambil 4 data setelah karakter &lt;strong&gt;pagar&lt;/strong&gt;. 4 data ini adalah &lt;strong&gt;command&lt;/strong&gt;. 4 data yang masih bertipe string ini lalu dikonversi ke tipe biner dengan perintah &lt;strong&gt;&lt;font face="Consolas"&gt;Binval&lt;/font&gt;&lt;/strong&gt;.&lt;/p&gt;

  &lt;p&gt;Data command yang sudah bertipe biner lalu dikeluarkan ke PORTC (tapi di &lt;strong&gt;NOT&lt;/strong&gt; kan dulu karena LED-LED yang terhubung ke output bersifat &lt;strong&gt;active-low&lt;/strong&gt;) &lt;/p&gt;

  &lt;hr /&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;Sebelum microcontroller dan modem dihubungkan, setting modem Wavecom Fastrack m1206b harus di sesuaikan:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;Baudrate. Baudrate default wavecom fastrack m1206b adalah 115200bps sedangkan dalam program d atas memakai baudrate 9600bps. Untuk merubah setting modem kita gunakan terminal ( bisa pake terminal emulator, hyperterminal, tera term dll). Buka terminal dengan baudrate 115200 bps. Ketik: AT lalu enter. jika modem sudah terkoneksi dengan benar maka akan ada reply: OK.&amp;#160; ketik &lt;strong&gt;AT+IPR=9600&lt;/strong&gt;&amp;#160; lalu enter. Tutup terminal. Buka lagi tapi dengan baudrate 9600bps. Ketik: AT lalu enter, jika ada reply: OK berarti pengubahan baudrate berhasil. &lt;/li&gt;

    &lt;li&gt;Echo Off, ketik &lt;strong&gt;ATE0&lt;/strong&gt; lalu enter. &lt;/li&gt;

    &lt;li&gt;Untuk menyimpan perubahan konfigurasi ketik&lt;strong&gt; AT&amp;amp;W&lt;/strong&gt; lalu&amp;#160; enter.&lt;/li&gt;

    &lt;li&gt;Koneksi m1206b ke PC dengan koneksi m1206b ke mikrokontroller ada sedikit perbedaan, perhatikan gambar berikut: &lt;/li&gt;
  &lt;/ol&gt;

  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-Xajve2bs8jI/Te1YylLFaHI/AAAAAAAAAeU/U9_vYwcAkDs/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-WLhHx2vT10U/Te1Y56_60mI/AAAAAAAAAeY/MHDsdHgRtQk/image_thumb%25255B1%25255D.png?imgmax=800" width="644" height="415" /&gt;&lt;/a&gt;&lt;/p&gt;

  

  &lt;hr /&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;Peralatan yang digunakan untuk&amp;#160; aplikasi ini:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;&lt;a href="http://indolab.net/index.php/products/product/view/3/5" target="_blank"&gt;Smart AVR 16 System&lt;/a&gt; &lt;/li&gt;

    &lt;li&gt;&lt;a href="http://indolab.net/index.php/products/product/view/7/15" target="_blank"&gt;Wavecom Fastrack M1206B&lt;/a&gt; &lt;/li&gt;

    &lt;li&gt;&lt;a href="http://indolab.net/index.php/products/product/view/6/7" target="_blank"&gt;Smart LCD Display&lt;/a&gt; &lt;/li&gt;

    &lt;li&gt;USB downloader &lt;/li&gt;
  &lt;/ol&gt;
&lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-2282951901124002019?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/2282951901124002019/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=2282951901124002019&amp;isPopup=true' title='9 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/2282951901124002019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/2282951901124002019'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2011/06/bascom-avr-mega16wavecom-fastrack.html' title='Bascom AVR, Mega16,Wavecom Fastrack M1206B, SMS'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-7QUOkWODoYo/Teb49OOOP9I/AAAAAAAAAeQ/6Q2gXoC6mfQ/s72-c/wlEmoticon-hotsmile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-5784641744181763133</id><published>2011-05-25T22:02:00.001+07:00</published><updated>2011-05-25T22:02:22.149+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BASCOM AVR'/><title type='text'>Bascom AVR, RS232</title><content type='html'>&lt;p&gt;YOwww kali ini kita akan bermain komunikasi RS232 antara microcontroller dengan PC, bikin si MCU (microcontroller) biar bisa “ngobrol” ama si PC.&lt;/p&gt;  &lt;p&gt;Pertama kita harus tahu kalau MCU level tegangannya TTL 5volt, agar mcu bisa “ngobrol” ama PC, kita menggunakan converter tegangan TTL ke level tegangan RS232.&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p&gt;Converter yang saya gunakan disini adalah MAX232, yang sudah ada di board SmartAVR system so tinggal bikin program aja deh ak… &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="http://lh4.ggpht.com/_05CaZNXNb7o/Td0ZxCWqR_I/AAAAAAAAAdo/YOd5OSWo9io/wlEmoticon-smilewithtongueout%5B2%5D.png?imgmax=800" /&gt;&lt;/p&gt;    &lt;p&gt;Langsung aja bikin file baru di BASCOM AVR: FILE---&amp;gt;NEW atau CTRL+N&lt;/p&gt;    &lt;p&gt;Tulis program berikut,&lt;/p&gt;    &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;CONTOH RS232-1:&lt;/font&gt;&lt;/p&gt;    &lt;pre class="csharpcode"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;
$crystal = 11059200
$baud = 9600



&lt;span class="kwrd"&gt;Do&lt;/span&gt;
   Print &lt;span class="str"&gt;&amp;quot;connection ok&amp;quot;&lt;/span&gt;
   Waitms 1000
&lt;span class="kwrd"&gt;Loop&lt;/span&gt;

End&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;Buka Terminal Emulator, klik TOOLS---&amp;gt;TERMINAL EMULATOR atau tekan CTRL+T&lt;/p&gt;

  &lt;p&gt;Hubungkan kabel RS232 dari mcu ke port serial RS232 PC, port ini berbentuk DB9.&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/Td0ZyodeOvI/AAAAAAAAAds/vT6r5NNUk0w/s1600-h/image%5B21%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_05CaZNXNb7o/Td0Z0dpqckI/AAAAAAAAAdw/Wwdv_nBxAZU/image_thumb%5B10%5D.png?imgmax=800" width="218" height="101" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Jika berhasil pada Terminal Emulator akan muncul tulisan “connection ok”.&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/Td0Z13lSmvI/AAAAAAAAAd0/AqdTzk3JbRg/s1600-h/image%5B18%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_05CaZNXNb7o/Td0Z3HN23KI/AAAAAAAAAd4/HeeBCVzf5Vw/image_thumb%5B9%5D.png?imgmax=800" width="244" height="238" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Program pada CONTOH RS232-1, digunakan untuk mengirim tulisan “connection ok” ke PC. Karena ada waitms 1000 =&amp;#160; delay 1detik, maka tulisan “connection ok” dikirim tiap 1 detik.&lt;/p&gt;

  &lt;p&gt;Error yang biasa terjadi karena salah setting Terminal EMulator. Berikut ini setting yang saya gunakan:&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/Td0Z4gnB2ZI/AAAAAAAAAd8/kdtA2yshVLY/s1600-h/image%5B9%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_05CaZNXNb7o/Td0Z6qT19vI/AAAAAAAAAeA/17iUjV18X3E/image_thumb%5B5%5D.png?imgmax=800" width="461" height="339" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Com Port: port serial yang digunakan, disini saya gunakan port COM2 (lihat di device manager, com port yang tersedia di PC anda)&lt;/p&gt;

  &lt;p&gt;Baudrate: kecepatan transfer data antara mcu dengan PC. Pada mcu nilai baudrate di set pada baris program &lt;font style="background-color: #ffff00"&gt;$baud = 9600&lt;/font&gt; &lt;/p&gt;

  

  &lt;hr /&gt;

  

  &lt;p&gt;Jika tadi yang “ngomong” hanya si MCU sedangkan si PC cuman dengerin, sekarang kita akan buat program agar si MCU dan si PC bisa ngobrol 2 arah. &lt;/p&gt;

  &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;Contoh RS232-2:&lt;/font&gt;&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;
$crystal = 11059200
$baud = 9600

&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Angka &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;


Input &lt;span class="str"&gt;&amp;quot;masukin angka lalu tekan Enter...&amp;quot;&lt;/span&gt; , Angka
Print &lt;span class="str"&gt;&amp;quot;yg loe ketik angka: &amp;quot;&lt;/span&gt; ; Angka

&lt;span class="kwrd"&gt;Do&lt;/span&gt;
   Input &lt;span class="str"&gt;&amp;quot;ketik lagi, jangan lupa d Enter...&amp;quot;&lt;/span&gt; , Angka
   Print &lt;span class="str"&gt;&amp;quot;yg loe ketik angka: &amp;quot;&lt;/span&gt; ; Angka
&lt;span class="kwrd"&gt;Loop&lt;/span&gt;

End&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;Tampilan Terminal Emulator&amp;#160; saat program dah running di MCU&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/Td0Z71HfJOI/AAAAAAAAAeE/1jd6Fom2nLw/s1600-h/image%5B14%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_05CaZNXNb7o/Td0Z9rZ4_PI/AAAAAAAAAeI/7_BkWxcBzQI/image_thumb%5B8%5D.png?imgmax=800" width="394" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;Dari program CONTOH2, yang perlu dibahas mungkin baris yang ada kata “input”&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;Input &lt;span class="str"&gt;&amp;quot;masukin angka lalu tekan Enter...&amp;quot;&lt;/span&gt; , Angka
Print &lt;span class="str"&gt;&amp;quot;yg loe ketik angka: &amp;quot;&lt;/span&gt; ; Angka&lt;/pre&gt;
  &lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;Command “Input” berarti MCU akan memasukkan nilai yang masuk lewat serial RS232, dalam contoh ini nilai yg masuk adalah angka-angka yang diketik di Terminal Emulator. Nilai yang diketik dianggap valid saat ENTER ditekan.&lt;/p&gt;

  &lt;p&gt;Nilainya masuk kemana????&lt;/p&gt;

  &lt;p&gt;Angka-angka yang diketik akan masuk ke variabel “Angka”, variabel ini terlebih dahulu di”daftar”kan diawal program yaitu 
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Angka &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;
    &lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;Untuk latian silahkan di utak atik baris-baris program diatas.&amp;#160; Hapus/ganti salah satu huruf atau tanda baca(koma, petik, titikkoma) untuk lebih memahami fungsi masing2 code program &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-nerdsmile" alt="Nerd smile" src="http://lh6.ggpht.com/_05CaZNXNb7o/Td0Z_D1wDEI/AAAAAAAAAeM/ILca2L1CKd4/wlEmoticon-nerdsmile%5B2%5D.png?imgmax=800" /&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;Peralatan yang digunakan dalam latian ini:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;&lt;a href="http://indolab.net/index.php/products/product/view/3/5" target="_blank"&gt;Smart AVR System&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;USB Downloader&lt;/li&gt;

    &lt;li&gt;USBtoRS232 (konverter port USB menjadi port RS232 karena saya pake laptop yang nggak ada port serial RS232 nya)&lt;/li&gt;
  &lt;/ol&gt;
&lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-5784641744181763133?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/5784641744181763133/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=5784641744181763133&amp;isPopup=true' title='8 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/5784641744181763133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/5784641744181763133'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2011/05/bascom-avr-rs232.html' title='Bascom AVR, RS232'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_05CaZNXNb7o/Td0ZxCWqR_I/AAAAAAAAAdo/YOd5OSWo9io/s72-c/wlEmoticon-smilewithtongueout%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-3072822987308740943</id><published>2011-05-23T22:01:00.001+07:00</published><updated>2011-05-23T22:16:12.485+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BASCOM AVR'/><title type='text'>BASCOM-AVR, MEGA16, LCD 16*2</title><content type='html'>&lt;p&gt;Kita akan mencoba menampilkan karakter di LCD 16*2 dan menggunakan LCD designer untuk menampilkan karakter2 unik buatan kita sendiri &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-flirtmale" alt="Flirt male" src="http://lh4.ggpht.com/_05CaZNXNb7o/Tdp2kvxfMQI/AAAAAAAAAdM/JojLgWHX3aE/wlEmoticon-flirtmale2.png?imgmax=800" /&gt;. Pada bagian akhir kita juga akan berlatih membuat program yang lebih effisien dengan memanfaatkan perulangan &lt;em&gt;FOR-NEXT&lt;/em&gt;.&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p&gt;Untuk menampilkan karakter di LCD, tuliskan code program berikut:&lt;/p&gt;    &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;Program LCD1&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;pre class="csharpcode"&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;$crystal = 11059200
$&lt;span class="kwrd"&gt;lib&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;lcd4busy.lbx&amp;quot;&lt;/span&gt;

Config Lcd = 16 * 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdport = Portb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdddr = Ddrb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdin = Pinb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_e = 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rw = 1
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rs = 0
Cursor Blink

&lt;span class="kwrd"&gt;Do&lt;/span&gt;
   Cls
   Waitms 500
   Lcd &lt;span class="str"&gt;&amp;quot;   AVRku.com   &amp;quot;&lt;/span&gt;
   Lowerline
   Lcd &lt;span class="str"&gt;&amp;quot;  INDOLAB.net  &amp;quot;&lt;/span&gt;
   Waitms 10000

&lt;span class="kwrd"&gt;Loop&lt;/span&gt;
End&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;











.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;Gambar tampilan hasil program diatas seperti ini:&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/Tdp2pvnXQPI/AAAAAAAAAdQ/C093gI5EWQI/s1600-h/image2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_05CaZNXNb7o/Tdp2tJTFWvI/AAAAAAAAAdU/ykqJ7M8kpZI/image_thumb.png?imgmax=800" width="244" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Pembahasan program LCD1:&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;     &lt;span class="rem"&gt;' menentukan chip AVR yang kita gunakan, disini menggunakan ATmega16&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;$crystal = 11059200   &lt;span class="rem"&gt;'menentukan frekuensi xtal yang digunakan, kita gunakan xtal 11,0592MHz&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;$&lt;span class="kwrd"&gt;lib&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;lcd4busy.lbx&amp;quot;&lt;/span&gt;   &lt;span class="rem"&gt;'library untuk LCD&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;Config Lcd = 16 * 2   &lt;span class="rem"&gt;'menentukan jenis LCD yang digunakan, dalam hal ini LCD 16*2&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdport = Portb   &lt;span class="rem"&gt;'LCD dihubungkan dengan PORTB &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdddr = Ddrb&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdin = Pinb&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_e = 2 &lt;span class="rem"&gt;' pin Enable LCD dihubungkan ke PORTB.2 &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rw = 1   &lt;span class="rem"&gt;'pin RW LCD dihubungkan ke PORTB.1&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rs = 0  &lt;span class="rem"&gt;'pin RW LCD dihubungkan ke PORTB.0&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;Cursor Blink   &lt;span class="rem"&gt;'membuat cursor LCD berkedip&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Do&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;   Cls   &lt;span class="rem"&gt;'Clear LCD Screen&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;   Waitms 500&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;   Lcd &lt;span class="str"&gt;&amp;quot;   AVRku.com   &amp;quot;&lt;/span&gt;   &lt;span class="rem"&gt;'menampilkan tulisan AVRku.com di LCD&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;   Lowerline   &lt;span class="rem"&gt;'menuju baris bawah LCD&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;   Lcd &lt;span class="str"&gt;&amp;quot;  INDOLAB.net  &amp;quot;&lt;/span&gt;    &lt;span class="rem"&gt;'menampilkan tulisan INDOLAB.net&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;   Waitms 10000&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Loop&lt;/span&gt;   &lt;span class="rem"&gt;'perintah untuk mengulangi program setelah &amp;quot;Do&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;End&lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;

  &lt;hr /&gt;

  &lt;p&gt;Selanjutnya kita akan menggunakan LCD designer untuk membuat karakter2 unik dan menampilkannya di LCD.&lt;/p&gt;

  &lt;p&gt;Tekan CTRL+L ata u klik Tool—&amp;gt;LCD Designer&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/Tdp2t07prTI/AAAAAAAAAdY/8YR75BPPqIw/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_05CaZNXNb7o/Tdp2usrdIBI/AAAAAAAAAdc/9MpXT2DdQ8M/image_thumb1.png?imgmax=800" width="241" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Klik Ok, akan menghasilkan baris program seperti berikut:&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;Deflcdchar ?,32,4,4,31,4,4,32,32' replace ? &lt;span class="kwrd"&gt;with&lt;/span&gt; number (0-7)&lt;/pre&gt;
  &lt;style type="text/css"&gt;








.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;Rubah “?” menjadi&amp;#160; angka antara 0 sampai 7. Ini untuk memberi “nama”&amp;#160; karakter yang telah kita buat sehingga memudahkan saat kita akan menggunakan karakter tersebut. Misalnya:&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;Deflcdchar &lt;font style="background-color: #ffff00"&gt;0&lt;/font&gt;,32,4,4,31,4,4,32,32&lt;/pre&gt;
  &lt;style type="text/css"&gt;








.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;Angka “0” merupakan nama yang kita berikan untuk karakter. Jika ingin menampilkannya di LCD kita cukup menulis:&lt;/p&gt;

  &lt;pre class="csharpcode"&gt; LCD Chr(&lt;font style="background-color: #ffff00"&gt;0&lt;/font&gt;)&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;








.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;Karakter2 yang akan saya gunakan sebagai berikut:&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'karakter bintang berputar&lt;/span&gt;
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32
Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32
Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32
Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32


&lt;span class="rem"&gt;'karakter logo AVRku.com - IndoLab.net&lt;/span&gt;
Deflcdchar 6 , 30 , 6 , 10 , 16 , 7 , 3 , 5 , 8&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;








.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;Untuk menampilkannya di LCD, kita perlu menuliskan program berikut:&lt;/p&gt;

  &lt;p&gt;&lt;font color="#ffff00"&gt;&lt;/font&gt;&lt;/p&gt;

  &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;Program LCD2&lt;/font&gt;&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;
$crystal = 11059200
$&lt;span class="kwrd"&gt;lib&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;lcd4busy.lbx&amp;quot;&lt;/span&gt;


&lt;span class="rem"&gt;'karakter bintang berputar&lt;/span&gt;
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32
Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32
Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32
Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32


&lt;span class="rem"&gt;'karakter logo AVRku.com - IndoLab.net&lt;/span&gt;
Deflcdchar 6 , 30 , 6 , 10 , 16 , 7 , 3 , 5 , 8

Config Lcd = 16 * 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdport = Portb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdddr = Ddrb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdin = Pinb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_e = 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rw = 1
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rs = 0
Cursor Off



&lt;span class="kwrd"&gt;Do&lt;/span&gt;
   Cls
   Lcd Chr(6)
   Lcd Chr(32)
   Lcd &lt;span class="str"&gt;&amp;quot;AVRku-IndoLab&amp;quot;&lt;/span&gt;
   Lcd Chr(6)

   Locate 2 , 6
   Lcd Chr(0)
   Lcd Chr(0)
   Lcd Chr(0)
   Lcd Chr(0)
   Waitms 100

   Locate 2 , 6
   Lcd Chr(1)
   Lcd Chr(1)
   Lcd Chr(1)
   Lcd Chr(1)
   Waitms 100

   Locate 2 , 6
   Lcd Chr(2)
   Lcd Chr(2)
   Lcd Chr(2)
   Lcd Chr(2)
   Waitms 100

   Locate 2 , 6
   Lcd Chr(3)
   Lcd Chr(3)
   Lcd Chr(3)
   Lcd Chr(3)
   Waitms 100

   Locate 2 , 6
   Lcd Chr(4)
   Lcd Chr(4)
   Lcd Chr(4)
   Lcd Chr(4)
   Waitms 100

   Locate 2 , 6
   Lcd Chr(5)
   Lcd Chr(5)
   Lcd Chr(5)
   Lcd Chr(5)
   Waitms 100


&lt;span class="kwrd"&gt;Loop&lt;/span&gt;
End&lt;/pre&gt;

  &lt;p&gt;&lt;style type="text/css"&gt;








.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

  &lt;p&gt;Hasil tampilannya:&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/Tdp2zemYQ3I/AAAAAAAAAdg/eleIgnsjSgQ/s1600-h/image6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_05CaZNXNb7o/Tdp22vPPkvI/AAAAAAAAAdk/p4cFPyT1xGs/image_thumb2.png?imgmax=800" width="244" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Ini videonya:&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=Z9XGiYB0-_4" target="_blank"&gt;http://www.youtube.com/watch?v=Z9XGiYB0-_4&lt;/a&gt;&lt;/p&gt;

  

  &lt;hr /&gt;

  

  &lt;p&gt;Program LCD2 di atas bisa di tulis lebih simple seperti ini: &lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;Program LCD3&lt;/font&gt;&lt;/p&gt;

  &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;&lt;/font&gt;&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;
$crystal = 11059200
$&lt;span class="kwrd"&gt;lib&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;lcd4busy.lbx&amp;quot;&lt;/span&gt;


&lt;span class="rem"&gt;'karakter bintang berputar&lt;/span&gt;
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32
Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32
Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32
Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32


&lt;span class="rem"&gt;'karakter logo AVRku.com - IndoLab.net&lt;/span&gt;
Deflcdchar 6 , 30 , 6 , 10 , 16 , 7 , 3 , 5 , 8

Config Lcd = 16 * 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdport = Portb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdddr = Ddrb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcdin = Pinb
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_e = 2
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rw = 1
&lt;span class="kwrd"&gt;Const&lt;/span&gt; _lcd_rs = 0
Cursor Off


&lt;span class="kwrd"&gt;Declare&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Putar_bintang

&lt;span class="kwrd"&gt;Do&lt;/span&gt;
   Cls
   Lcd Chr(6)
   Lcd Chr(32)
   Lcd &lt;span class="str"&gt;&amp;quot;AVRku-IndoLab&amp;quot;&lt;/span&gt;
   Lcd Chr(6)
   &lt;span class="kwrd"&gt;Call&lt;/span&gt; Putar_bintang



&lt;span class="kwrd"&gt;Loop&lt;/span&gt;

&lt;span class="kwrd"&gt;Sub&lt;/span&gt; Putar_bintang
   Local Putar &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; , Jumlah &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;

   &lt;span class="kwrd"&gt;For&lt;/span&gt; Putar = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 5
      Locate 2 , 6
      &lt;span class="kwrd"&gt;For&lt;/span&gt; Jumlah = 1 &lt;span class="kwrd"&gt;To&lt;/span&gt; 4
         Lcd Chr(putar)
      &lt;span class="kwrd"&gt;Next&lt;/span&gt;
      Waitms 100
   &lt;span class="kwrd"&gt;Next&lt;/span&gt;

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;

End&lt;/pre&gt;
  &lt;style type="text/css"&gt;






.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;Dalam program LCD3, kita menggunakan subrutin yang diberi nama &lt;em&gt;Putar_bintang&lt;/em&gt;. Di dalam subrutin ini, command untuk menulis karakter ke LCD –&amp;gt;&lt;em&gt;Lcd Chr(…),&lt;/em&gt; dipanggil beberapa kali menggunakan perulangan &lt;em&gt;FOR-NEXT&lt;/em&gt;.&amp;#160; Baris program yang ada diantara&amp;#160; &lt;em&gt;FOR&lt;/em&gt; dan &lt;em&gt;NEXT&lt;/em&gt; akan diulang sesuai pernyataan yang dibentuk oleh &lt;em&gt;TO&lt;/em&gt;. &lt;/p&gt;

  &lt;p&gt;Contoh perulangan1: &lt;/p&gt;

  &lt;pre class="csharpcode"&gt;      &lt;span class="kwrd"&gt;For&lt;/span&gt; Jumlah = 1 &lt;span class="kwrd"&gt;To&lt;/span&gt; 4
         Lcd Chr(putar)
      &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;Baris program yang diulang&amp;#160; yaitu &lt;em&gt;Lcd Chr(putar).&lt;/em&gt; Berapa kali baris ini diulang?&lt;/p&gt;

  &lt;p&gt;Liat baris program &lt;em&gt;FOR Jumlah = 1 TO 4&lt;/em&gt;. &lt;/p&gt;

  &lt;p&gt;Artikan baris program ini secara harfiah.&lt;/p&gt;

  &lt;p&gt;&lt;em&gt;FOR Jumlah=1 to 4&lt;/em&gt; –&amp;gt; Untuk Jumlah sama dengan 1 sampai 4.&lt;/p&gt;

  &lt;p&gt;Nilai&lt;em&gt; Jumlah&lt;/em&gt; ditambah, mulai dari 1 sampai menuju 4. Setiap&amp;#160; &lt;em&gt;Jumlah&lt;/em&gt; berubah nilai maka baris program Lcd Chr (putar) dikerjakan. &lt;/p&gt;

  &lt;p&gt;Dari 1 sampai 4 berarti&amp;#160; 1—&amp;gt;2—&amp;gt;3—&amp;gt;4&amp;#160; sama dengan ada&amp;#160; 4 kali pengulangan.&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;Contoh perulangan2:&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;   &lt;span class="kwrd"&gt;For&lt;/span&gt; Putar = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 5
      Locate 2 , 6
      &lt;span class="kwrd"&gt;For&lt;/span&gt; Jumlah = 1 &lt;span class="kwrd"&gt;To&lt;/span&gt; 4
         Lcd Chr(putar)
      &lt;span class="kwrd"&gt;Next&lt;/span&gt;
      Waitms 100
   &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;
  &lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;Untuk perulangan FOR Putar = 0 To 5, terjadi 6 kali pengulangan mulai dari 0—&amp;gt;1—&amp;gt;2—&amp;gt;3—&amp;gt;4—&amp;gt;5&lt;/p&gt;

  &lt;p&gt;yang diulang adalah baris program:&lt;/p&gt;

  &lt;pre class="csharpcode"&gt;      Locate 2 , 6
      &lt;span class="kwrd"&gt;For&lt;/span&gt; Jumlah = 1 &lt;span class="kwrd"&gt;To&lt;/span&gt; 4
         Lcd Chr(putar)
      &lt;span class="kwrd"&gt;Next&lt;/span&gt;
      Waitms 100&lt;/pre&gt;
  &lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;Dalam perulangan Contoh1, &lt;em&gt;Lcd Chr(putar)&lt;/em&gt; diulang 4 kali. &lt;/p&gt;

  &lt;p&gt;Pada Contoh2, baris program untuk contoh1 di ulang 6 kali.&lt;/p&gt;

  &lt;p&gt;Berarti &lt;em&gt;Lcd Chr(putar)&lt;/em&gt; diulang sebanyak 4*6 = 24 kali.&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;u&gt;Lihat lagi program LCD2, untuk menampilkan karakter bintang{karakter-karakter &lt;em&gt;DefLcdChr (0—&amp;gt;5)}&lt;/em&gt;&lt;em&gt;, &lt;/em&gt;perintah &lt;em&gt;Lcd Chr(0—&amp;gt;5) &lt;/em&gt;kita tulis berulang-ulang&amp;#160; satupersatu. Hayoo coba dihitung berapa kali?&lt;/u&gt; &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-flirtmale" alt="Flirt male" src="http://lh4.ggpht.com/_05CaZNXNb7o/Tdp2kvxfMQI/AAAAAAAAAdM/JojLgWHX3aE/wlEmoticon-flirtmale2.png?imgmax=800" /&gt;&lt;/p&gt;
&lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-3072822987308740943?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/3072822987308740943/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=3072822987308740943&amp;isPopup=true' title='3 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/3072822987308740943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/3072822987308740943'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2011/05/basom-avr-mega16-lcd-162.html' title='BASCOM-AVR, MEGA16, LCD 16*2'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_05CaZNXNb7o/Tdp2kvxfMQI/AAAAAAAAAdM/JojLgWHX3aE/s72-c/wlEmoticon-flirtmale2.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-7421330628357320153</id><published>2011-05-18T08:19:00.001+07:00</published><updated>2011-05-23T22:06:09.955+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BASCOM AVR'/><title type='text'>Pengenalan BASCOM AVR</title><content type='html'>&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;         &lt;ol&gt;           &lt;p&gt;Dalam contoh ini kita akan berlatih merubah kongifurasi BASCOM AVR sesuai dengan minsys AVR yang kita gunakan dan membuat program sederhana untuk menyalakan LED, menggeser nyala LED dan &lt;/p&gt;           &lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;                 &lt;p&gt;membaca penekanan tombol.&lt;/p&gt;               &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;1. Membuat Project Baru:&lt;/strong&gt;&lt;/ol&gt;          &lt;ol&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;span class="fullpost"&gt;Klik File—&amp;gt;New&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;strong&gt;2.&lt;/strong&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;strong&gt;Menentukan konfigurasi sistem(chip, baudrate, I/O dll.):&lt;/strong&gt;               &lt;p&gt;A. Options—&amp;gt; Compiler&lt;/p&gt;              &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/TdMeUBM_vCI/AAAAAAAAAcM/qj-GE0rlorc/s1600-h/clip_image002%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 1px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/_05CaZNXNb7o/TdMeV9xMNHI/AAAAAAAAAcQ/W-5_UjXXreY/clip_image002_thumb.jpg?imgmax=800" width="244" height="106" /&gt;&lt;/a&gt;&lt;/p&gt;              &lt;p&gt;B. Chip: menentukan chip AVR yang digunakan, karena saya memakai DI-Smart AVR 16 maka saya gunakan m16def.dat &lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/TdMeXyDC3eI/AAAAAAAAAcU/dXX2ht6pxbo/s1600-h/clip_image004%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 1px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh5.ggpht.com/_05CaZNXNb7o/TdMeY7ZOrDI/AAAAAAAAAcY/qaNpeyRaOq4/clip_image004_thumb.jpg?imgmax=800" width="244" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;              &lt;p&gt;C.Options—&amp;gt;Programmer: menentukan jenis programmer/downloader yang digunakan. Di sini saya menggunakan usb downloader dengan firmware AVR910.&lt;/p&gt;              &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/TdMebMqW84I/AAAAAAAAAcc/0mmVsv1cvAM/s1600-h/clip_image006%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh3.ggpht.com/_05CaZNXNb7o/TdMecUjWGwI/AAAAAAAAAcg/-nOJIDzSwZQ/clip_image006_thumb.jpg?imgmax=800" width="244" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;              &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;              &lt;p&gt;&lt;strong&gt;3. Test setting programmer:&lt;/strong&gt;&lt;/p&gt;              &lt;p&gt;untuk mengetahui settning programmer udah sesuai apa belum klik Program—&amp;gt;Send to Chip—&amp;gt; Manual Program &lt;/p&gt;              &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/TdMedQbV9PI/AAAAAAAAAck/ImuHSZezJdk/s1600-h/clip_image008%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 1px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh4.ggpht.com/_05CaZNXNb7o/TdMeet9C5eI/AAAAAAAAAco/xFILA_4abRM/clip_image008_thumb.jpg?imgmax=800" width="244" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;              &lt;p&gt;Pilih Chip—&amp;gt;Identify. Jika setting sudah benar maka akan tampil jenis chip yang kita gunakan dan propertiesnya&lt;/p&gt;              &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/TdMef4JmcRI/AAAAAAAAAcs/WRuKwtMAVvs/s1600-h/clip_image010%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh3.ggpht.com/_05CaZNXNb7o/TdMehDqLUaI/AAAAAAAAAcw/GRiWHVyxx4c/clip_image010_thumb.jpg?imgmax=800" width="244" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;              &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/TdMeiDLmaaI/AAAAAAAAAc0/hg9xeXbaLoE/s1600-h/clip_image012%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 1px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh4.ggpht.com/_05CaZNXNb7o/TdMejCgoPLI/AAAAAAAAAc4/DAYI1bMxEsw/clip_image012_thumb.jpg?imgmax=800" width="244" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;              &lt;p&gt;&amp;#160;&lt;/p&gt;              &lt;p&gt;&amp;#160;&lt;/p&gt;              &lt;p&gt;&lt;strong&gt;4. Membuat code program untuk menggeser nyala LED ke kanan: &lt;/strong&gt;&lt;/p&gt;              &lt;pre class="csharpcode"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;

$crystal = 11059200

Config Portc = Output

Portc = &amp;amp;B1111_1110

&lt;span class="kwrd"&gt;Do&lt;/span&gt;

Rotate Portc , Right , 1

Waitms 500

&lt;span class="kwrd"&gt;Loop&lt;/span&gt;

&lt;span class="kwrd"&gt;End&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
            &lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;Tekan &lt;b&gt;F7&lt;/b&gt; untuk men COMPILE. 

            &lt;p&gt;Jika tidak ada ERROR tekan &lt;b&gt;F4&lt;/b&gt;, lalu &lt;b&gt;pilih ERASE and PROGRAM CHIP&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/TdMejyfk5kI/AAAAAAAAAc8/Ng-6HTfwUKk/s1600-h/clip_image014%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://lh6.ggpht.com/_05CaZNXNb7o/TdMek87rbPI/AAAAAAAAAdA/YhSDmAZ7TtE/clip_image014_thumb.jpg?imgmax=800" width="244" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;

            &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/TdMemtESfTI/AAAAAAAAAdE/aMDCveLoIIE/s1600-h/clip_image016%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 1px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://lh6.ggpht.com/_05CaZNXNb7o/TdMeodh58pI/AAAAAAAAAdI/gmnZWB9LRk4/clip_image016_thumb.jpg?imgmax=800" width="218" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

            &lt;p&gt;Gambar di atas adalah tampilan program saat di running.&lt;/p&gt;

            &lt;p&gt;A. Pembahasan program:&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;$regfile = &amp;quot;m16def.dat&amp;quot;&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Menentukan chip AVR yang kita gunakan, saya menggunakan ATMEGA16. Menggunakan chip AVR yang lain harus merubah baris ini dan juga konfigurasi compiler yang dibahas pada point 2.B. &lt;/p&gt;

            &lt;p&gt;Misal kita menggunakan ATMEGA8 maka kita tulis &lt;b&gt;$regfile = &amp;quot;m8def.dat&amp;quot;&lt;/b&gt;&lt;/p&gt;
            &lt;b&gt;&lt;/b&gt;

            &lt;p&gt;&lt;b&gt;$crystal = 11059200&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Nilai yang diisikan disini sesuai crystal/ xtal yang dipakai. Saya menggunakan crystal 11,0592MHz.&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Config Portc = Output&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;PORTC di gunakan sebagai output. Saya menggunakan PORTC sebagai output karena LED-LED di board SMART AVR 16 SYSTEM terhubung ke PORTC&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Portc = &amp;amp;B1111_1110&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Nilai PORTC di set ke 1111 1110. Ini berarti PORTC.7—PORTC.1 nilainya = 1=high=5volt. &lt;/p&gt;

            &lt;p&gt;Sedangkan POTC.0 nilainya = 0 = low = 0 volt.&lt;/p&gt;

            &lt;p&gt;Berarti LED yang terhubung ke PORTC.0 akan menyala. Perlu diketahui LED-LED pada board Smart AVR System dirangkai active low artinya jika di beri Logic Low / teg. 0 volt maka LED akan active/menyala.&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Do&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Rotate Portc , Right , 1&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Waitms 500&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Loop&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;End&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Baris-baris program yang berada di antara &lt;b&gt;Do --- Loop&lt;/b&gt; merupakan baris –baris program utama/ main program yang akan di kerjakan terus menerus.&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Rotate Portc , Right , 1&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;&lt;/b&gt;Menggeser nilai pada PORTC ke KANAN sebanyak 1kali. Di awal program nilai PORTC di set ke 1111_1110 jika digeser kekanan 1 kali maka nilainya menjai 0111_1111 berarti PORTC.7 =Low= 0 volt sehingga LED yang terhubung ke port ini akan menyala.&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Waitms 500&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Delay 500ms, selama waktu ini microcontroller tidak melakukan apa2.&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Loop&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Perintah untuk mengulang program ke baris &lt;b&gt;DO&lt;/b&gt;, sehingga program untuk menggeser LED akan dijalankan terus.&lt;/p&gt;

            &lt;p&gt;&amp;#160;&lt;/p&gt;

            &lt;p&gt;&lt;strong&gt;5. Membuat code program untuk membaca tombol&lt;/strong&gt;&lt;/p&gt;

            &lt;p&gt;Program ini bertujuan untuk membaca penekanan tombol untuk merubah nyala led.&lt;/p&gt;

            &lt;p&gt;Pada board Smart AVR System Tombol 1 terhubung ke PIND.2, Tombol 2 terhubung ke PIND.3&lt;/p&gt;

            &lt;p&gt;Jika tombol 1 ditekan maka nyala LED akan begeser ke kanan.&lt;/p&gt;

            &lt;p&gt;Jika tombol 2 ditekan maka nyala LED akan bergeser ke ke kiri&lt;/p&gt;

            &lt;pre class="csharpcode"&gt;$regfile = &lt;span class="str"&gt;&amp;quot;m16def.dat&amp;quot;&lt;/span&gt;

$crystal = 11059200

Config Portd.2 = Input 

Config Portd.3 = Input

Portd.2 = 1

Portd.3 = 1

Config Portc = Output

Portc = &amp;amp;B1111_1110

&lt;span class="kwrd"&gt;Do&lt;/span&gt;

&lt;span class="kwrd"&gt;If&lt;/span&gt; Pind.2 = 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt; Rotate Portc , Right , 1

&lt;span class="kwrd"&gt;If&lt;/span&gt; Pind.3 = 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt; Rotate Portc , Left , 1

Waitms 500

&lt;span class="kwrd"&gt;Loop&lt;/span&gt;

&lt;span class="kwrd"&gt;End&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
            &lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;Tekan &lt;b&gt;F7&lt;/b&gt; untuk men COMPILE. 

            &lt;p&gt;Jika tidak ada ERROR tekan &lt;b&gt;F4&lt;/b&gt;, lalu &lt;b&gt;pilih ERASE and PROGRAM CHIP&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;A. Pembahasan program:&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Config Portd.2 = Input &lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Config Portd.3 = Input&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;PORTD.2 dan PORTD.3 di setting sebagai input&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Portd.2 = 1&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;Portd.3 = 1&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Memberi nilai 1/ high pada PORTD.2 dan PORTD.3, karena sebelumnya port-port ini disetting sebagai input maka baris program ini akan mengaktifkan &lt;b&gt;internal pull up. &lt;/b&gt;Jika internal pull up tidak diaktfikan maka kondisi port input akan mengambang menyebabkan nilai pembacaan kacau. &lt;/p&gt;

            &lt;p&gt;&lt;b&gt;If Pind.2 = 0 Then Rotate Portc , Right , 1&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Jika PIND.2 = 0 maka PORTC akan di geser ke kanan 1kali. PIND.2 akan bernilai 0 jika tombol 1 ditekan.&lt;b&gt; &lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;&lt;b&gt;If Pind.3 = 0 Then Rotate Portc , Left , 1&lt;/b&gt;&lt;/p&gt;

            &lt;p&gt;Jika PIND.3 = 0 maka PORTC akan di geser ke kiri 1kali. PIND.3 akan bernilai 0 jika tombol 2 ditekan.&lt;b&gt; &lt;/b&gt;&lt;/p&gt;
          &lt;/span&gt;&lt;/ol&gt;
      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-7421330628357320153?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/7421330628357320153/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=7421330628357320153&amp;isPopup=true' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/7421330628357320153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/7421330628357320153'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2011/05/pengenalan-bascom-avr.html' title='Pengenalan BASCOM AVR'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_05CaZNXNb7o/TdMeV9xMNHI/AAAAAAAAAcQ/W-5_UjXXreY/s72-c/clip_image002_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-4040801283206496646</id><published>2011-03-08T07:59:00.001+07:00</published><updated>2011-03-08T07:59:01.859+07:00</updated><title type='text'>anti noise ATmega8 Circuit</title><content type='html'>&lt;p&gt;Sering pas kita2 bikin project pake MCU &lt;em&gt;(*baca:Microcontroller)&lt;/em&gt; trus nge drive peralatan 380/220VAC macam motor, selenoid&amp;#160; dll. Tuh MCU ngadat kayak bajai… program HANG…kadang sama sekali gak mau jalan,&amp;#160; kadang reset sendiri program nya and then Temen2 langsung kompak bilang “programnya tuh gannnn ndak beresss&amp;#160; ….” dalam hati gua bilang:&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/TXV_D34hGvI/AAAAAAAAAaM/OC7cFnCV0uM/s1600-h/marah%5B4%5D.gif"&gt;&lt;img style="margin: 0px 0px 1px; display: inline" title="marah" alt="marah" src="http://lh4.ggpht.com/_05CaZNXNb7o/TXV_E3-LbHI/AAAAAAAAAaQ/2sdHtp0BjQg/marah_thumb%5B2%5D.gif?imgmax=800" width="28" height="29" /&gt;&lt;/a&gt; “Dammmnnn kenapa harus program&lt;em&gt;(*baca:programmer) &lt;/em&gt;yang selalu jadi kambing hitam”. Tidak terima dengan perilaku diskriminatif ini &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="http://lh5.ggpht.com/_05CaZNXNb7o/TXV_F-_MTUI/AAAAAAAAAaU/d7y2MnHf2x8/wlEmoticon-smilewithtongueout%5B2%5D.png?imgmax=800" /&gt; , gua langsung browsing n ketemu ama document2 dari ATMEL Corp. &lt;strong&gt;doc910: Microcontroller in a Harsh Environment&lt;/strong&gt; dan &lt;strong&gt;doc1619: EMC Design Considerations&lt;/strong&gt;. Setelah gua baca2, dalam mendesign sebuah circuit kita harus memperhatikan EMC(electromagnetic compatibility) yang mencakup 2 hal:&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;blockquote&gt;     &lt;p&gt;• How the environment may affect the design (immunity).        &lt;br /&gt;• How the design may affect the environment (emission).&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;Affect from Environment dalam hal ini bisa diartikan noise yang dapat berasal dari RF frequency, switching powersupply dll. Bagian digital dari MCU juga sangat berpotensi membuat noise terhadap bagian analog MCU&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/TXV_GvURfII/AAAAAAAAAaY/gOVN96i4sNc/s1600-h/image%5B9%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto 1px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_05CaZNXNb7o/TXV_H3f02QI/AAAAAAAAAac/KS4l1Y8Q5W4/image_thumb%5B3%5D.png?imgmax=800" width="244" height="129" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/TXV_Ixc3EvI/AAAAAAAAAag/PMDs-WLsJwo/s1600-h/image%5B12%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto 1px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_05CaZNXNb7o/TXV_KPghY8I/AAAAAAAAAak/xMF7qHzgNHQ/image_thumb%5B4%5D.png?imgmax=800" width="244" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Gambar di atas menunjukkan cara penempatan decoupling capacitor. &lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;Current can only flow in loops. This is true for signals as well as for power supply current. Unfortunately, a current loop will emit noise, and the larger the loop, the larger the noise. Noise also increases with current and with frequency. A large loop is also more likely to receive noise. Loops should therefore be kept as small as possible. This means that every line that may emit or receive noise should have a return path to ground as close to the line as possible.&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;Intinya: semakin besar sebuah Loop semakin rentan terhadap noise jadi buat grounding sedekat mungkin.&lt;/p&gt;    &lt;p&gt;Point penting juga untuk masalah grounding yaitu:&amp;#160; &lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;Note that for a high frequency signal, the return path in a ground plane will be exactlyunder the track, even if this path is longer than the direct route. This is because the return path will always be the path of least impedance, and for a high-frequency signal, this is the path with the smallest loop, not the path that has lowest DC resistance.        &lt;br /&gt;For circuits that include both digital and analog circuits, the ground plane may be divided into an analog ground plane and a digital ground plane. This will reduce the interference between the analog and digital parts of the system.&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/TXV_LR8sgPI/AAAAAAAAAas/7TdsOeNrxUs/s1600-h/image%5B15%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto 1px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_05CaZNXNb7o/TXV_MfAKgSI/AAAAAAAAAaw/Yd47cwWDMJE/image_thumb%5B5%5D.png?imgmax=800" width="244" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Gambar diatas menunjukkan penambahan induktor L yang berupa ferrite beads, sehingga terbentuk sebuah rangkaian filter. Spesifikasi L yang bisa digunakan adalah:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/TXV_NuafPII/AAAAAAAAAa0/12zTCCpMsYs/s1600-h/image%5B18%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto 1px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_05CaZNXNb7o/TXV_OrfLv_I/AAAAAAAAAa4/OUdAB9i9bC0/image_thumb%5B6%5D.png?imgmax=800" width="244" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Karena sulit nyari ferrite beads yg sama persis kayak itu akhirnya gua ganti pake &lt;a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=490-1056-2-ND" target="_blank"&gt;BLM31PG121&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Rangkaian yang gua buat terdiri dari ATmega8, Port untuk LCD, MAX232, ULN2003 untuk driver relay, passive low pass filter untuk LM35. Penampakannya kayak gini:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/TXV_QZc7I8I/AAAAAAAAAa8/EjVTYiFLvvI/s1600-h/image%5B21%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto 1px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_05CaZNXNb7o/TXV_R_4vSMI/AAAAAAAAAbA/e0dRB_wqfgU/image_thumb%5B7%5D.png?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Such an ugly design heughh!!! &lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/TXV_SgLj_-I/AAAAAAAAAbE/8sZwiMf5CbY/s1600-h/capek%5B2%5D.gif"&gt;&lt;img style="margin: 0px 5px 1px 0px; display: inline" title="capek" alt="capek" src="http://lh4.ggpht.com/_05CaZNXNb7o/TXV_TeSF7GI/AAAAAAAAAbI/23N1k6bpaJ4/capek_thumb.gif?imgmax=800" width="30" height="30" /&gt;&lt;/a&gt;keliatan ribet , mbulet coz gua musti bikin loop sekecil mungkin,, ndak boleh asal connect jalurnya… saat uji coba gua pake relay 12volt yang biasa di pake di panel2 listrik&lt;img style="margin: 0px 5px 1px 0px" src="http://t1.gstatic.com/images?q=tbn:ANd9GcSAdwZhjPcDmsKEkUcZH3mxaupYDJky2ru26LVgWceleuR0oRpmqQ" /&gt;. Bebannya gua ganti2 mulai dari kipas angin, setrika, blender, pokoknya beban 220VAC yang ada dirumah.&amp;#160; Setelah uji coba ternyata lumayan juga ndak pernah Hang, setidaknya ada peningkatan, dulu gua gerakin kipas 220VAC yang&amp;#160; kecill&amp;#160;&amp;#160; aja dah ngadat MCUnya…&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/TXV_UQjtznI/AAAAAAAAAbM/KD2ZUQFzXjM/s1600-h/senang%5B2%5D.gif"&gt;&lt;img style="margin: 0px 5px 1px 0px; display: inline" title="senang" alt="senang" src="http://lh4.ggpht.com/_05CaZNXNb7o/TXV_VPFOlHI/AAAAAAAAAbQ/vN5XjkcTlZI/senang_thumb.gif?imgmax=800" width="30" height="30" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Advantage dari design ini:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Relatif tahan noise &lt;/li&gt;      &lt;li&gt;LowPass filter 50Hz buat LM35 dengan mengatur nilai R multiturn menjadi 3100 – 3200 ohm. Hasilnya pergerakan nilai read ADC hanya 1-2bit. Lumayan oke lahh, kagak perlu utak atik program biar nilai LM35 nya stabil. &lt;/li&gt;      &lt;li&gt;Ada port buat LCD sekalian VR buat ngatur background contrast LCD &lt;/li&gt;      &lt;li&gt;ULN 2003 buat driver 3 relay &lt;/li&gt;      &lt;li&gt;MAX232 buat komunikasi serial RS232 &lt;/li&gt;      &lt;li&gt;Pake 7808 jadi&amp;#160; gak panas saat dikasih supply 12VDC &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Disadvantage:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Design terlalu gedhe buat chip sekelas ATmega8. &lt;/li&gt;      &lt;li&gt;double layer, lebih mahal n ribet bikin pcb nya &lt;/li&gt;      &lt;li&gt;Untuk PORT I/O belum dilengkapi VCC &amp;amp; Ground jadi kalo butuh musti ambil dari terminal power. &lt;/li&gt;      &lt;li&gt;Transistror power yang bisa digunakan footprintnya TIP31 kapasitas arus cuman 3A. &lt;/li&gt;      &lt;li&gt;Waktu trial cuman pake beban Home Appliance jadi belum bener2 terukur kemampuannya, buat agan2 yg mau coba pake beban yang lebih gedhe, monggo dipersilahkan tapi resiko ditanggung penumpang hehehehehehheee &lt;/li&gt;      &lt;li&gt;Belum dicoba di tempat dengan RF noise gedhe &lt;strong&gt;&lt;a href="https://docs.google.com/uc?id=0ByMXP67a7iKlMjA3NDM5OGMtNmI5YS00ZDdlLTk2NGItNTY0YTBhNzE4ZTg0&amp;amp;export=download&amp;amp;hl=en" target="_blank"&gt;DOWNLOAD FILE PCB NYA KLIK DISINI&lt;/a&gt;&lt;/strong&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;atikel ini dibikin dengan cara kurang seksama dan dalam tempo sesingkat2nya. sanggahan, saran, arahan&amp;#160; send to &lt;a href="mailto:zigan@avrku.com"&gt;zigan@avrku.com&lt;/a&gt;&lt;/ul&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-4040801283206496646?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/4040801283206496646/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=4040801283206496646&amp;isPopup=true' title='5 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/4040801283206496646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/4040801283206496646'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2011/03/anti-noise-atmega8-circuit.html' title='anti noise ATmega8 Circuit'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_05CaZNXNb7o/TXV_E3-LbHI/AAAAAAAAAaQ/2sdHtp0BjQg/s72-c/marah_thumb%5B2%5D.gif?imgmax=800' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-8506918250195891051</id><published>2010-03-02T12:10:00.001+07:00</published><updated>2010-03-02T12:28:26.656+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><title type='text'>Detektor beban 220 Volt AC (2)</title><content type='html'>&lt;p&gt;Ini lanjutan dari artikel &lt;strong&gt;&lt;a href="http://avrku.blogspot.com/2010/02/detektor-beban-220volt-ac.html"&gt;Detektor Beban 220Volt AC&lt;/a&gt;&lt;/strong&gt; beberapa waktu lalu. Di artikel itu iika ada perubahan keadaan Lampu, maka nilai R dari LDR juga berubah. Ternyata banyak yang bingung gimana cara interface perubahan&amp;#160; R dari LDR&amp;#160; ke microcontroller?&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/S4ydpgs1WGI/AAAAAAAAAVw/sJxNFsFKmBc/s1600-h/bingung%5B5%5D.gif"&gt;&lt;img title="bingung" style="display: inline" height="30" alt="bingung" src="http://lh4.ggpht.com/_05CaZNXNb7o/S4ydqkcpz3I/AAAAAAAAAV0/VEUrmWJs97s/bingung_thumb%5B1%5D.gif?imgmax=800" width="30" /&gt;&lt;/a&gt; (termasuk gua sendiri :-p) &lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p&gt;hmm ….&amp;#160; LOGIC yang diminta adalah:&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;saat Lampu mati, logic sensor HIGH &lt;/li&gt;      &lt;li&gt;jika Lampu&amp;#160; nyala, logic sensor LOW &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;Ide pertama yg terpikir: LDR di Pull Up pake R 2k2. Saat Lampu masih mati kondisi logic yg diperoleh HIGH(5 volt) , ini dah sesuai ama yg diinginkan. Tapi saat Lampu dah nyala ternyata tegangan sensornya 2,3Volt. Klo tegangan segini masih ke detect HIGH oleh microcontroller&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/S4ydrc8eciI/AAAAAAAAAV4/58IyXGBqV_0/s1600-h/mumet%5B2%5D.gif"&gt;&lt;img title="mumet" style="display: inline" height="30" alt="mumet" src="http://lh3.ggpht.com/_05CaZNXNb7o/S4ydsukkjLI/AAAAAAAAAV8/ZXeUheLs7yM/mumet_thumb.gif?imgmax=800" width="30" /&gt;&lt;/a&gt; &lt;/ul&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;Mumet Mode: ON.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Akhirnya bongkar pasang rangkaian, nyoba pake PC817 blum bisa. Pake transistor masih lum bisa juga.. aihhh…….{kepaksa buka buku lagi dech… ElkaDasar&amp;#160; :-p LOL&amp;#160; } &lt;/p&gt;    &lt;p&gt;Di buku di jelasin klo mau pake transistor untuk switching, kaki Basis logicnya gak boleh ngambang jadi musti di pull up atau pull down. Karena make Transistor NPN maka kaki Basis nya ak pull down.&lt;/p&gt;    &lt;p&gt;Gambar Rangkaian seperti berikut:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/S4ydtaWg_UI/AAAAAAAAAWA/7s5qSe8wkDc/s1600-h/image%5B8%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="182" alt="image" src="http://lh6.ggpht.com/_05CaZNXNb7o/S4yduRyEzCI/AAAAAAAAAWE/y5VtpD3on0E/image_thumb%5B6%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; Pada gambar diatas tampak Transistor C9014, sohib2 gak harus make Transistor ini. Bisa diganti ama BD139, C9013 ato pake jenis NPN yang laen.&lt;/p&gt;    &lt;p&gt;R 1k pada kaki basis di pake untuk Pull Down, agar Transistor baru ter&lt;em&gt;&lt;u&gt;bias&lt;/u&gt;&lt;/em&gt; saat nilai resistansi LDR udah kecil.&lt;/p&gt;    &lt;p&gt;R 2k2 pada kaki collector di gunakan untuk Pull Up, supaya tegangan ke kaki micro&amp;#160; bisa mencapai +5 volt saat Lampu off.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;INGAT!!! LED (D5) dan LDR harus ditutup( di dalam Heatshrink Tube atau di isolasi) agar tidak terpengaruh cahaya dari luar.&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Component List: &lt;/p&gt;      &lt;p&gt;&lt;strong&gt;D1,D2,D3,D4&lt;/strong&gt; = dioda IN4002 &lt;/p&gt;      &lt;p&gt;&lt;strong&gt;D5&lt;/strong&gt;= LED 5mm &lt;/p&gt;      &lt;p&gt;&lt;strong&gt;LDR1&lt;/strong&gt;=LDR&lt;/p&gt;      &lt;p&gt;Transistor C9014&lt;/p&gt;      &lt;p&gt;Led&lt;/p&gt;      &lt;p&gt;R 2K2&lt;/p&gt;      &lt;p&gt;R 1K&lt;/p&gt;      &lt;p&gt;R 380&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;Oh iya… biar gak kebalik waktu pasang Transistor C9014, berikut ane sertain gambar kaki-kaki transistor C9014 dilihat dari bawah&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/S4yh9SokXBI/AAAAAAAAAWI/rO75sLSn1fg/s1600-h/image%5B12%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="135" alt="image" src="http://lh4.ggpht.com/_05CaZNXNb7o/S4yh-Dm39lI/AAAAAAAAAWM/gqN9SwrYIa4/image_thumb%5B8%5D.png?imgmax=800" width="211" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s share…&amp;#160; ide /saran/kritik kirim aja ke &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Copyright&amp;#160; ©&amp;#160; &lt;a href="http://AVRku.blogspot.com"&gt;AVRku.blogspot.com&lt;/a&gt;&lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-8506918250195891051?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/8506918250195891051/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=8506918250195891051&amp;isPopup=true' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/8506918250195891051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/8506918250195891051'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2010/03/detektor-beban-220-volt-ac-2.html' title='Detektor beban 220 Volt AC (2)'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_05CaZNXNb7o/S4ydqkcpz3I/AAAAAAAAAV0/VEUrmWJs97s/s72-c/bingung_thumb%5B1%5D.gif?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-440596522242895314</id><published>2010-02-28T13:58:00.001+07:00</published><updated>2010-02-28T13:58:34.597+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><title type='text'>Detektor Beban 220Volt AC</title><content type='html'>&lt;p&gt;Pada aplikasi controlling system secara wireless entah itu pake’&amp;#160; GSM, RF atau Bluetooth pendeteksian kondisi beban adalah hal yang penting. Contohnya pada controlling home appliance pake HP, saat operator ingin menyalakan lampu depan rumah dia mengirim perintah melalui SMS. Saat SMS dah dikirim tentu si Operator bakal mikir&amp;#160; apa Lampunya udah ON ato masih OFF?/&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/S4oT--nXmwI/AAAAAAAAAUI/__mYMAD5L-c/s1600-h/bingung%5B2%5D.gif"&gt;&lt;img title="bingung" style="display: inline" height="30" alt="bingung" src="http://lh3.ggpht.com/_05CaZNXNb7o/S4oT_q8CSvI/AAAAAAAAAUM/zFqc0ONgVKY/bingung_thumb.gif?imgmax=800" width="30" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nah… disini pentingnya sensor untuk mendeteksi kondisi beban. &lt;/p&gt;  &lt;p&gt;Ada beberapa ide saat saya ketemu persoalan ini.. setelah tanya “ngalor-ngidul” ke temen2 n gak ketinggalan juga minta wangsit ama mbah google akhirnya ketemu solusi yg bener2 TOPbangetz.z…&amp;#160; super duper ultra low cost…&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/S4oUAr7JVmI/AAAAAAAAAUQ/ruMd-BeHjSQ/s1600-h/image%5B4%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="234" alt="image" src="http://lh3.ggpht.com/_05CaZNXNb7o/S4oUBrs-p2I/AAAAAAAAAUU/l63SZ77ImvI/image_thumb%5B2%5D.png?imgmax=800" width="365" border="0" /&gt;&lt;/a&gt; Gambar nich ketemunya di pojokan internet tepatnya di &lt;a href="http://sound.westhost.com/project40.htm"&gt;http://sound.westhost.com/project40.htm&lt;/a&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;Component List:&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;D1,D2,D3,D4&lt;/strong&gt; = dioda IN4002&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;D5&lt;/strong&gt;= LED 5mm&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;LDR1&lt;/strong&gt;=LDR&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;prinsipnya saat sensor ini memanfaatkan nyala LED untuk merubah nilai resistansi LDR. agar nilai resistansi LDR tidak dipengaruhi cahaya dari luar maka LED dan LDR dibungkus pake’ &lt;em&gt;heatshrink tube. &lt;/em&gt;Saat dirangkai ama beban rangkaiannya berubah bentuk jadi kek gini:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/S4oUCUfJmZI/AAAAAAAAAUY/tZMtx1s1v18/s1600-h/image%5B18%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="182" alt="image" src="http://lh5.ggpht.com/_05CaZNXNb7o/S4oUDCMGORI/AAAAAAAAAUc/YEfKSsPRyIA/image_thumb%5B12%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt;&amp;#160; Pasti ada pertanyaan ngapain ada rangkaian seri D1,D2,D3??? &lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/S4oUDycg3AI/AAAAAAAAAUg/0P8WZ13t2Xs/s1600-h/hi%5B2%5D.gif"&gt;&lt;img title="hi" style="display: inline" height="30" alt="hi" src="http://lh6.ggpht.com/_05CaZNXNb7o/S4oUE1aMdfI/AAAAAAAAAUk/4oCLcbHB5kg/hi_thumb.gif?imgmax=800" width="30" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Usut punya usut 3 diode ini diperluin buat beda potensial antara 2 titik LED sehingga LEDnya bisa nyala. Tegangan jatuh diode kan sekita 0,7 Volt klo 3 berarti 2,1 Volt. Ane dah nyoba D1 aja gak nyala LEDnya, coba D1+D2 tetep gak nyala,,,&lt;/p&gt;    &lt;p&gt;Gua juga ada ide ngapain kok gak pake OptoCoupler macam 4n25 ato PC817??? kan ndak praktiss…&amp;#160; hehehee ana coba dan hasilnya…… PC817nya meleduk.. langsung short&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/S4oUFVyLUEI/AAAAAAAAAUo/G_pipeURugg/s1600-h/capek%5B2%5D.gif"&gt;&lt;img title="capek" style="display: inline" height="30" alt="capek" src="http://lh3.ggpht.com/_05CaZNXNb7o/S4oUGRsr7oI/AAAAAAAAAUs/YAfA6YzHbcE/capek_thumb.gif?imgmax=800" width="30" /&gt;&lt;/a&gt;… mungkin ini karena nilai R nya perlu digedein tapi berhubung dah gak ada waktu buat coba-coba ,, kita pake LED aja dech..&amp;#160; Klo sohib2 ntar ada yg berhasil pake PC817 ato 4n25&amp;#160; tlong share ya….&amp;#160; ^_^&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;strong&gt;Alur Kerja Sensor:&lt;/strong&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Saat switch terbuka, lampu off gak ada arus listrik yg nyalain LED sehingga resistansi LDR&amp;#160; gedhe banget (tak terhingga).&lt;/p&gt;      &lt;p&gt;Begitu switch ditutup, lampu “ON” dan arus listrik yg mengalir, menghidupkan LED membuat nilai resistansi LDR jadi kecil.&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Perubahan nilai resistansi LDR ini yang bisa dijadikan acuan sistem apakah beban (dalam kasus ini lampu) dah ON apa blum…&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s share…&amp;#160; ide /saran/kritik kirim aja ke &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Copyright&amp;#160; ©&amp;#160; &lt;a href="http://AVRku.blogspot.com"&gt;AVRku.blogspot.com&lt;/a&gt;&lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-440596522242895314?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/440596522242895314/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=440596522242895314&amp;isPopup=true' title='15 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/440596522242895314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/440596522242895314'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2010/02/detektor-beban-220volt-ac.html' title='Detektor Beban 220Volt AC'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_05CaZNXNb7o/S4oT_q8CSvI/AAAAAAAAAUM/zFqc0ONgVKY/s72-c/bingung_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-4474750645478629123</id><published>2010-02-26T10:26:00.001+07:00</published><updated>2010-02-26T10:26:03.537+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Deteksi Level Air via RFM12B</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/S4c-_JrBVbI/AAAAAAAAASs/jtPt0gC203U/s1600-h/clip_image002%5B6%5D%5B2%5D.jpg"&gt;&lt;img title="clip_image002[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="210" alt="clip_image002[6]" src="http://lh6.ggpht.com/_05CaZNXNb7o/S4c_ANSyQEI/AAAAAAAAASw/tM2-fIVbzCA/clip_image002%5B6%5D_thumb.jpg?imgmax=800" width="207" border="0" /&gt;&lt;/a&gt;Kita akan membahas sebuah project untuk mendeteksi level air bendungan/sungai. Fungsi pendeteksian ini untuk memberi peringatan dini jika level air pada bendungan melebihi batas dan dikhawatirkan terjadi banjir. Sensor level air terpasang di bendungan sedang ruang operator berjarak&amp;#160; ratusan meter dari letak sensor. Agar operator bisa mengetahui kondisi level air&amp;#160; maka diperlukan pengiriman data sensor ke display ruang operator. Jika&amp;#160; menggunakan kabel sebagai media pengiriman data , ini akan berdampak pada biaya dan rumitnya instalasi. &lt;/p&gt;  &lt;p&gt;Solusi yg efisien dalam transmisi data adalah menggunakan sistem wireless (tanpa kabel), salah satu yg sistem wireless yg umum digunakan yaitu gelombang RF (Radio Frequency). Dlm project ini kita memakai RFM12B sebagai RF transceiver&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/S4c_Epr_USI/AAAAAAAAAS0/vCvJUoNaXGY/s1600-h/image%5B11%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="484" alt="image" src="http://lh4.ggpht.com/_05CaZNXNb7o/S4c_J0LVVGI/AAAAAAAAAS4/8_gHrwgmlsA/image_thumb%5B7%5D.png?imgmax=800" width="639" border="0" /&gt;&lt;/a&gt; RFM12B dibuat oleh HOPE RF, modul ini mudah digunakan dan harganya yang relatif lebih murah jika dibandingkan dengan XBee Pro. RFM12B Bisa digunakan sebagai Pengirim (Transmitter) maupun penerima (Receiver) Tapi saya kesulitan saat bikin PCBnya, karena pake RFM12B dengan package SMD, buat temen2 saya saranin cari package yang sudah dilengkapi connector biar tinggal colok aja&amp;#160; ke microcontroller.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Berikut Gambar rangkaian yang saya gunakan:&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Transmitter&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/S4c_L1WD-oI/AAAAAAAAAS8/JR0D7FzO63Y/s1600-h/TX%28.JPG%29%5B6%5D.jpg"&gt;&lt;img title="TX(.JPG)" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="484" alt="TX(.JPG)" src="http://lh3.ggpht.com/_05CaZNXNb7o/S4c_M4BgOEI/AAAAAAAAATA/ZQt3bfWmLv8/TX%28.JPG%29_thumb%5B4%5D.jpg?imgmax=800" width="581" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;u&gt;&lt;font color="#cc0000"&gt;&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Receiver&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;a&gt;&lt;u&gt;&lt;font color="#cc0000"&gt;&lt;/font&gt;&lt;/u&gt;&lt;img title="RX(JPG)" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="342" alt="RX(JPG)" src="http://lh3.ggpht.com/_05CaZNXNb7o/S4c_NyrAeBI/AAAAAAAAATE/o4vyw2t9teg/RX%28JPG%29_thumb%5B2%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Alur Kerja:&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Saat sensor aktif (terhubung ke +9V), maka Transmitter akan mengirim karakter-karakter khusus yang mewakili setiap sensor.&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Jika sensor Level Air Rendah aktif karakter yang dikirimkan adalah &lt;b&gt;R&lt;/b&gt; &lt;/li&gt;      &lt;li&gt;Jika sensor Level Air Normal aktif karakter yang dikirimkan adalah &lt;b&gt;N&lt;/b&gt; &lt;/li&gt;      &lt;li&gt;Jika sensor Level Air Tinggi aktif karakter yang dikirimkan adalah &lt;b&gt;T&lt;/b&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Jika ada 2 atau 3 sensor yang aktif bersamaan maka karakter yang dikirim adalah sensor Level yang lebih tinggi.&lt;/p&gt;    &lt;p&gt;Jika tidak ada sensor yang aktif, maka karakter yang dikirim adalah karakter &lt;b&gt;O&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Receiver akan menunggu karakter-karakter diatas (&lt;b&gt;R,N,T&lt;/b&gt; atau &lt;b&gt;O&lt;/b&gt;), jika tidak ada karakter yang diterima maka LCD akan menampilkan: &lt;b&gt;MENUNGGU DATA…&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Saat karakter &lt;b&gt;T&lt;/b&gt; diterima (tanda bahwa Sensor Level Air Tinggi aktif), maka relay akan ON. Dengan aktifnya relay otomatis Alarm akan aktif.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Prinsip kerja sensor:&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/S4c_Ozi9rCI/AAAAAAAAATI/MUn-N1OmmL8/s1600-h/clip_image002%5B8%5D%5B7%5D.jpg"&gt;&lt;img title="clip_image002[8]" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="334" alt="clip_image002[8]" src="http://lh5.ggpht.com/_05CaZNXNb7o/S4c_P7GiF-I/AAAAAAAAATM/8COAJDRoHUU/clip_image002%5B8%5D_thumb%5B5%5D.jpg?imgmax=800" width="580" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;Saat tidak ada air, tegangan tidak masuk ke kaki 1 ic 4n25, ini menyebabkan kaki 5 (colector) tidak terhubung ke emitor (kaki 4) / ground. Maka input microcontroller akan tetap berlogika HIGH (5 V).&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/S4c_Q2AIWbI/AAAAAAAAATQ/XQ8KFvVcNf0/s1600-h/clip_image002%5B10%5D%5B3%5D.jpg"&gt;&lt;img title="clip_image002[10]" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="332" alt="clip_image002[10]" src="http://lh6.ggpht.com/_05CaZNXNb7o/S4c_SDI6StI/AAAAAAAAATU/FMhqhV-NsQo/clip_image002%5B10%5D_thumb%5B1%5D.jpg?imgmax=800" width="580" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Saat ada air, maka tegangan dari +9V masuk ke kaki 1. Tegangan yang masuk ini berkisar 7 volt karena besarnya resistansi air.Dengan adanya tegangan, maka led didalam IC 4n25 akan menyala sehingga mengkaktifkan sisi output. Sisi output IC 4n25 dikatakan aktif jika collector dan emitornya terhubung.&lt;/p&gt;    &lt;p&gt;Saat kaki Colector terhubung ke Emitor ini berarti colector terhubung ke ground. Aliran arus listrik akan menuju ground. Sehingga input microcontroller berlogika LOW.&lt;/p&gt;    &lt;p&gt;Dengan system inilah microcontroller mengetahui perubahan level air.&lt;/p&gt;    &lt;p&gt;Seperti yang diterangkan di awal microcontroller pada sisi transmitter akan mengirim karakter sesuai kondisi inputan sensor nya.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Code program sisi Transmitter:&lt;/strong&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;/*****************************************************&lt;/p&gt;      &lt;p&gt;Chip type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : ATmega8535        &lt;br /&gt;Program type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Application         &lt;br /&gt;Clock frequency&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 4.000000 MHz         &lt;br /&gt;Memory model&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Small         &lt;br /&gt;External SRAM size&amp;#160; : 0         &lt;br /&gt;Data Stack size&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 128         &lt;br /&gt;*****************************************************/ &lt;/p&gt;      &lt;p&gt;#include &amp;lt;mega8535.h&amp;gt;        &lt;br /&gt;#include &amp;lt;delay.h&amp;gt;         &lt;br /&gt;#include &amp;lt;stdio.h&amp;gt; &lt;/p&gt;      &lt;p&gt;#define SCK 2&amp;#160;&amp;#160; // SPI clock        &lt;br /&gt;#define SDO 0&amp;#160;&amp;#160; // SPI Data output (RFM12B side) //MOSI         &lt;br /&gt;#define SDI 1&amp;#160;&amp;#160; // SPI Data input (RFM12B side)&amp;#160; //MISO         &lt;br /&gt;#define CS&amp;#160; 3&amp;#160;&amp;#160; // SPI SS (chip select)         &lt;br /&gt;#define NIRQ 4&amp;#160; // (PORTD) &lt;/p&gt;      &lt;p&gt;#define HI(x) PORTA |= (1&amp;lt;&amp;lt;(x))        &lt;br /&gt;#define LO(x) PORTA &amp;amp;= ~(1&amp;lt;&amp;lt;(x))         &lt;br /&gt;#define WAIT_NIRQ_LOW() while(PINA&amp;amp;(1&amp;lt;&amp;lt;NIRQ)) &lt;/p&gt;      &lt;p&gt;#define LED 6        &lt;br /&gt;#define LED_OFF() PORTD &amp;amp;= ~(1&amp;lt;&amp;lt;LED)         &lt;br /&gt;#define LED_ON() PORTD |= (1&amp;lt;&amp;lt;LED) &lt;/p&gt;      &lt;p&gt;#define level_rendah PIND.0        &lt;br /&gt;#define level_normal PIND.1         &lt;br /&gt;#define level_tinggi PIND.2 &lt;/p&gt;      &lt;p&gt;void portInit()        &lt;br /&gt;{         &lt;br /&gt;&amp;#160; HI(CS);         &lt;br /&gt;&amp;#160; HI(SDI);         &lt;br /&gt;&amp;#160; LO(SCK);         &lt;br /&gt;&amp;#160; PORTA.4=1;         &lt;br /&gt;&amp;#160; DDRA = (1&amp;lt;&amp;lt;CS) | (1&amp;lt;&amp;lt;SDI) | (1&amp;lt;&amp;lt;SCK);         &lt;br /&gt;&amp;#160; //DDRD = (1&amp;lt;&amp;lt;LED);         &lt;br /&gt;&amp;#160; DDRD=0xf0;         &lt;br /&gt;&amp;#160; PORTD=0x0f;         &lt;br /&gt;} &lt;/p&gt;      &lt;p&gt;unsigned int writeCmd(unsigned int cmd)        &lt;br /&gt;{         &lt;br /&gt;&amp;#160; unsigned char i;         &lt;br /&gt;&amp;#160; unsigned int recv;         &lt;br /&gt;&amp;#160; recv = 0;         &lt;br /&gt;&amp;#160; LO(SCK);         &lt;br /&gt;&amp;#160; LO(CS);         &lt;br /&gt;&amp;#160; for(i=0; i&amp;lt;16; i++) {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if(cmd&amp;amp;0x8000) HI(SDI); else LO(SDI);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; HI(SCK);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; recv&amp;lt;&amp;lt;=1;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if( PINA&amp;amp;(1&amp;lt;&amp;lt;SDO) ) {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recv|=0x0001;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LO(SCK);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cmd&amp;lt;&amp;lt;=1;         &lt;br /&gt;&amp;#160; }         &lt;br /&gt;&amp;#160; HI(CS);         &lt;br /&gt;&amp;#160; return recv;         &lt;br /&gt;} &lt;/p&gt;      &lt;p&gt;void rfInit() {        &lt;br /&gt;&amp;#160; writeCmd(0x80E7); //EL,EF,868band,12.0pF         &lt;br /&gt;&amp;#160; writeCmd(0x8239); //!er,!ebb,ET,ES,EX,!eb,!ew,DC         &lt;br /&gt;&amp;#160; writeCmd(0xA640); //frequency select         &lt;br /&gt;&amp;#160; writeCmd(0xC647); //4.8kbps         &lt;br /&gt;&amp;#160; writeCmd(0x94A0); //VDI,FAST,134kHz,0dBm,-103dBm         &lt;br /&gt;&amp;#160; writeCmd(0xC2AC); //AL,!ml,DIG,DQD4         &lt;br /&gt;&amp;#160; writeCmd(0xCA81); //FIFO8,SYNC,!ff,DR         &lt;br /&gt;&amp;#160; writeCmd(0xCED4); //SYNC=2DD4G         &lt;br /&gt;&amp;#160; writeCmd(0xC483); //@PWR,NO RSTRIC,!st,!fi,OE,EN         &lt;br /&gt;&amp;#160; writeCmd(0x9850); //!mp,90kHz,MAX OUT         &lt;br /&gt;&amp;#160; writeCmd(0xCC17); //OB1COB0, LPX,IddyCDDITCBW0         &lt;br /&gt;&amp;#160; writeCmd(0xE000); //NOT USE         &lt;br /&gt;&amp;#160; writeCmd(0xC800); //NOT USE         &lt;br /&gt;&amp;#160; writeCmd(0xC040); //1.66MHz,2.2V         &lt;br /&gt;} &lt;/p&gt;      &lt;p&gt;void rfSend(unsigned char data)        &lt;br /&gt;{         &lt;br /&gt;&amp;#160; WAIT_NIRQ_LOW();         &lt;br /&gt;&amp;#160; writeCmd(0xB800 + data);         &lt;br /&gt;} &lt;/p&gt;      &lt;p&gt;void main(void)        &lt;br /&gt;{         &lt;br /&gt;unsigned char data_rf; &lt;/p&gt;      &lt;p&gt;#asm(&amp;quot;cli&amp;quot;);        &lt;br /&gt;//for(i=0;i&amp;lt;1000;i++)for(j=0;j&amp;lt;123;j++);         &lt;br /&gt;portInit();         &lt;br /&gt;rfInit(); &lt;/p&gt;      &lt;p&gt;// Analog Comparator initialization        &lt;br /&gt;// Analog Comparator: Off         &lt;br /&gt;// Analog Comparator Input Capture by Timer/Counter 1: Off         &lt;br /&gt;ACSR=0x80;         &lt;br /&gt;SFIOR=0x00; &lt;/p&gt;      &lt;p&gt;while (1)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Place your code here         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(level_tinggi==0)data_rf='T';&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if(level_normal==0)data_rf='N';         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if(level_rendah==0)data_rf='R';         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else data_rf='O';         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LED_ON();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; delay_ms(1000);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; writeCmd(0x0000);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(0xAA); // PREAMBLE         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(0xAA);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(0xAA);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(0x2D); // SYNC         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(0xD4);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Data yang akan dikirim         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(data_rf);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ///////////////         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(0xAA); // DUMMY BYTES         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(0xAA);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rfSend(0xAA);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LED_OFF();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; delay_ms(100);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };         &lt;br /&gt;}&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Code Program Receiver:&lt;/strong&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;/*****************************************************        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;Chip type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : ATmega8535        &lt;br /&gt;Program type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Application         &lt;br /&gt;Clock frequency&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 4.000000 MHz         &lt;br /&gt;Memory model&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Small         &lt;br /&gt;External SRAM size&amp;#160; : 0         &lt;br /&gt;Data Stack size&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 128         &lt;br /&gt;*****************************************************/ &lt;/p&gt;      &lt;p&gt;#include &amp;lt;mega8535.h&amp;gt;        &lt;br /&gt;#include &amp;lt;delay.h&amp;gt;         &lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;         &lt;br /&gt;#include &amp;lt;lcd.h&amp;gt; &lt;/p&gt;      &lt;p&gt;#define SCK 2&amp;#160;&amp;#160; // SPI clock        &lt;br /&gt;#define SDO 0&amp;#160;&amp;#160; // SPI Data output (RFM12B side) //MOSI         &lt;br /&gt;#define SDI 1&amp;#160;&amp;#160; // SPI Data input (RFM12B side)&amp;#160; //MISO         &lt;br /&gt;#define CS&amp;#160; 3&amp;#160;&amp;#160; // SPI SS (chip select)         &lt;br /&gt;#define NIRQ 4&amp;#160; &lt;/p&gt;      &lt;p&gt;#define HI(x) PORTA |= (1&amp;lt;&amp;lt;(x))        &lt;br /&gt;#define LO(x) PORTA &amp;amp;= ~(1&amp;lt;&amp;lt;(x))         &lt;br /&gt;#define WAIT_NIRQ_LOW() while(PINA&amp;amp;(1&amp;lt;&amp;lt;NIRQ)) &lt;/p&gt;      &lt;p&gt;#define ALARM PORTD.6        &lt;br /&gt;//#define LED 6         &lt;br /&gt;//#define LED_OFF() PORTD &amp;amp;= ~(1&amp;lt;&amp;lt;LED)         &lt;br /&gt;//#define LED_ON() PORTD |= (1&amp;lt;&amp;lt;LED) &lt;/p&gt;      &lt;p&gt;// Alphanumeric LCD Module functions        &lt;br /&gt;#asm         &lt;br /&gt;&amp;#160;&amp;#160; .equ __lcd_port=0x15 ;PORTC         &lt;br /&gt;#endasm &lt;/p&gt;      &lt;p&gt;// Declare your global variables here        &lt;br /&gt;char buff[16]; &lt;/p&gt;      &lt;p&gt;void portInit()        &lt;br /&gt;{         &lt;br /&gt;&amp;#160; HI(CS);         &lt;br /&gt;&amp;#160; HI(SDI);         &lt;br /&gt;&amp;#160; LO(SCK);         &lt;br /&gt;&amp;#160; PORTA.0=1;         &lt;br /&gt;&amp;#160; PORTA.4=1;         &lt;br /&gt;&amp;#160; DDRA = (1&amp;lt;&amp;lt;CS) | (1&amp;lt;&amp;lt;SDI) | (1&amp;lt;&amp;lt;SCK);         &lt;br /&gt;&amp;#160; DDRD = 0xff;         &lt;br /&gt;&amp;#160; PORTD=0x00;         &lt;br /&gt;} &lt;/p&gt;      &lt;p&gt;unsigned int writeCmd(unsigned int cmd)        &lt;br /&gt;{         &lt;br /&gt;&amp;#160; unsigned char i;         &lt;br /&gt;&amp;#160; unsigned int recv;         &lt;br /&gt;&amp;#160; recv = 0;         &lt;br /&gt;&amp;#160; LO(SCK);         &lt;br /&gt;&amp;#160; LO(CS);         &lt;br /&gt;&amp;#160; for(i=0; i&amp;lt;16; i++) {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if(cmd&amp;amp;0x8000) HI(SDI); else LO(SDI);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; HI(SCK);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; recv&amp;lt;&amp;lt;=1;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if( PINA&amp;amp;(1&amp;lt;&amp;lt;SDO) ) {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recv|=0x0001;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LO(SCK);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cmd&amp;lt;&amp;lt;=1;         &lt;br /&gt;&amp;#160; }         &lt;br /&gt;&amp;#160; HI(CS);         &lt;br /&gt;&amp;#160; return recv;         &lt;br /&gt;} &lt;/p&gt;      &lt;p&gt;void rfInit() {        &lt;br /&gt;&amp;#160; writeCmd(0x80E7); //EL,EF,868band,12.0pF         &lt;br /&gt;&amp;#160; writeCmd(0x8299); //er,!ebb,ET,ES,EX,!eb,!ew,DC         &lt;br /&gt;&amp;#160; writeCmd(0xA640); //frequency select         &lt;br /&gt;&amp;#160; writeCmd(0xC647); //4.8kbps         &lt;br /&gt;&amp;#160; writeCmd(0x94A0); //VDI,FAST,134kHz,0dBm,-103dBm         &lt;br /&gt;&amp;#160; writeCmd(0xC2AC); //AL,!ml,DIG,DQD4         &lt;br /&gt;&amp;#160; writeCmd(0xCA81); //FIFO8,SYNC,!ff,DR         &lt;br /&gt;&amp;#160; writeCmd(0xCED4); //SYNC=2DD4G         &lt;br /&gt;&amp;#160; writeCmd(0xC483); //@PWR,NO RSTRIC,!st,!fi,OE,EN         &lt;br /&gt;&amp;#160; writeCmd(0x9850); //!mp,90kHz,MAX OUT         &lt;br /&gt;&amp;#160; writeCmd(0xCC17); //OB1COB0, LPX,IddyCDDITCBW0         &lt;br /&gt;&amp;#160; writeCmd(0xE000); //NOT USE         &lt;br /&gt;&amp;#160; writeCmd(0xC800); //NOT USE         &lt;br /&gt;&amp;#160; writeCmd(0xC040); //1.66MHz,2.2V         &lt;br /&gt;}         &lt;br /&gt;/*         &lt;br /&gt;void rfSend(unsigned char data)         &lt;br /&gt;{         &lt;br /&gt;&amp;#160; WAIT_NIRQ_LOW();         &lt;br /&gt;&amp;#160; writeCmd(0xB800 + data);         &lt;br /&gt;}         &lt;br /&gt;*/         &lt;br /&gt;void FIFOReset()         &lt;br /&gt;{         &lt;br /&gt;&amp;#160; writeCmd(0xCA81);         &lt;br /&gt;&amp;#160; writeCmd(0xCA83);         &lt;br /&gt;} &lt;/p&gt;      &lt;p&gt;/*unsigned char rfRecv()        &lt;br /&gt;{         &lt;br /&gt;&amp;#160; unsigned int data;         &lt;br /&gt;&amp;#160; writeCmd(0x0000);         &lt;br /&gt;&amp;#160; data = writeCmd(0xB000);         &lt;br /&gt;&amp;#160; return (data&amp;amp;0x00FF);         &lt;br /&gt;}*/ &lt;/p&gt;      &lt;p&gt;unsigned char rfRecv()        &lt;br /&gt;{         &lt;br /&gt;&amp;#160; unsigned int data;         &lt;br /&gt;&amp;#160; while(1)         &lt;br /&gt;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; data = writeCmd(0x0000);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if ( (data&amp;amp;0x8000) )         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data = writeCmd(0xB000);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return (data&amp;amp;0x00FF);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160; }&amp;#160; &lt;br /&gt;} &lt;/p&gt;      &lt;p&gt;void main(void)        &lt;br /&gt;{         &lt;br /&gt;unsigned char data_rf; &lt;/p&gt;      &lt;p&gt;#asm(&amp;quot;cli&amp;quot;);        &lt;br /&gt;//for(i=0;i&amp;lt;1000;i++)for(j=0;j&amp;lt;123;j++);         &lt;br /&gt;portInit();         &lt;br /&gt;rfInit();         &lt;br /&gt;FIFOReset(); &lt;/p&gt;      &lt;p&gt;// Analog Comparator initialization        &lt;br /&gt;// Analog Comparator: Off         &lt;br /&gt;// Analog Comparator Input Capture by Timer/Counter 1: Off         &lt;br /&gt;ACSR=0x80;         &lt;br /&gt;SFIOR=0x00; &lt;/p&gt;      &lt;p&gt;// LCD module initialization        &lt;br /&gt;lcd_init(16);         &lt;br /&gt;lcd_putsf(&amp;quot;ALAT PENDETEKSI &amp;quot;);         &lt;br /&gt;lcd_gotoxy(0,1);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;lcd_putsf(&amp;quot;&amp;#160;&amp;#160;&amp;#160; BANJIR&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;);         &lt;br /&gt;delay_ms(2000); &lt;/p&gt;      &lt;p&gt;lcd_clear();        &lt;br /&gt;lcd_putsf(&amp;quot;&amp;#160; MENGGUNAKAN&amp;#160; &amp;quot;);         &lt;br /&gt;lcd_gotoxy(0,1);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;lcd_putsf(&amp;quot;KOMUNIKASI RADIO&amp;quot;);         &lt;br /&gt;delay_ms(2000); &lt;/p&gt;      &lt;p&gt;lcd_clear();        &lt;br /&gt;lcd_putsf(&amp;quot;Menunggu Data..&amp;quot;);         &lt;br /&gt;while (1)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Place your code here         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_rf = rfRecv();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FIFOReset();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_clear();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(data_rf=='O')         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_putsf(&amp;quot;Koneksi OK..&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if(data_rf=='R')         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_putsf(&amp;quot;Level Air Rendah&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ALARM=0;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if(data_rf=='N')         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_putsf(&amp;quot;Level Air Normal&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ALARM=0;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if(data_rf=='T')         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_putsf(&amp;quot;Level Air Tinggi&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ALARM=1;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_putsf(&amp;quot;Koneksi Gagal&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; buff[0]=data_rf;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_gotoxy(0,1);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_puts(buff);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; delay_ms(1000);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_clear();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lcd_putsf(&amp;quot;Menunggu Data..&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //if(data_rf=='T')ALARM=1;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //else ALARM=0;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };         &lt;br /&gt;}&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font size="5"&gt;&lt;a href="http://www.ziddu.com/download/8741694/RFM12.rar.html" target="_blank"&gt;DOWNLOAD source code program, gambar rangkaian klik disini&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Yuppss…. sekarang jangan duduk aja… cepet buat project mu…&lt;/p&gt;    &lt;p&gt;Transmisi data memakai RFM12B ini bisa dikembangin jadi wireless data acquisition misal: membaca nilai suhu dan temperatur ato aplikasi remote control… &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s share…&amp;#160; ide /saran/kritik kirim aja ke &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Copyright&amp;#160; ©&amp;#160; &lt;a href="http://AVRku.blogspot.com"&gt;AVRku.blogspot.com&lt;/a&gt;&lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-4474750645478629123?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/4474750645478629123/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=4474750645478629123&amp;isPopup=true' title='4 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/4474750645478629123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/4474750645478629123'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2010/02/deteksi-level-air-via-rfm12b.html' title='Deteksi Level Air via RFM12B'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_05CaZNXNb7o/S4c_ANSyQEI/AAAAAAAAASw/tM2-fIVbzCA/s72-c/clip_image002%5B6%5D_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-5792961234564059009</id><published>2010-02-25T07:00:00.004+07:00</published><updated>2010-02-25T11:35:09.357+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>CodeVision AVR Program Untuk Hitachi H48C</title><content type='html'>&lt;p&gt;&lt;img src="http://lh5.ggpht.com/_05CaZNXNb7o/S4X4LXUOYEI/AAAAAAAAASg/7dqSLlq42GY/zrclip_005p47374f92.png?imgmax=288" style="DISPLAY: inline; WIDTH: 243px; HEIGHT: 169px" height="169" width="243" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span class="Apple-style-span"   style=" LINE-HEIGHT: 19px; font-family:Arial, Tahoma, Verdana;font-size:12px;"&gt;H48C adalah sensor yang biasa digunakan untuk mendeteksi kemiringan robot. Sensor ini mampu mendeteksi gaya gravitasi dalam tiga sumbu(X,Y,Z).&lt;span style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px" class="fullpost"&gt;
Karena H48C membutuhkan tegangan 3,3 Volt (&lt;span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic"&gt;tentu ini sangat merepotkan karena tegangan kerja microcontroller AVR rata-rata 5 volt)&lt;/span&gt;, Parallax menciptakan sebuah module integrasi H48C dengan ADC 12 bit &lt;span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px" id="dnn_ctr570_ContentPane" class="DNNAlignleft"&gt;&lt;span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px" id="dnn_ctr570_ProductPage_lblItemHtmlHolder"&gt;MCP3204 yg dilengkapi regulator tegangan sehingga kita bisa menggunakannya dengan tegangan kerja 5 volt. Module buatan Parallax ini bisa dilihat seperti gambar di atas.

Data yang dihasilkan Module H48C diakses dengan komunikasi &lt;span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic"&gt;Synchronous Serial Interface.&lt;/span&gt;Microcontroller memerlukan 3 pin untuk komunikasi ini yakni Clokc, DI/O dan CS.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="fullpost"&gt;
&lt;p&gt;&lt;span style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span class="Apple-style-span"   style=" LINE-HEIGHT: 19px; font-family:Arial, Tahoma, Verdana;font-size:12px;"&gt;Di artikel ini saya akan menyertakan contoh program CodeVision AVR untuk menampilkan data yg dihasilkan module H48C ke hyperterminal(anda bisa menggunakan aplikasi komunikasi serial RS232 yg lain) dengan baudrate 9600 bps.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span class="Apple-style-span"   style=" LINE-HEIGHT: 19px; font-family:Arial, Tahoma, Verdana;font-size:12px;"&gt;&lt;img src="http://lh5.ggpht.com/_05CaZNXNb7o/S4X4MFgTsuI/AAAAAAAAASk/lO7JwuCSSaM/zrclip_006n7360d2aa.png?imgmax=512" height="215" width="404" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;#include &lt;mega8535.h&gt;&lt;/p&gt;&lt;p&gt;#include &lt;delay.h&gt;&lt;/p&gt;&lt;p&gt;#include &lt;stdio.h&gt;&lt;/p&gt;&lt;p&gt;#define CS PORTB.2    //koneksi pin mikro ke H48C&lt;/p&gt;&lt;p&gt;#define Do PORTB.0&lt;/p&gt;&lt;p&gt;#define Di PINB.0    &lt;/p&gt;&lt;p&gt;#define CLK PORTB.1   &lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;#define DATA_IN 0b11111110&lt;/p&gt;&lt;p&gt;#define DATA_OUT 0b11111111&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;#define RXB8 1&lt;/p&gt;&lt;p&gt;#define TXB8 0&lt;/p&gt;&lt;p&gt;#define UPE 2&lt;/p&gt;&lt;p&gt;#define OVR 3&lt;/p&gt;&lt;p&gt;#define FE 4&lt;/p&gt;&lt;p&gt;#define UDRE 5&lt;/p&gt;&lt;p&gt;#define RXC 7&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;#define FRAMING_ERROR(1&lt;&lt;fe)&lt;/p&gt;&lt;p&gt;#define PARITY_ERROR (1&lt;&lt;upe)&lt;/p&gt;&lt;p&gt;#define DATA_OVERRUN (1&lt;&lt;ovr)&lt;/p&gt;&lt;p&gt;#define DATA_REGISTER_EMPTY (1&lt;&lt;udre)&lt;/p&gt;&lt;p&gt;#define RX_COMPLETE (1&lt;&lt;rxc)&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;// USART Receiver buffer&lt;/p&gt;&lt;p&gt;#define RX_BUFFER_SIZE 8&lt;/p&gt;&lt;p&gt;char rx_buffer[RX_BUFFER_SIZE];&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;#if RX_BUFFER_SIZE&lt;256&lt;/p&gt;&lt;p&gt;unsigned char rx_wr_index,rx_rd_index,rx_counter;&lt;/p&gt;&lt;p&gt;#else&lt;/p&gt;&lt;p&gt;unsigned int rx_wr_index,rx_rd_index,rx_counter;&lt;/p&gt;&lt;p&gt;#endif&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;// This flag is set on USART Receiver buffer overflow&lt;/p&gt;&lt;p&gt;bit rx_buffer_overflow;&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;// USART Receiver interrupt service routine&lt;/p&gt;&lt;p&gt;interrupt [USART_RXC] void usart_rx_isr(void)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;char status,data;&lt;/p&gt;&lt;p&gt;status=UCSRA;&lt;/p&gt;&lt;p&gt;data=UDR;&lt;/p&gt;&lt;p&gt;if ((status &amp;amp; (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)&lt;/p&gt;&lt;p&gt;   {&lt;/p&gt;&lt;p&gt;   rx_buffer[rx_wr_index]=data;&lt;/p&gt;&lt;p&gt;   if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;&lt;/p&gt;&lt;p&gt;   if (++rx_counter == RX_BUFFER_SIZE)&lt;/p&gt;&lt;p&gt;      {&lt;/p&gt;&lt;p&gt;      rx_counter=0;&lt;/p&gt;&lt;p&gt;      rx_buffer_overflow=1;&lt;/p&gt;&lt;p&gt;      };&lt;/p&gt;&lt;p&gt;   };&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;#ifndef _DEBUG_TERMINAL_IO_&lt;/p&gt;&lt;p&gt;// Get a character from the USART Receiver buffer&lt;/p&gt;&lt;p&gt;#define _ALTERNATE_GETCHAR_&lt;/p&gt;&lt;p&gt;#pragma used+&lt;/p&gt;&lt;p&gt;char getchar(void)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;char data;&lt;/p&gt;&lt;p&gt;while (rx_counter==0);&lt;/p&gt;&lt;p&gt;data=rx_buffer[rx_rd_index];&lt;/p&gt;&lt;p&gt;if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;&lt;/p&gt;&lt;p&gt;#asm("cli")&lt;/p&gt;&lt;p&gt;--rx_counter;&lt;/p&gt;&lt;p&gt;#asm("sei")&lt;/p&gt;&lt;p&gt;return data;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;#pragma used-&lt;/p&gt;&lt;p&gt;#endif&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;void clock()&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;     CLK=0;&lt;/p&gt;&lt;p&gt;     delay_us(5);&lt;/p&gt;&lt;p&gt;     CLK=1;&lt;/p&gt;&lt;p&gt;     delay_us(5);&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;int read_HC(unsigned char axis)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int looping,hc; &lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;//start&lt;/p&gt;&lt;p&gt;      DDRB=DATA_OUT;&lt;/p&gt;&lt;p&gt;      CS=0;  &lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      Do=1;     //start bit&lt;/p&gt;&lt;p&gt;      clock();&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      Do=1;    //SGL/DIFF bit&lt;/p&gt;&lt;p&gt;      clock();&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;     //pilih channel &lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;     for(looping=3;looping&gt;0;looping--)&lt;/p&gt;&lt;p&gt;      {&lt;/p&gt;&lt;p&gt;      &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;Do=(axis&gt;&gt;(looping-1)) &amp;amp; 0x01;&lt;/p&gt;&lt;p&gt;      &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;clock(); &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;      }&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      DDRB=DATA_IN;&lt;/p&gt;&lt;p&gt;      Do=1;//Pull High pin Di/o&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      clock();// t sample bit&lt;/p&gt;&lt;p&gt;      clock();//null bit&lt;/p&gt;&lt;p&gt;      hc=0;&lt;/p&gt;&lt;p&gt;      for(looping=0;looping&lt;12;looping++)&lt;/p&gt;&lt;p&gt;      {&lt;/p&gt;&lt;p&gt;          CLK=0;&lt;/p&gt;&lt;p&gt;          delay_us(5);&lt;/p&gt;&lt;p&gt;          hc&lt;&lt;=1;&lt;/p&gt;&lt;p&gt;          hc|=Di;&lt;/p&gt;&lt;p&gt;          CLK=1;&lt;/p&gt;&lt;p&gt;          delay_us(5);&lt;/p&gt;&lt;p&gt;      }&lt;/p&gt;&lt;p&gt;      CS=1;&lt;/p&gt;&lt;p&gt;      //end&lt;/p&gt;&lt;p&gt;return hc;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;float konversi(int vRef,int vAxis) &lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;float f;&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;if (vAxis&gt;=vRef)f=(vAxis-vRef)*0.0022;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;if(vAxis&lt;vref)f=-(vref-vaxis)*0.0022;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;//f*=0.0022;&lt;/p&gt;&lt;p&gt;return f; &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;void main(void)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;int vRef,vX,vY,vZ;&lt;/p&gt;&lt;p&gt;float f;&lt;/p&gt;&lt;p&gt;PORTB=0xff;&lt;/p&gt;&lt;p&gt;DDRB=0xff;&lt;/p&gt;&lt;p&gt;CLK=1;&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;// USART initialization&lt;/p&gt;&lt;p&gt;// Communication Parameters: 8 Data, 1 Stop, No Parity&lt;/p&gt;&lt;p&gt;// USART Baud rate: 9600&lt;/p&gt;&lt;p&gt;UCSRA=0x00;&lt;/p&gt;&lt;p&gt;UCSRB=0x98;&lt;/p&gt;&lt;p&gt;UCSRC=0x86;&lt;/p&gt;&lt;p&gt;UBRRH=0x00;&lt;/p&gt;&lt;p&gt;UBRRL=0x19;&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;ACSR=0x80;&lt;/p&gt;&lt;p&gt;SFIOR=0x00;&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;// Global enable interrupts&lt;/p&gt;&lt;p&gt;#asm("sei")&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;printf("ok");&lt;/p&gt;&lt;p&gt;putchar(13);&lt;/p&gt;&lt;p&gt;putchar(10);&lt;/p&gt;&lt;p&gt;delay_ms(1000);&lt;/p&gt;&lt;p&gt;while (1)&lt;/p&gt;&lt;p&gt;      {&lt;/p&gt;&lt;p&gt;      vX=read_HC(0);&lt;/p&gt;&lt;p&gt;      printf("X axis= %d",vX);&lt;/p&gt;&lt;p&gt;      putchar(13);&lt;/p&gt;&lt;p&gt;      putchar(10);&lt;/p&gt;&lt;p&gt;                  &lt;/p&gt;&lt;p&gt;      vY=read_HC(1);&lt;/p&gt;&lt;p&gt;      printf("Y axis= %d",vY);&lt;/p&gt;&lt;p&gt;      putchar(13);&lt;/p&gt;&lt;p&gt;      putchar(10);&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      vZ=read_HC(2);&lt;/p&gt;&lt;p&gt;      printf("Z axis= %d",vZ);&lt;/p&gt;&lt;p&gt;      putchar(13);&lt;/p&gt;&lt;p&gt;      putchar(10);&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      vRef=read_HC(3);&lt;/p&gt;&lt;p&gt;      printf("Vreff= %d",vRef);&lt;/p&gt;&lt;p&gt;      putchar(13);&lt;/p&gt;&lt;p&gt;      putchar(10);&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      f=konversi(vRef,vX);&lt;/p&gt;&lt;p&gt;      printf("gForce X= %f",f);&lt;/p&gt;&lt;p&gt;      putchar(13);&lt;/p&gt;&lt;p&gt;      putchar(10);&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      f=konversi(vRef,vY);&lt;/p&gt;&lt;p&gt;      printf("gForce Y= %f",f);&lt;/p&gt;&lt;p&gt;      putchar(13);&lt;/p&gt;&lt;p&gt;      putchar(10);&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      f=konversi(vRef,vZ);&lt;/p&gt;&lt;p&gt;      printf("gForce Z= %f",f);&lt;/p&gt;&lt;p&gt;      putchar(13);&lt;/p&gt;&lt;p&gt;      putchar(10);&lt;/p&gt;&lt;p&gt;       &lt;/p&gt;&lt;p&gt;      delay_ms(1000);&lt;/p&gt;&lt;p&gt;      &lt;/p&gt;&lt;p&gt;      putchar(13);&lt;/p&gt;&lt;p&gt;      putchar(10);&lt;/p&gt;&lt;p&gt;      };&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;div&gt;
&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span class="Apple-style-span"   style=" LINE-HEIGHT: 19px; font-family:Arial, Tahoma, Verdana;font-size:12px;"&gt;Di artikel ini saya akan menyertakan contoh program CodeVision AVR untuk menampilkan data yg dihasilkan module H48C ke hyperterminal(anda bisa menggunakan aplikasi komunikasi serial RS232 yg lain) dengan baudrate 9600 bps.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span class="Apple-style-span"   style=" LINE-HEIGHT: 19px; font-family:Arial, Tahoma, Verdana;font-size:12px;"&gt;&lt;span style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span class="Apple-style-span"   style=" LINE-HEIGHT: 19px; font-family:Arial, Tahoma, Verdana;font-size:12px;"&gt;Saat pertama kali dijalankan, microcontroller akan mengirimkan karakter: &lt;span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;ok
&lt;/span&gt; ini untuk mengindikasikan bahwa komunikasi antara microcontroller dan PC sudah ok.

Setelah itu setiap detik microcontroller akan mengirimkan data:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: 0px 0px 0px 5px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none"&gt;
&lt;li style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 25px; PADDING-TOP: 0px; LIST-STYLE-TYPE: square"&gt;X axis&lt;/li&gt;
&lt;li style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 25px; PADDING-TOP: 0px; LIST-STYLE-TYPE: square"&gt;Y axis&lt;/li&gt;
&lt;li style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 25px; PADDING-TOP: 0px; LIST-STYLE-TYPE: square"&gt;Z axis&lt;/li&gt;
&lt;li style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 25px; PADDING-TOP: 0px; LIST-STYLE-TYPE: square"&gt;Vreff&lt;/li&gt;
&lt;li style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 25px; PADDING-TOP: 0px; LIST-STYLE-TYPE: square"&gt;Gforce X&lt;/li&gt;
&lt;li style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 25px; PADDING-TOP: 0px; LIST-STYLE-TYPE: square"&gt;Gforce Y&lt;/li&gt;
&lt;li style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 25px; PADDING-TOP: 0px; LIST-STYLE-TYPE: square"&gt;Gforce Z&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px;  PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0pxfont-size:16px;"&gt;&lt;a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,102,204); PADDING-TOP: 0px; TEXT-DECORATION: none" href="http://www.ziddu.com/downloadlink/8698864/Avr_Accelerometer.rar" target="new"&gt;Download Source Code klik disini&lt;/a&gt;&lt;/span&gt;


&lt;span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px;  PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0pxfont-size:16px;"&gt;&lt;a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,102,204); PADDING-TOP: 0px; TEXT-DECORATION: none" href="http://www.parallax.com/dl/docs/prod/acc/HitachiH48C3AxisAccelerometer.pdf" target="new"&gt;Download Data Sheet klik disini&lt;/a&gt;&lt;/span&gt;


program di atas hanya program contoh dan masih perlu perbaikan, mohon kritik dan sarannya ke &lt;span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;zigan@ymail.com&lt;/span&gt;


published in &lt;a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(0,102,204); PADDING-TOP: 0px; TEXT-DECORATION: none" href="http://avrku.blogspot.com/"&gt;http://avrku.blogspot.com&lt;/a&gt;&lt;/p&gt;
&lt;p xmlns="" class="poweredbyzoundry"&gt;Powered by &lt;a href="http://www.zoundryraven.com/" class="poweredbyzoundry_link" rel="nofollow"&gt;Zoundry Raven&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-5792961234564059009?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/5792961234564059009/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=5792961234564059009&amp;isPopup=true' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/5792961234564059009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/5792961234564059009'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2010/02/codevision-avr-program-untuk-hitachi_25.html' title='CodeVision AVR Program Untuk Hitachi H48C'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_05CaZNXNb7o/S4X4LXUOYEI/AAAAAAAAASg/7dqSLlq42GY/s72-c/zrclip_005p47374f92.png?imgmax=288' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-8797117650812392276</id><published>2010-02-24T22:35:00.001+07:00</published><updated>2010-02-24T22:50:15.083+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Send SMS pakai Microcontroller</title><content type='html'>&lt;p&gt;Jangan dibayangkan klo kita bakal ngirim SMS cuman pake microcontroller :-P&lt;/p&gt;  &lt;p&gt;Di sini microcontroller dipake sebagai pengatur&amp;#160; kapan n kenomor mana SMS akan dikirim serta isi SMS yg mau dikirim. Kita membutuhkan modem GPRS M1206B (Q2403A) sebagai penghubung ke jaringan GSM.&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/S4VHPgGxWZI/AAAAAAAAARo/t_aWYyxcma0/s1600-h/image%5B8%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="image" src="http://lh5.ggpht.com/_05CaZNXNb7o/S4VHQiqNqyI/AAAAAAAAARs/1H2dWeE5c2k/image_thumb%5B4%5D.png?imgmax=800" width="149" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Microcontroller mengirimkan perintah&amp;#160; AT-Command ke&amp;#160; M1206B lewat komunikasi serial RS232. Lalu modem GSM ini akan mengirim data sesuai dengan AT-Command yg diterimanya.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Apa itu AT-Command?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;AT-Command adalah perintah/instruksi yg diterima/dikenali&amp;#160; oleh modem GSM agar mau menjalankan fungsinya. Modem GSM bisa berupa HP atau M1206B seperti di atas.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p&gt;&lt;strong&gt;Setting Baudrate Modem GSM:&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Hal pertama yg dilakukan agar microcontroller bisa berkomunikasi dengan modem GPRS&amp;#160; yaitu menyamakan Baudrate. Baudrate default M1206B = 115200 Bps. Untuk mengubah nya kita gunakan Hyperterminal bawaan windows. &lt;/p&gt;    &lt;p&gt;Masuk ke &lt;strong&gt;Start &lt;/strong&gt;—&amp;gt; &lt;strong&gt;AllProgram&lt;/strong&gt; --&amp;gt; &lt;strong&gt;Accessories&lt;/strong&gt;—&amp;gt;&lt;strong&gt;Communications&lt;/strong&gt;—&amp;gt; &lt;strong&gt;Hyper terminal&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;di boxdialog &lt;strong&gt;Connect to&lt;/strong&gt; pilih COM port yang anda sambung ke M1206B (kalau saya pake COM1). Lalu pada boxdialog &lt;strong&gt;COM Properties&lt;/strong&gt;, ubah &lt;strong&gt;Bit per second&lt;/strong&gt; menjadi &lt;strong&gt;115200&lt;/strong&gt; dan &lt;strong&gt;Flow Control&lt;/strong&gt; ubah ke &lt;strong&gt;None &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/S4VHRWx9ueI/AAAAAAAAARw/jwV6iXNeMuM/s1600-h/image%5B5%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="307" alt="image" src="http://lh5.ggpht.com/_05CaZNXNb7o/S4VHShVZmGI/AAAAAAAAAR0/fR-dB1PjELo/image_thumb%5B3%5D.png?imgmax=800" width="260" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Coba&amp;#160; ketik di layar Hyperterminal &lt;strong&gt;AT&lt;/strong&gt; lalu tekan enter, jika koneksi yg kita buat udah benar maka akan muncul respon &lt;strong&gt;OK&lt;/strong&gt;. Selanjutnya untuk mengubah baudrate modem GSM menjadi 9600 bps, ketikkan &lt;strong&gt;AT+IPR=9600&lt;/strong&gt; lalu tekan enter. Jika berhasil maka akan ada respon &lt;strong&gt;OK&lt;/strong&gt; di layar Hyperterminal. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Menyimpan setting/konfigurasi modem GSM:&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Sekarang &lt;strong&gt;disconnect&lt;/strong&gt; kan Hyperterminal, lalu masuk menu &lt;strong&gt;File&lt;/strong&gt;—&amp;gt; &lt;strong&gt;Properties.&lt;/strong&gt; Ubah baudrate&amp;#160; menjadi 9600. Sekarang &lt;strong&gt;connect&lt;/strong&gt;kan lagi hyperterminal. Ketikkan &lt;strong&gt;AT&amp;amp;W&lt;/strong&gt; lalu tekan enter. Proses ini untuk menyimpan perubahan setting modem &lt;u&gt;agar saat modem restart ulang konfigurasi modem tidak kembali ke default.&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Program Microcontroller:&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;berikut program CodeVision AVR yang digunakan untuk send SMS.&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;/*****************************************************        &lt;br /&gt;Chip type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : ATmega8535         &lt;br /&gt;Program type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Application         &lt;br /&gt;Clock frequency&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 4.000000 MHz         &lt;br /&gt;*****************************************************/ &lt;/p&gt;      &lt;p&gt;#include &amp;lt;mega8535.h&amp;gt; &lt;/p&gt;      &lt;p&gt;// Standard Input/Output functions        &lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;         &lt;br /&gt;#include &amp;lt;delay.h&amp;gt; &lt;/p&gt;      &lt;p&gt;#define sensor0 PINA.0        &lt;br /&gt;#define sensor1 PINA.1 &lt;/p&gt;      &lt;p&gt;void main(void)        &lt;br /&gt;{         &lt;br /&gt;PORTA=0xff;         &lt;br /&gt;DDRA=0x00; &lt;/p&gt;      &lt;p&gt;// USART initialization        &lt;br /&gt;// Communication Parameters: 8 Data, 1 Stop, No Parity         &lt;br /&gt;// USART Receiver: On         &lt;br /&gt;// USART Transmitter: On         &lt;br /&gt;// USART Mode: Asynchronous         &lt;br /&gt;// USART Baud Rate: 9600         &lt;br /&gt;UCSRA=0x00;         &lt;br /&gt;UCSRB=0x18;         &lt;br /&gt;UCSRC=0x86;         &lt;br /&gt;UBRRH=0x00;         &lt;br /&gt;UBRRL=0x19; &lt;/p&gt;      &lt;p&gt;// Analog Comparator initialization        &lt;br /&gt;// Analog Comparator: Off         &lt;br /&gt;// Analog Comparator Input Capture by Timer/Counter 1: Off         &lt;br /&gt;ACSR=0x80;         &lt;br /&gt;SFIOR=0x00; &lt;/p&gt;      &lt;p&gt;printf(&amp;quot;AT+CMGS=&amp;quot;);        &lt;br /&gt;putchar('&amp;quot;');         &lt;br /&gt;printf(&amp;quot;03160542812&amp;quot;);&amp;#160; //---&amp;gt;ini adalah no HP yg dituju         &lt;br /&gt;putchar('&amp;quot;');         &lt;br /&gt;putchar(',');         &lt;br /&gt;putchar(13);         &lt;br /&gt;putchar(10); &lt;/p&gt;      &lt;p&gt;printf(&amp;quot;test Send SMS OK&amp;quot;);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;putchar(26); &lt;/p&gt;      &lt;p&gt;delay_ms(500);        &lt;br /&gt;while (1)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Place your code here         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(sensor0==0)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; printf(&amp;quot;AT+CMGS=&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar('&amp;quot;');         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; printf(&amp;quot;03160542812&amp;quot;);&amp;#160; //---&amp;gt;ini adalah no HP yg dituju         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar('&amp;quot;');         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar(',');         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar(13);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar(10); &lt;/p&gt;      &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; printf(&amp;quot;sensor0 AKTIF&amp;quot;);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar(26);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(sensor1==0)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; printf(&amp;quot;AT+CMGS=&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar('&amp;quot;');         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; printf(&amp;quot;03160542812&amp;quot;);&amp;#160; //---&amp;gt;ini adalah no HP yg dituju         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar('&amp;quot;');         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar(',');         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar(13);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar(10); &lt;/p&gt;      &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; printf(&amp;quot;sensor1 AKTIF&amp;quot;);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; putchar(26);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; delay_ms(500); &lt;/p&gt;      &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };        &lt;br /&gt;}&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;Saat pertama dijalankan, microcontroller akan mengirim SMS&amp;#160; &lt;strong&gt;test Send SMS OK&lt;/strong&gt;. Ini untuk test apakah koneksi&amp;#160; GSM berhasil? sending SMS test ini hanya dilakukan sekali saat microcontoller di ON kan.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Selanjutnya program akan memeriksa kondisi sensor0(PINA.0) dan sensor1 (PINA.1), jika salah satu atau kedua&amp;#160; pin diatas terhubung ke Ground maka microcontroller akan mengirimkan SMS berupa &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;sensor0 AKTIF&lt;/strong&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;dan atau:&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;sensor1 AKTIF&lt;/strong&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Program diatas merupakan program simple untuk aplikasi deteksi Sensor berbasis SMS dan masih bisa dikembangkan kedalam aplikasi yang lebih rumit dan kompleks. &lt;/p&gt;    &lt;p&gt;Semoga bermanfaat…….. ^_^&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://www.ziddu.com/downloadlink/8722089/contohSendSMS.rar" target="_blank"&gt;Download Source Code program klik disini&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;mohon kritik dan saran nya kirim&amp;#160; ke &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;published in &lt;a href="http://avrku.blogspot.com/"&gt;http://avrku.blogspot.com &lt;/a&gt;&lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-8797117650812392276?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/8797117650812392276/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=8797117650812392276&amp;isPopup=true' title='71 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/8797117650812392276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/8797117650812392276'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2010/02/send-sms-pakai-microcontroller.html' title='Send SMS pakai Microcontroller'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_05CaZNXNb7o/S4VHQiqNqyI/AAAAAAAAARs/1H2dWeE5c2k/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>71</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-8250427442886531305</id><published>2010-02-17T22:11:00.004+07:00</published><updated>2010-03-14T18:44:12.353+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>PWM menggunakan TIMER 0</title><content type='html'>Seorang temen&amp;#160; meminta saran tentang bagaimana menghasilkan signal PWM menggunakan microcontroller&amp;#160; AVR.&amp;#160; Dia menggunakan ATmega 16 dengan crystal 11.0592MHz. Dia&amp;#160; pengen 2 signal PWM, inverting dan non inverting. Tapi masalahnya&amp;#160; ada delay antara 2 signal tersebut.   &lt;br /&gt;berikut ilustrasi signal PWM yang diinginkan:  &lt;span class="fullpost"&gt; &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/S3wHInXeBfI/AAAAAAAAAN8/L2bb9ZLBisM/s1600-h/image%5B7%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="216" alt="image" src="http://lh5.ggpht.com/_05CaZNXNb7o/S3wHJySdKRI/AAAAAAAAAOE/Lq49AgWUuj0/image_thumb%5B3%5D.png?imgmax=800" width="194" border="0" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;b&gt;t0 &lt;/b&gt;: time delay antara 2 signal (1 millisecond)     &lt;br /&gt;&lt;b&gt;tH&lt;/b&gt; : time signal HIGH (9 millisecond)     &lt;br /&gt;&lt;b&gt;tL&lt;/b&gt;: time signal LOW (11 millisecond)     &lt;br /&gt;    &lt;br /&gt;Pertama kali ide buat alur programmnya menggunakan Fast PWM.&amp;#160; Jadi untuk mengatur lebar PWM tinggal mengubah nilai OCR. Namun kita kesulitan dalam setting delay antara 2 signal.     &lt;br /&gt;Akhirnya kita coba pake interrupt Timer 0. Disini interrupt diatur tiap &lt;b&gt;1 &lt;/b&gt;millisecond.     &lt;br /&gt;    &lt;br /&gt;Rumus yg digunakan untuk mengatur waktu interrupt Timer 0 adalah:&amp;#160; &lt;br /&gt;&lt;b&gt;TCNT0=(1+0xFF) – (waktu * (XTAL/PRESCALER))&lt;/b&gt;     &lt;br /&gt;nilai “&lt;b&gt;waktu&lt;/b&gt;” adalah waktu interrupt yang kita inginkan.     &lt;br /&gt;    &lt;br /&gt;Dalam kasus ini kita menggunakan XTAL (crystal) 11,0592 MHz dengan waktu interrupt 1 millisecond dan prescaler 256(bingung nilai prescaler itu apa??? &lt;a href="http://avrku.blogspot.com/2009/02/bermain-dengan-timer-1-avr.html"&gt;klik disini&lt;/a&gt;).     &lt;br /&gt;Sesuai dengan karakter sistem diatas maka nilai yang diisikan ke TCNT0 adalah:     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;TCNT0=256-(0.001*43200)&lt;/b&gt;     &lt;br /&gt;&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; =212,8&lt;/b&gt;     &lt;br /&gt;&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TCNT0=0xD4 (format heksadesimal)&lt;/b&gt;&amp;#160; &lt;br /&gt;    &lt;br /&gt;Dengan menggunakan interrupt timer 0 , signal PWM yang dihasilkan nampak seperti berikut:     &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/S3wHL4qNhGI/AAAAAAAAAN0/Ts2D0ROlG_U/s1600-h/image%5B6%5D.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="187" alt="image" src="http://lh6.ggpht.com/_05CaZNXNb7o/S3wHNWv47_I/AAAAAAAAAN4/UPDyVFzzmMY/image_thumb%5B2%5D.png?imgmax=800" width="245" border="0" /&gt;&lt;/a&gt; Code program yang digunakan:     &lt;br /&gt;    &lt;blockquote&gt;     &lt;br /&gt;      &lt;br /&gt;#include &amp;lt;mega16.h&amp;gt;       &lt;br /&gt;      &lt;br /&gt;#define Ch1 PORTB.3       &lt;br /&gt;#define Ch2 PORTD.7       &lt;br /&gt;unsigned int time_value;       &lt;br /&gt;// Timer 0 overflow interrupt service routine       &lt;br /&gt;interrupt [TIM0_OVF] void timer0_ovf_isr(void)       &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; TCNT0=0xd4;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; time_value++;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if(time_value&amp;gt;=20)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; time_value=0;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(time_value&amp;lt;=1)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch1=0;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if((time_value&amp;gt;=1)&amp;amp;(time_value&amp;lt;=9))       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch1=1;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch1=0;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(time_value&amp;lt;=10)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch2=0;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch2=1;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;      &lt;br /&gt;// Declare your global variables here       &lt;br /&gt;void main(void)       &lt;br /&gt;{       &lt;br /&gt;PORTA=0x00;       &lt;br /&gt;DDRA=0x00;       &lt;br /&gt;PORTB=0x00;       &lt;br /&gt;DDRB=0xff;       &lt;br /&gt;PORTC=0x00;       &lt;br /&gt;DDRC=0x00;       &lt;br /&gt;PORTD=0x00;       &lt;br /&gt;DDRD=0xff;       &lt;br /&gt;// Timer/Counter 0 initialization       &lt;br /&gt;// Clock source: System Clock       &lt;br /&gt;// Clock value: 43.200 kHz ---&amp;gt; XTAL/prescaler       &lt;br /&gt;// Mode: Normal top=FFh       &lt;br /&gt;// OC0 output: Disconnected       &lt;br /&gt;TCCR0=0x04;//---------&amp;gt;nilai ini utk menset nilai prescaler 256       &lt;br /&gt;TCNT0=0xd4;//-------&amp;gt; nilai dari rumus TCNT = (1+0xFF) - (waktu *( XTAL / prescaler) )       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //waktu yg diinginkan 1 ms       &lt;br /&gt;OCR0=0x00;       &lt;br /&gt;// Timer(s)/Counter(s) Interrupt(s) initialization       &lt;br /&gt;TIMSK=0x01;       &lt;br /&gt;// Analog Comparator initialization       &lt;br /&gt;// Analog Comparator: Off       &lt;br /&gt;// Analog Comparator Input Capture by Timer/Counter 1: Off       &lt;br /&gt;ACSR=0x80;       &lt;br /&gt;SFIOR=0x00;       &lt;br /&gt;// Global enable interrupts       &lt;br /&gt;#asm(&amp;quot;sei&amp;quot;)       &lt;br /&gt;while (1)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Place your code here       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };       &lt;br /&gt;}&lt;/blockquote&gt;    &lt;br /&gt;YOOO.. sekarang saatnya memenggal code-code program diatas:     &lt;br /&gt;    &lt;br /&gt;    &lt;blockquote&gt;     &lt;br /&gt;#include &amp;lt;mega16.h&amp;gt;&lt;/blockquote&gt; menyertakan file library mega16.h&amp;#160; karena kita menggunakan ATmega16 klo menggunakan ATmega 8535 ya tinggal diganti #include&amp;lt;mega8535.h&amp;gt;     &lt;br /&gt;    &lt;br /&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;#define Ch1 PORTB.3         &lt;br /&gt;#define Ch2 PORTD.7&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;PORTB.3 diganti namanya menjadi &lt;b&gt;Ch1&lt;/b&gt;       &lt;br /&gt;PORTD.7 diganti namanya menjadi &lt;b&gt;Ch2&lt;/b&gt;       &lt;br /&gt;Ini untuk memudahkan penulisan program aja, biar lebih gampang diinget. &lt;b&gt;Ch1&lt;/b&gt; ato &lt;b&gt;Ch2&lt;/b&gt; bisa diubah sesuka hati misal: ChannelA, ChannelB dan seterusnya….       &lt;br /&gt;PORT yang digunakan pun terserah anda. Tinggal diganti aja. Disini enaknya menghasilkan PWM pake interrupt timer, port yg di pakai &lt;b&gt;tidak harus&lt;/b&gt; menggunakan port PWM microcontroller (port PWM micrcontroller atmega 16 adalah: PORTB.3(OC0), PORTD.4(OC1B), PORTD.5(OC1A),&amp;#160; PORTD.7(OC2),)&amp;gt;_&amp;lt;.       &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;unsigned int time_value;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;mendefinisikan variabel bertipe unsigned integer dengan nama “&lt;b&gt;time_value&lt;/b&gt;”.       &lt;br /&gt;varibel &lt;b&gt;time_value&lt;/b&gt; ini yang nantinya dijadikan acuan dalam menghasilkan sinyal PWM.       &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;// Timer 0 overflow interrupt service routine         &lt;br /&gt;interrupt [TIM0_OVF] void timer0_ovf_isr(void)         &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; …………..         &lt;br /&gt;&amp;#160;&amp;#160; …………….&amp;#160; &lt;br /&gt;}&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;code-code&amp;#160; program yg ada di antara 2 kurung kurawal itu yang dijalankan jika terjadi interrupt Timer 0 &lt;/p&gt;   &lt;font style="background-color: #ccddf1"&gt;&lt;/font&gt;    &lt;p&gt;     &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;TCNT0=0xd4;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;nilai TCNT diisi nilai yg dihasilkan dari “rumus” (rumus diawal artikel). nilai ini yg menentukan interval waktu terjadinya interrupt      &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;time_value++;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;setiap terjadi interrupt nilai time_value ditambah &lt;b&gt;1&lt;/b&gt;.       &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;if(time_value&amp;gt;=20)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; time_value=0;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;jika nilai time_value&amp;#160; lebih atau sama dengan 20 maka nilai time_value di “nol” kan      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;if(time_value&amp;lt;=1)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch1=0;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if((time_value&amp;gt;=1)&amp;amp;(time_value&amp;lt;=9))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch1=1;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch1=0;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;code di atas untuk menghasilkan PWM di Ch1 (PORTB.3) sesuai dengan nilai variabel&amp;#160; &lt;b&gt;time_value&lt;/b&gt;.       &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;if(time_value&amp;lt;=10)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch2=0;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ch2=1;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;code di atas untuk menghasilkan PWM di Ch2 (PORTD.7) sesuai dengan nilai variabel&amp;#160; &lt;b&gt;time_value&lt;/b&gt;.       &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;void main(void)         &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160; ………..         &lt;br /&gt;&amp;#160; ………….         &lt;br /&gt;&amp;#160; ……………         &lt;br /&gt;}&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;main program,&amp;#160; program utama yang selalu dijalankan microcontroller.      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;PORTA=0x00;         &lt;br /&gt;DDRA=0x00;         &lt;br /&gt;PORTB=0x00;         &lt;br /&gt;DDRB=0xff;         &lt;br /&gt;PORTC=0x00;         &lt;br /&gt;DDRC=0x00;         &lt;br /&gt;PORTD=0x00;         &lt;br /&gt;DDRD=0xff;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;setting port microntroller mau dijadikan input atau output.      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;// Timer/Counter 0 initialization         &lt;br /&gt;// Clock source: System Clock         &lt;br /&gt;// Clock value: 43.200 kHz ---&amp;gt; XTAL/prescaler         &lt;br /&gt;// Mode: Normal top=FFh         &lt;br /&gt;// OC0 output: Disconnected         &lt;br /&gt;TCCR0=0x04;//---------&amp;gt;nilai ini utk menset nilai prescaler 256         &lt;br /&gt;TCNT0=0xd4;//-------&amp;gt; nilai dari rumus TCNT = (1+0xFF) - (waktu *( XTAL / prescaler) )         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //waktu yg diinginkan 1 ms&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;OCR0=0x00;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;inisialisasi timer 0 sesuai rumus.      &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;TIMSK=0x01;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;inisialisasi interrupt Timer 0.      &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;ACSR=0x80;         &lt;br /&gt;SFIOR=0x00;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;me “non-aktifkan” analog comparator      &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;#asm(&amp;quot;sei&amp;quot;)&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;mengaktifkan interrupt &lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;while (1)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Place your code here         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;infinite looping.      &lt;br /&gt;mikro hanya muter disini di dalam while(1){...};       &lt;br /&gt;(inget !!! infinite looping di artikel BASIC I/O ).. Jadi mikro sama sekali tidak mengeksekusi perintah.       &lt;br /&gt;lha kok bisa????? bingungg.... ~_~ !       &lt;br /&gt;Disinilah bedanya pake Interrupt!!.       &lt;br /&gt;saat terjadi Interrupt Timer0, alur program mikro akan meloncat ke:       &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;       &lt;br /&gt;        &lt;br /&gt;interrupt [TIM0_OVF] void timer0_ovf_isr(void)         &lt;br /&gt;{         &lt;br /&gt;......................................         &lt;br /&gt;......yoww..... program yg ada disini yg dijalanin...         &lt;br /&gt;......................................         &lt;br /&gt;} &lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;setelah program yg ada di sub rutin INTERRUPT dijalankan, maka alur program mikro akan muter2 lagi di infinite looping      &lt;br /&gt;******************       &lt;br /&gt;      &lt;br /&gt;&lt;i&gt;jika ada yg kurang dari artikel di atas mohon kritik dan sarannya &lt;/i&gt;      &lt;br /&gt;&lt;i&gt;&lt;/i&gt;      &lt;br /&gt;&lt;i&gt;any questions?? post comment on this blog: &lt;/i&gt;&lt;a href="http://avrku.blogspot.com/"&gt;&lt;i&gt;http://avrku.blogspot.com&lt;/i&gt;&lt;/a&gt;&lt;i&gt; &lt;/i&gt;      &lt;br /&gt;&lt;i&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt; &lt;/i&gt;      &lt;br /&gt;&lt;i&gt;&lt;/i&gt;      &lt;br /&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.        &lt;br /&gt;AVR is a registered trademark of Atmel Corporation.&lt;/i&gt; &lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-8250427442886531305?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/8250427442886531305/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=8250427442886531305&amp;isPopup=true' title='6 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/8250427442886531305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/8250427442886531305'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2010/02/pwm-menggunakan-timer-0.html' title='PWM menggunakan TIMER 0'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_05CaZNXNb7o/S3wHJySdKRI/AAAAAAAAAOE/Lq49AgWUuj0/s72-c/image_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-3648963941627139413</id><published>2009-09-10T14:48:00.005+07:00</published><updated>2010-03-14T11:47:24.119+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><title type='text'>Driver Beban AC tanpa Relay</title><content type='html'>Saat kita ingin mengendalikan beban AC 220 Volt. Entah itu heater, pump ato fan. banyak dari temen2 yang memakai relay. Gak ada salahnya sich make’ relay, but I think rada mahal n makan tempat di PCB.&lt;br /&gt;
Sekarang mari kita coba rangkaian alternatif, menggunakan  MOC3020 dan BTA12.&lt;br /&gt;
&lt;span class="fullpost"&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;MOC3020 merupakan OptoTriac, kita menggunakan device ini agar rangkaian control(microcontroller, led, keypad, lcd dan kawan2..)terisolasi dengan rangkaian power. Jadi saat rangkaian power meleduk, rangkaian control tetep aman. &lt;/li&gt;
&lt;li&gt;BTA12, TRIAC dengan kemampuan beban maximum 12 A. Udah tau blum triac itu apa?? klo blum &lt;a href="http://id.wikipedia.org/wiki/TRIAC"&gt;&lt;b&gt;silahkan klik link ini&lt;/b&gt;&lt;/a&gt;  &lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SqixfQrjyKI/AAAAAAAAAI4/pHjlTxHG1As/s1600-h/image%5B4%5D.png"&gt;&lt;img alt="image" border="0" height="299" src="http://lh6.ggpht.com/_05CaZNXNb7o/SqivYZpsIuI/AAAAAAAAAJA/-9CQRA3JwBA/image_thumb%5B3%5D.png?imgmax=800" style="border: 0px none; display: inline;" title="image" width="479" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;gambar di atas merupakan rangkaian driver nya.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SqixfQrjyKI/AAAAAAAAAJI/UCfpsQF3znk/s1600-h/image2.png"&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="background-color: white;"&gt;Part list:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;&lt;span style="background-color: white;"&gt;MOC 3020&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white;"&gt;R 380 ohm&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white;"&gt;Triac BTA 12&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white;"&gt;R1 10K ohm&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white;"&gt;C 100 nano / 400 volt&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white;"&gt;R2 220K ohm&lt;/span&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;Saat Logic dari &lt;b&gt;micro berlogika “High”&lt;/b&gt; , &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;arus akan mengalir dari VCC melewati R 380 ohm kemudian menuju MOC3020. Ini menyebabkan &lt;b&gt;MOC3020 “ON”.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat MOC 3020 “ON”, maka TRIAC &lt;b&gt;BTA12 akan ikut “ON”&lt;/b&gt;. Arus 220 AC akan melewati TRIAC dan menuju LOAD / BEBAN AC. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Sehingga &lt;b&gt;beban aktif.&lt;/b&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;Sebaliknya, saat Logic dari &lt;b&gt;micro &lt;/b&gt;“&lt;b&gt;Low&lt;/b&gt;”, maka arus dari VCC tidak masuk ke MOC3020 tetapi akan menuju pin micro. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Ini menyebabakn &lt;b&gt;MOC3020 “OFF”&lt;/b&gt; ,  &lt;b&gt;BTA 12 juga akan “OFF”.&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat BTA12 berubah dari ON ke OFF, tegangan yang masih ada di BTA12 akan menimbulkan &lt;b&gt;“spike”&lt;/b&gt; (loncatan tegangan).&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Spike jika pada relay berupa loncatan bunga api.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Spike ini akan memperpendek umur BTA 12. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Nah, makanya rangkaian ini dilengkapi dengan kombinsai R1 dan C. Kombinasi R1 dan C ini disebut &lt;b&gt;rangkaian snubber&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;R2 digunakan untuk membuang muatan tegangan yang ada di Capasitor saat BTA12 “OFF” .&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Jika R2 tidak di pasang, saat BTA12 “OFF”. Capasitor akan terus menerus menyimpan muatan. Ini akan merusak Capasitor. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Seingetku saat memakai rangkaian ini untuk aplikasi heater, jika tidak memakai R2 maka dalam 1*24 jam. Capasitor akan short.&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;NB:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;Rangkaian di atas tidak mutlak harus memakai MOC3020. Tapi bisa juga memakai MOC3021, MOC3022 atau MOC3030 &lt;/li&gt;
&lt;li&gt;TRIAC nya juga bisa di ganti BTA16. Klo  BTA16 berarti maximum arus menjadi 16 Ampere &lt;/li&gt;
&lt;li&gt;Dari pengalaman, jika gak memakai&lt;i&gt; rangkaian snubber&lt;/i&gt;, kadang2 beban bisa tiba2 nyala n tiba2 mati padahal belum ada perintah dari micro. Dugaan awal ini pengaruh dari spike         &lt;br /&gt;
&lt;blockquote&gt;Mohon kritik dan sarannya ^_^ n posting comment di blog ini &lt;a href="http://avrku.blogspot.com/"&gt;http://avrku.blogspot.com&lt;/a&gt; Trims…&lt;br /&gt;
any question??? send email to &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/blockquote&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-3648963941627139413?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/3648963941627139413/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=3648963941627139413&amp;isPopup=true' title='41 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/3648963941627139413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/3648963941627139413'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2009/09/driver-beban-ac-tanpa-relay.html' title='Driver Beban AC tanpa Relay'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_05CaZNXNb7o/SqivYZpsIuI/AAAAAAAAAJA/-9CQRA3JwBA/s72-c/image_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>41</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-8587485528716529154</id><published>2009-08-29T16:32:00.005+07:00</published><updated>2010-03-14T11:47:27.583+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><title type='text'>USB AVR ISP downloader</title><content type='html'>&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/Spj1oTer3AI/AAAAAAAAAH8/B0AA9Ni329o/s1600-h/usbasp_kit%5B5%5D.jpg"&gt;&lt;img alt="usbasp_kit" border="0" height="180" src="http://lh6.ggpht.com/_05CaZNXNb7o/Spj1p88iKUI/AAAAAAAAAIA/w4ZTDqD56zc/usbasp_kit_thumb%5B1%5D.jpg?imgmax=800" style="border-width: 0px; display: inline;" title="usbasp_kit" width="244" /&gt;&lt;/a&gt; Dari judul nya pasti semua dah pada ngiler pengen nyoba nih project.. he3…, &lt;br /&gt;
YUpz,,, kita akan coba bikin USB downloader buat Atmel AVR microcontroller..&lt;br /&gt;
&lt;span class="fullpost"&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Firmware, Schematic n Driver project nih ak dapet dari temenku &lt;b&gt;&lt;i&gt;Achmad Fiqhi&lt;/i&gt;&lt;/b&gt; (&lt;i&gt;meet him on FaceBook: &lt;b&gt;&lt;a href="mailto:vik_ah@yahoo.co.id"&gt;vik_ah@yahoo.co.id&lt;/a&gt;&lt;/b&gt;).&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Dia dah nyoba alat ini, n lancar2 aja. Budget yang dia kluarin skitar 50 ribu, jauh lebih murah ketimbang beli USB Downloader yang harganya rata2 diatas 150rb. Makasih banget pokoknya buat temen yg satu ini dah mau bagi2 ilmunya.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Project ini berbasis ATmega48 tapi bisa juga pake’ ATmega8. Yang perlu diinget &lt;i&gt;Firmware&lt;/i&gt; nya harus tepat.  Di akhir atikel ini kita sudah sertain file2 yang berhubungan dengan project ini, &lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;Rangkaian Schematic &lt;/li&gt;
&lt;li&gt;&lt;i&gt;Firmware&lt;/i&gt; &lt;/li&gt;
&lt;li&gt;Driver &lt;/li&gt;
&lt;li&gt;AVRdude &lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;    &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;Rangkaian Schematic&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;&lt;div&gt;&lt;ol&gt;&lt;/ol&gt;&lt;ol&gt;&lt;span class="fullpost"&gt;buka folder “&lt;i&gt;&lt;b&gt;circuit&lt;/b&gt;&lt;/i&gt;”&lt;/span&gt;&lt;/ol&gt;&lt;ul&gt;&lt;span class="fullpost"&gt;buka file &lt;b&gt;&lt;i&gt;USBasp.sch&lt;/i&gt;&lt;/b&gt; menggunakan software PCB maker seperti EAGLE&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;&lt;span class="fullpost"&gt;dalam file sch ini terdapat contoh rangkaian yang menggunakan ATmega48.&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;&lt;span class="fullpost"&gt;temen2 bisa mengganti ATmega48 ini dengan ATmega8&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;Firmware&lt;/u&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;&lt;span class="fullpost"&gt;buka folder “../&lt;b&gt;bin/firmware&lt;/b&gt;”&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;disini terdapat file &lt;b&gt;usbasp.atmega48.xxxx-xx-xx.hex&lt;/b&gt; &lt;i&gt;(gunakan file ini jika menggunakan ATmega48)&lt;/i&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;dan&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;usbasp.atmega8.xxxx-xx-xx.hex&lt;/b&gt; &lt;i&gt;(gunakan file ini jika menggunakan ATmega8&lt;/i&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;untuk memasukkan firmware awal maka kita harus menggunakan downloder laen yang dah jadi seperti DT-HiQ AVR ISP nya innovativeelectronics.com ato downloader USB nya klinik-robot.com .dll…&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;ingat… set jumper J2 saat mengisikan firmware&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;Driver&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;begitu Firmware dah dimasukin ke micro, berarti USBdownloader kita dah siap pake… tinggal colokin ke PC..&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;saa dicolokin maka windows akad detect nih sebagai “new hardware” n butuh driver. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Nah drivernya ada di "&lt;b&gt;bin/win-driver&lt;/b&gt;". &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;trus windows pasti bilang klo nih hardware “&lt;i&gt;not digitally signed&lt;/i&gt;… n bla bla  bla…….” pilih continue anyway.&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;AVRdude&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;Yooww sekarang kita bisa memasukkan program ke Atmel AVR microcontroller menggunakan USBdownloader kita. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Untuk memasukkan nya kita memakai software AVRdude.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;caranya:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;klik &lt;b&gt;build.bat&lt;/b&gt; ato &lt;b&gt;mega8.bat&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;pokoknya file “&lt;b&gt;.bat&lt;/b&gt;” di dalam folder “&lt;b&gt;.. bin/firmware&lt;/b&gt;“ (folder tempat “&lt;b&gt;avrdude.exe&lt;/b&gt;”)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;lalu akan muncul commandprompt (jendela layar hitam)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;ketik:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;avrdude -c usbasp -p atmega8535 -U flash:w:main.hex&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;untuk memasukkan program &lt;b&gt;main.hex&lt;/b&gt; ke mikro ATmega8535&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;NB:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;&lt;b&gt;FIRMWARE&lt;/b&gt; adalah program yg ada pada microcontroller sebuah sistem. Suatu sistem berbasis microcontroller tentu gak akan jalan jika micro nya gk di program.. nah program di dalam mikro ini namannya firmware &lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;span class="fullpost"&gt;Jumper2 pada USBdownloader ini adalah:  &lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;&lt;b&gt;J1 (supply power target).&lt;/b&gt; Target bisa menggunakan supply +5V dari PC dengan men-set jumper ini.  HATI-HATI saat menggunakan jumper ini karena jika target board short circuit resiko nya PC/laptop kita. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;J2 (update firmware).&lt;/b&gt; Set saat  mengisi awal atau mengganti program /firmware yg ada pada micro di USBdownloader ini. Penggantian firmware dengan bantuan Downloader yg laen &lt;/li&gt;
&lt;li&gt;&lt;b&gt;J3 (SCK option).&lt;/b&gt; Jika clock target di bawah 1,5MHZ maka  jumper ini harus di set. sehingga SCK akan diturunkan dari 375KHz menjadi 8KHz &lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Download Firmware , Schematic dan Driver project ini di:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Server Indonesia: &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://www.indowebster.com/USBaspFile.html" title="http://www.indowebster.com/USBaspFile.html"&gt;http://www.indowebster.com/USBaspFile.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Foreign Server:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;USBasp .......................... &lt;a href="http://www.fischl.de/usbasp/"&gt;http://www.fischl.de/usbasp/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;       &lt;br /&gt;
&lt;div style="margin-right: 0px;"&gt;Firmware-only AVR USB driver .... &lt;a href="http://www.obdev.at/products/avrusb/"&gt;http://www.obdev.at/products/avrusb/&lt;/a&gt;        &lt;br /&gt;
avrdude ......................... &lt;a href="http://www.nongnu.org/avrdude/"&gt;http://www.nongnu.org/avrdude/&lt;/a&gt;        &lt;br /&gt;
libusb .......................... &lt;a href="http://libusb.sourceforge.net/"&gt;http://libusb.sourceforge.net/&lt;/a&gt;        &lt;br /&gt;
libusb-win32 .................... &lt;a href="http://libusb-win32.sourceforge.net/"&gt;http://libusb-win32.sourceforge.net/&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;       &lt;br /&gt;
&lt;div style="margin-right: 0px;"&gt;2007-07-23 Thomas Fischl &amp;lt;tfischl@gmx.de&amp;gt;       &lt;br /&gt;
&lt;a href="http://www.fischl.de/"&gt;http://www.fischl.de&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;Mohon kritik dan sarannya ^_^ n post comment di blog ini. Trims…&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;any question??? send email to &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-8587485528716529154?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/8587485528716529154/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=8587485528716529154&amp;isPopup=true' title='13 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/8587485528716529154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/8587485528716529154'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2009/08/usb-downloader.html' title='USB AVR ISP downloader'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_05CaZNXNb7o/Spj1p88iKUI/AAAAAAAAAIA/w4ZTDqD56zc/s72-c/usbasp_kit_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-1590637710470067205</id><published>2009-02-16T15:57:00.004+07:00</published><updated>2011-02-03T07:05:48.719+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Bermain dengan Timer 1 AVR</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_05CaZNXNb7o/SZkvVGrI27I/AAAAAAAAAHk/JXzOyEtfoh0/s1600-h/cube_timer.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 200px; float: left; height: 200px; cursor: pointer" id="BLOGGER_PHOTO_ID_5303322075820776370" border="0" alt="" src="http://4.bp.blogspot.com/_05CaZNXNb7o/SZkvVGrI27I/AAAAAAAAAHk/JXzOyEtfoh0/s200/cube_timer.jpg" /&gt;&lt;/a&gt;  &lt;br /&gt;Yang namanya timer sering kali kita gunakan. Misal saat mau nampilin rpm, kita butuh timer sebagai acuan. Atau untuk menghidupkan device dengan interval tertentu.   &lt;br /&gt;AVR yang saya pakai sebagai contoh adalah ATmega 8535. AVR ini memilki 3 timer. Yaitu:  &lt;br /&gt;  &lt;ol&gt;   &lt;li&gt;TIMER 0 (8 bit) &lt;/li&gt;    &lt;li&gt;TIMER 1 (16 bit) &lt;/li&gt;    &lt;li&gt;TIMER 2 (8 bit) &lt;/li&gt; &lt;/ol&gt; &lt;b&gt;Apa yang dimaksud timer 8 bit dan 16 bit?&lt;/b&gt;  &lt;br /&gt;timer 8 bit adalah timer yg bisa mencacah/menghitung sampai maksimal nilai 0xFF heksa (dalam biner = 1111 1111). Pada ATmega 8535 ada 2 timer jenis ini yaitu TIMER 0 dan 2  &lt;br /&gt;&lt;span class="fullpost"&gt;  Klo yg 16 bit nilai maksimalnya 0xFFFF. Pada ATmega8535 timer jenis 16 bit adalah TIMER 1. Artikel kali ini akan membahas TIMER 1.  &lt;br /&gt;Dulu ak disaranin klo timer mau presisi harus memakai bahasa assembly. Hitung jumlah instruksi yg kita tulis. lalu hitung lama waktunya. Hmmmm.. ribet bener...  &lt;br /&gt;Untung aja nemu artikel tentang interrupt timer. Dengan Interrupt kita gak perlu susah2 menghitung berapa waktu yang di perlukan untuk meng eksekusi seluruh program kita. Karena saat program dijalanin, timer juga jalan sendiri (digerakkan XTAL). Trus saat nilai tercapai terjadilah interrupt timer.  &lt;br /&gt;Register yg biasa saya gunakan untuk menset nilai Timer1 adalah register TCNT, register TCNT sendiri dibagi dua: TCNT 1 H dan TCNT 1 L.  &lt;br /&gt;rumus yang digunakan adalah :  &lt;br /&gt;  &lt;blockquote&gt;&lt;b&gt;TCNT = (1+0xFFFF) - (waktu *( XTAL / prescaler) )&lt;/b&gt;&lt;/blockquote&gt;  &lt;blockquote&gt;waktu --&amp;gt; waktu yg kita inginkan    &lt;br /&gt;XTAL --&amp;gt; frekuensi xtal yg dipakai    &lt;br /&gt;prescaler --&amp;gt; nilai prescaler&lt;/blockquote&gt; &lt;b&gt;Apa nilai prescaler itu?&lt;/b&gt;  &lt;br /&gt;Timer membutuhkan clock source. Biasanya clock source yg saya pakai adalah clock sistem (XTAL). Dan kita bisa menset besarnya nilai ini. Maximum sama dengan XTAL, minimum XTAL/1024. Nah nilai pembagi (1024) ini yg disebur nilai prescaler.   &lt;br /&gt;Macam2 nilai prescaler yg diijinkan: &lt;b&gt;1&lt;/b&gt;, &lt;b&gt;8&lt;/b&gt; , &lt;b&gt;64&lt;/b&gt; , &lt;b&gt;256&lt;/b&gt; , &lt;b&gt;1024&lt;/b&gt;  &lt;br /&gt;Untuk mengubah nilai prescaler timer 1, kita harus merubah nilai register &lt;b&gt;TCCR1B bit 0...2&lt;/b&gt;  &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/SZkqXbXnBrI/AAAAAAAAAHU/F_zMkQ9V73w/image5.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/_05CaZNXNb7o/SZkqZTZvhFI/AAAAAAAAAHY/V6cD-UJxU3U/image_thumb3.png" width="517" height="305" /&gt;&lt;/a&gt;   &lt;br /&gt;  &lt;div align="center"&gt;&lt;i&gt;gambar diatas di ambil dari data sheet ATmega 8535 hal.113&lt;/i&gt;&lt;/span&gt;&lt;/div&gt; &lt;span class="fullpost"&gt;&lt;b&gt;Contoh Program:&lt;/b&gt;  &lt;br /&gt;Mengakses Timer 1 dengan interval waktu 1 detik.  &lt;br /&gt;  &lt;blockquote&gt;#include &amp;lt;mega8535.h&amp;gt;      &lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;    &lt;br /&gt;// LCD di PORT B      &lt;br /&gt;#asm       &lt;br /&gt;.equ __lcd_port=0x18       &lt;br /&gt;#endasm       &lt;br /&gt;#include &amp;lt;lcd.h&amp;gt;    &lt;br /&gt;     &lt;br /&gt;unsigned char buff[30];       &lt;br /&gt;unsigned long detik;    &lt;br /&gt;     &lt;br /&gt;// sub rutin saat terjadi interrupt Timer 1       &lt;br /&gt;interrupt [TIM1_OVF] void timer1_ovf_isr(void)       &lt;br /&gt;{       &lt;br /&gt;TCNT1H=0xC2;       &lt;br /&gt;TCNT1L=0xF7;       &lt;br /&gt;detik++;       &lt;br /&gt;lcd_clear();       &lt;br /&gt;sprintf(buff,&amp;quot;detik %d&amp;quot;,detik);       &lt;br /&gt;lcd_puts(buff);       &lt;br /&gt;}    &lt;br /&gt;void main(void)      &lt;br /&gt;{       &lt;br /&gt;    &lt;br /&gt;// Timer/Counter 1 initialization      &lt;br /&gt;// Clock source: System Clock       &lt;br /&gt;// Clock value: kHz       &lt;br /&gt;// Mode: Normal top=FFFFh       &lt;br /&gt;// OC1A output: Discon.       &lt;br /&gt;// OC1B output: Discon.       &lt;br /&gt;// Noise Canceler: Off       &lt;br /&gt;// Input Capture on Falling Edge       &lt;br /&gt;TCCR1A=0x00;       &lt;br /&gt;TCCR1B=0x04;       &lt;br /&gt;TCNT1H=0xC2;       &lt;br /&gt;TCNT1L=0xF7;       &lt;br /&gt;OCR1AH=0x00;       &lt;br /&gt;OCR1AL=0x00;       &lt;br /&gt;OCR1BH=0x00;       &lt;br /&gt;OCR1BL=0x00;    &lt;br /&gt;// Timer(s)/Counter(s) Interrupt(s) initialization      &lt;br /&gt;TIMSK=0x04;     &lt;br /&gt;// Analog Comparator initialization      &lt;br /&gt;// Analog Comparator: Off       &lt;br /&gt;// Analog Comparator Input Capture by Timer/Counter 1: Off       &lt;br /&gt;// Analog Comparator Output: Off       &lt;br /&gt;ACSR=0x80;       &lt;br /&gt;SFIOR=0x00;     &lt;br /&gt;// LCD module initialization      &lt;br /&gt;lcd_init(16);     &lt;br /&gt;// Global enable interrupts      &lt;br /&gt;#asm(&amp;quot;sei&amp;quot;)       &lt;br /&gt;lcd_putsf(&amp;quot;wait...&amp;quot;);       &lt;br /&gt;while (1)       &lt;br /&gt;{       &lt;br /&gt;      &lt;br /&gt;};       &lt;br /&gt;}&lt;/blockquote&gt; Program di atas menggunakan timer 1 untuk menambah nilai variabel &lt;b&gt;&amp;quot;detik&amp;quot; &lt;/b&gt;setiap 1 detik sekali. Kemudian menampilkan hasilnya ke LCD.  &lt;br /&gt;&lt;b&gt;ayo kita &lt;i&gt;mutilasi&lt;/i&gt; code program di atas:&lt;/b&gt;  &lt;br /&gt;yang akan kita bahas dari program diatas adalah code yang kliatan ruwet aja. Klo yg biasa silahkan lihat di artikel2 sebelumnya .. ^_^  &lt;br /&gt;**************  &lt;br /&gt;  &lt;blockquote&gt;// LCD di PORT B      &lt;br /&gt;#asm       &lt;br /&gt;.equ __lcd_port=0x18 --------------&amp;gt;&amp;gt; mendefinisakan bahwa LCD di hubungkan ke PORT B       &lt;br /&gt;#endasm    &lt;br /&gt;#include &amp;lt;lcd.h&amp;gt; ---------------&amp;gt;&amp;gt; library untuk fungsi2 akses LCD      &lt;br /&gt;&lt;/blockquote&gt; **************  &lt;br /&gt;  &lt;blockquote&gt;// sub rutin saat terjadi interrupt Timer 1      &lt;br /&gt;interrupt [TIM1_OVF] void timer1_ovf_isr(void)       &lt;br /&gt;{       &lt;br /&gt;TCNT1H=0xC2; ----------------------&amp;gt; nilai didapat dari rumus ......       &lt;br /&gt;TCNT1L=0xF7; ----------------------&amp;gt; ....agar Timer 1 bernilai 1 detik       &lt;br /&gt;detik++;       &lt;br /&gt;lcd_clear();       &lt;br /&gt;sprintf(buff,&amp;quot;detik %d&amp;quot;,detik); --------------&amp;gt; memasukkan karakter-karakter ke variabel buff       &lt;br /&gt;lcd_puts(buff); ---------------------------&amp;gt;menampilkan karakter-karakter variabel buff ke LCD       &lt;br /&gt;} &lt;/blockquote&gt; Saat kita ingin menampilkan sederet tulisan ke LCD maka kita harus memasukkan karakter-karakter tulisan itu ke suatu &lt;i&gt;variabel array&lt;/i&gt; (dalam program di atas adalah variabel &lt;b&gt;&amp;quot;buff&amp;quot;&lt;/b&gt;). Baru kemudian data yg ada di &lt;i&gt;variabel array&lt;/i&gt; kita tampilkan ke LCD  &lt;br /&gt;***************  &lt;br /&gt;  &lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;    &lt;br /&gt;void main(void)      &lt;br /&gt;{       &lt;br /&gt;    &lt;br /&gt;// Timer/Counter 1 initialization      &lt;br /&gt;// Clock source: System Clock       &lt;br /&gt;// Clock value: kHz       &lt;br /&gt;// Mode: Normal top=FFFFh       &lt;br /&gt;// OC1A output: Discon.       &lt;br /&gt;// OC1B output: Discon.       &lt;br /&gt;// Noise Canceler: Off       &lt;br /&gt;// Input Capture on Falling Edge    &lt;br /&gt;TCCR1A=0x00;      &lt;br /&gt;TCCR1B=0x04; ------------------&amp;gt; prescaler 256       &lt;br /&gt;TCNT1H=0xC2; ------------------&amp;gt; nilai didapat dari rumus ......       &lt;br /&gt;TCNT1L=0xF7; ------------------&amp;gt; ....agar Timer 1 bernilai 1 detik    &lt;br /&gt;     &lt;br /&gt;&lt;/blockquote&gt; inget rumus: &lt;b&gt;TCNT = (1+0xFFFF) - (waktu *( XTAL / prescaler) )&lt;/b&gt;  &lt;br /&gt;waktu yg dinginkan adalah 1 detik , XTAL yg saya pakai adl 4 Mhz dan nilai prescaler=256   &lt;br /&gt;  &lt;blockquote&gt;Jadi,...............    &lt;br /&gt;TCNT= (1+65535)-(1detik * (4.000.000/256))    &lt;br /&gt;=65536 - (1detik*15625)    &lt;br /&gt;=65536-15625    &lt;br /&gt;= 49911 (desimal)    &lt;br /&gt;= C2F7 (heksadesimal)&lt;/blockquote&gt; Nilai untuk TCNT yang di dapat dari rumus bernilai 16bit (4 angka Heksadesimal), 2 angka yg di depan kita masukkan ke TCNT1H dan 2 angka yg dibelakang kita masukkan ke TCNT1L  &lt;br /&gt;****************  &lt;br /&gt;  &lt;blockquote&gt;// Timer(s)/Counter(s) Interrupt(s) initialization     &lt;br /&gt;TIMSK=0x04; -----------------&amp;gt;Timer/Counter1, Overflow Interrupt Enable&lt;/blockquote&gt; code di atas hanya men set &amp;quot;Overflow Interrupt Timer 1&amp;quot;. Interrupt baru aktif saat ada perintah: &lt;i&gt;#asm(&amp;quot;sei&amp;quot;)&lt;/i&gt; &lt;br /&gt;   &lt;br /&gt;&lt;i&gt;&lt;/i&gt;  &lt;br /&gt;pada contoh ini saya pake ATmega 8535, ketika saya coba untuk &lt;span style="font-weight: bold"&gt;ATmega 162 nilai TIMSK diubah menjadi TIMSK=0x80; &lt;/span&gt;  &lt;br /&gt;&lt;i&gt;****************&lt;/i&gt;  &lt;br /&gt;  &lt;blockquote&gt;&lt;span class="fullpost"&gt;// Analog Comparator initialization &lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;// Analog Comparator: Off &lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;// Analog Comparator Input Capture by Timer/Counter 1: Off &lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;// Analog Comparator Output: Off &lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;ACSR=0x80; ------------&amp;gt; me OFF kan analog comparator &lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;SFIOR=0x00; &lt;/span&gt;&lt;/blockquote&gt; &lt;span class="fullpost"&gt;jika tidak dipakai, sebaiknya analog comparator di OFF. Untuk menghemat pemakaian daya. Hal ini sangat penting jika sumber daya yg digunakan memakai baterai.&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;*******************&lt;/span&gt;  &lt;br /&gt;  &lt;blockquote&gt;&lt;span class="fullpost"&gt;// LCD module initialization      &lt;br /&gt;lcd_init(16); ----------------------&amp;gt; inisialisasi LCD 16*2&lt;/span&gt;&lt;/blockquote&gt; &lt;span class="fullpost"&gt;*******************&lt;/span&gt;  &lt;br /&gt;  &lt;blockquote&gt;&lt;span class="fullpost"&gt;// Global enable interrupts &lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;#asm(&amp;quot;sei&amp;quot;) ----------------------&amp;gt; meng aktifkan Interrupt-interrupt yg sudah di set sebelumnya &lt;/span&gt;&lt;/blockquote&gt; &lt;span class="fullpost"&gt;Nah... pada saat ini interrupt Timer 1 aktif&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;*******************&lt;/span&gt;  &lt;br /&gt;  &lt;blockquote&gt;&lt;span class="fullpost"&gt;lcd_putsf(&amp;quot;wait...&amp;quot;); --------------&amp;gt; menampilkan tulisan &lt;b&gt;wait.. &lt;/b&gt;ke LCD&lt;/span&gt;&lt;/blockquote&gt; &lt;span class="fullpost"&gt;*********************&lt;/span&gt;  &lt;br /&gt;  &lt;blockquote&gt;&lt;span class="fullpost"&gt;while (1)      &lt;br /&gt;{       &lt;br /&gt;      &lt;br /&gt;};       &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span class="fullpost"&gt;Program ini yg dijalankan oleh microcontroller... mikro hanya muter disini di dalam &lt;b&gt;while(1){...};&lt;/b&gt;&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;b&gt;(&lt;/b&gt;&lt;i&gt;inget&lt;b&gt; &lt;/b&gt;!!!&lt;b&gt; infinite looping&lt;/b&gt; di artikel&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;a href="http://avrku.blogspot.com/2008/11/basic-input-output-io.html"&gt;&lt;i&gt;&lt;b&gt;BASIC I/O&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;)..&lt;/b&gt; Jadi mikro sama sekali tidak mengeksekusi perintah.&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;b&gt;lha kok bisa????? &lt;/b&gt;bingungg....&lt;b&gt; ~_~ &lt;/b&gt;!&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;Disinilah &lt;b&gt;bedanya&lt;/b&gt; pake &lt;b&gt;Interrupt&lt;/b&gt;!!.&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;saat terjadi Interrupt Timer1, alur program mikro akan meloncat ke: &lt;/span&gt;  &lt;br /&gt;  &lt;blockquote&gt;&lt;span class="fullpost"&gt;// sub rutin saat terjadi interrupt Timer 1      &lt;br /&gt;interrupt [TIM1_OVF] void timer1_ovf_isr(void)       &lt;br /&gt;&lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="background-color: white"&gt;{&lt;/span&gt;&lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="background-color: white"&gt;......................................&lt;/span&gt;&lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="background-color: white"&gt;......yoww..... program yg ada disini yg dijalanin...&lt;/span&gt;&lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="background-color: white"&gt;......................................&lt;/span&gt;&lt;/span&gt;    &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="background-color: white"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span class="fullpost"&gt;setelah program yg ada di sub rutin INTERRUPT dijalankan, maka alur program mikro akan muter2 lagi di &lt;b&gt;&lt;a href="http://avrku.blogspot.com/2008/11/basic-input-output-io.html"&gt;infinite looping&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;******************&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;jika ada yg kurang dari program di atas mohon kritik dan sarannya&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;u&gt;any questions?? post comment on this blog: &lt;/u&gt;&lt;span style="color: blue"&gt;&lt;a href="http://avrku.blogspot.com/"&gt;http:\\avrku.blogspot.com&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;u&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;  &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.      &lt;br /&gt;AVR is a registered trademark of Atmel Corporation.&lt;/i&gt;&lt;/span&gt;  &lt;br /&gt;&lt;&lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-1590637710470067205?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/1590637710470067205/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=1590637710470067205&amp;isPopup=true' title='12 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/1590637710470067205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/1590637710470067205'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2009/02/bermain-dengan-timer-1-avr.html' title='Bermain dengan Timer 1 AVR'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_05CaZNXNb7o/SZkvVGrI27I/AAAAAAAAAHk/JXzOyEtfoh0/s72-c/cube_timer.jpg' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-270621985546764930</id><published>2009-01-28T09:29:00.003+07:00</published><updated>2010-03-14T11:47:34.053+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Mengenal ADC (2)</title><content type='html'>&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SX_C2z4GUCI/AAAAAAAAAGs/9LAcFXPvBDg/lm354.jpg"&gt;&lt;img align="left" alt="lm35" border="0" height="118" src="http://lh4.ggpht.com/_05CaZNXNb7o/SX_C32O5WOI/AAAAAAAAAGw/GFKpTVGRvHY/lm35_thumb2.jpg" style="border-width: 0px;" width="244" /&gt;&lt;/a&gt; Kali ini kita akan ngebahas gimana cara menggunakan ADC yang disambung ke sensor suhu LM35. &lt;br /&gt;
Output dari sensor kita hubungkan dengan PORTA.0 (chanel ADC 0). Untuk kodenya kita gunakan aja CodeWizard agar lebih efisien n kita gak usah pusing2 hafalin register2 AVR.&lt;br /&gt;
Oke sekarang langsung aja:&lt;br /&gt;
&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;1.&lt;/b&gt;  klik &lt;i&gt;icon&lt;/i&gt; CodeWizard di CodeVision AVR.  Lalu klik &lt;i&gt;tab&lt;/i&gt; ADC &lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/SX_C6UNiLjI/AAAAAAAAAG0/7DXNslzJWH8/image13.png"&gt;&lt;img alt="image" border="0" height="314" src="http://lh5.ggpht.com/_05CaZNXNb7o/SX_C8I6RgWI/AAAAAAAAAG4/FXHBXDmTdEs/image_thumb9.png" style="border-width: 0px; margin: 0px 0px 0px 100px;" width="251" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;2.  &lt;/b&gt;Pada tampilan &lt;i&gt;tab&lt;/i&gt; ADC, centang &lt;b&gt;ADC ENABLED&lt;/b&gt; utk mengaktifkan ADC&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/SX_C9YymQlI/AAAAAAAAAG8/nQ3Yt19GZPM/image26.png"&gt;&lt;img align="left" alt="image" border="0" height="310" src="http://lh6.ggpht.com/_05CaZNXNb7o/SX_C_8xzZMI/AAAAAAAAAHA/HLHpoD7iQh4/image_thumb18.png" style="border-width: 0px;" width="278" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Use 8 Bits:&lt;/b&gt;  untuk memilih apakah ADC menggunakan resolusi 10 bit atau 8 bit. &lt;i&gt;Biarkan kosong(jangan di centang) agar ADC menggunakan resolusi 10 bit.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;ADC Interrupt: &lt;/b&gt;Interrupt ADC diaktifkan apa tidak.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;High Speed: &lt;/b&gt;mode high speed digunakan apa tidak.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Volt. Ref: &lt;/b&gt;referensi tegangan ADC.        &lt;i&gt;ubah ke AVCC pin, agar ADC menggunakan referensi teg. 5 volt.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;ADC Clock: &lt;/b&gt;untuk memilih frekuensi clock ADC.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Ada pertanyaan menarik dari Mas HaPE, tentang ADC Clok ini:&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/SX_DBHrGFZI/AAAAAAAAAHE/UmlY2vaZSzs/image39.png"&gt;&lt;img align="left" alt="image" border="0" height="322" src="http://lh4.ggpht.com/_05CaZNXNb7o/SX_DDTHP-BI/AAAAAAAAAHI/25JyIScPfzc/image_thumb27.png" style="border-width: 0px;" width="368" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;di keterangan Clok ADC memang tertulis 125.000 kHz. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Itu bukan 125ribu kHz (125Mhz) &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Tapi 125,000 kHz  (125,0 kHz)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Inget orang Inggris nulis &lt;i&gt;koma&lt;/i&gt; pake &lt;i&gt;titik.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Auto Trigger Source: &lt;/b&gt;untuk menentukan sumber trigger ADC&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;...Ok let's finish this thing....&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;3. &lt;/b&gt;sekarang tinggal klik  &lt;b&gt;File ---&amp;gt; Generate, Save and Exi&lt;/b&gt;t&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/SX_DE3Xl3dI/AAAAAAAAAHM/km1tlWBt3Pc/image44.png"&gt;&lt;img alt="image" border="0" height="288" src="http://lh4.ggpht.com/_05CaZNXNb7o/SX_DG6f16HI/AAAAAAAAAHQ/eoq7UMdhbAk/image_thumb30.png" style="border-width: 0px;" width="287" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;lalu kasih nama dan simpen File2nya.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Contoh program ADC untuk LM35 :&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;#include &amp;lt;mega8535.h&amp;gt;    &lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;.     &lt;br /&gt;
#include &amp;lt;delay.h&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;// Alphanumeric LCD Module functions    &lt;br /&gt;
#asm     &lt;br /&gt;
.equ __lcd_port=0x18     &lt;br /&gt;
#endasm     &lt;br /&gt;
#include &amp;lt;lcd.h&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;#define heater PORTB.0//heater di hubungkan dg PORTB.0 &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;#define ADC_VREF_TYPE 0x40       &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;unsigned int read_adc(unsigned char adc_input)    &lt;br /&gt;
{     &lt;br /&gt;
ADMUX=adc_input|ADC_VREF_TYPE;     &lt;br /&gt;
ADCSRA|=0x40;&lt;br /&gt;
delay_us(10);     &lt;br /&gt;
while ((ADCSRA &amp;amp; 0x10)==0);     &lt;br /&gt;
ADCSRA|=0x10;     &lt;br /&gt;
return ADCW;     &lt;br /&gt;
} &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;unsigned char buff[33];    &lt;br /&gt;
void lcd_putint(unsigned int  dat)  &lt;br /&gt;
{     &lt;br /&gt;
sprintf(buff,"%d ",dat);                  &lt;br /&gt;
lcd_puts(buff);     &lt;br /&gt;
} &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;void main(void)    &lt;br /&gt;
{ &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;unsigned int suhu;    &lt;br /&gt;
float adc; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;DDRB=0xff;    &lt;br /&gt;
PORTB=0x00; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;// ADC initialization    &lt;br /&gt;
// ADC Clock frequency: 125.000 kHz     &lt;br /&gt;
// ADC Voltage Reference: AVCC pin     &lt;br /&gt;
// ADC High Speed Mode: Off     &lt;br /&gt;
// ADC Auto Trigger Source: None     &lt;br /&gt;
ADMUX=ADC_VREF_TYPE;     &lt;br /&gt;
ADCSRA=0x85;     &lt;br /&gt;
SFIOR&amp;amp;=0xEF; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;// LCD module initialization    &lt;br /&gt;
lcd_init(16); &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;while (1)    &lt;br /&gt;
{     &lt;br /&gt;
// Place your code here     &lt;br /&gt;
adc = read_adc(0);     &lt;br /&gt;
adc=adc/255;     &lt;br /&gt;
suhu=adc*175;     &lt;br /&gt;
suhu=suhu-12;     &lt;br /&gt;
if (suhu&amp;lt;27)heater=1;     &lt;br /&gt;
if (suhu&amp;gt;32)heater=0;     &lt;br /&gt;
lcd_putsf("Suhu= ");     &lt;br /&gt;
lcd_putint(suhu);     &lt;br /&gt;
delay_ms(1000);     &lt;br /&gt;
lcd_clear(); &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;};    &lt;br /&gt;
}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Program diatas untuk membaca nilai suhu dari sensor LM35 trus hasilnya digunakan sebagai acuan untuk menyalakan Heater yg terhubung ke PORTB.0&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Dalam program diatas terdapat code:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;adc=adc/255;&lt;br /&gt;
suhu=adc*175;&lt;br /&gt;
suhu=suhu-12; &lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Fungsi kode diatas untuk  mengkalibrasi nilai ADC  agar sesuai dengan suhu sebenarnya. Setiap rangkaian memiliki error yg berbeda-beda. jadi nilai untuk kalibrasi harus di sesuaikan.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;any questions?? post comment on this blog: &lt;/u&gt;&lt;span style="color: blue;"&gt;&lt;a href="http://avrku.blogspot.com/"&gt;http:\\avrku.blogspot.com&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.    &lt;br /&gt;
AVR is a registered trademark of Atmel Corporation.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-270621985546764930?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/270621985546764930/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=270621985546764930&amp;isPopup=true' title='85 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/270621985546764930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/270621985546764930'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2009/01/mengenal-adc-2.html' title='Mengenal ADC (2)'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_05CaZNXNb7o/SX_C32O5WOI/AAAAAAAAAGw/GFKpTVGRvHY/s72-c/lm35_thumb2.jpg' height='72' width='72'/><thr:total>85</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-357074799825395628</id><published>2009-01-12T11:36:00.004+07:00</published><updated>2010-03-14T11:47:54.167+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><title type='text'>Menghitung Resistor untuk LED</title><content type='html'>&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/SWrIUXlkpHI/AAAAAAAAAGk/nc9H6-SNhGY/electronics_led_diagram%5B3%5D.png"&gt;&lt;img align="left" alt="electronics_led_diagram" border="0" height="160" src="http://lh4.ggpht.com/_05CaZNXNb7o/SWrI0K6heFI/AAAAAAAAAGo/53LLLV_LmUU/electronics_led_diagram_thumb%5B1%5D.png" style="border: 0px none;" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;
LED memang device kecil yg sepele, tapi kadang kita pusing saat mo nentuin resistor yang akan di seri ke LED untuk membatasi arus yang masuk. Karena bingung akhirnya maen comot aja nilai R nya, dan hasilnya nyala LED gak maksimal klo R nya ke besaren. Ato LED nya gampang meleduk klo R nya terlalu kecil. &lt;br /&gt;
&lt;span class="fullpost"&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Rumus menghitung nilai R untuk LED&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;div align="center"&gt;&lt;span class="fullpost"&gt;&lt;b&gt;R=  V / I&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;Weheee.... sederhana kan... itu kan rumus dasar tegangan.&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;Nilai tegangan(&lt;b&gt;V&lt;/b&gt;) adalah nilai tegangan sumber(&lt;b&gt;Vs&lt;/b&gt;) dikurangi nilai tegangan LED(&lt;b&gt;VL&lt;/b&gt;) (nilai tegangan LED diasumsikan 2,2 volt).&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;Arus yg boleh melewati LED kira-kira 20mA (0,02 A)&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;Jika tegangan sumber 12V besar&lt;b&gt; VL&lt;/b&gt; nya adalah:   12-2,2 = 9.8 volt&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;R=9.8/ 0.02 = 490 ohm&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;Di pasaran sudah nyari &lt;b&gt; &lt;/b&gt;R 490 ohm jadi kita nyari yang di atasnya dikit 510 ohm.&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;Setiap alat yang di aliri listrik pasti menimbulkan panas, begitu juga R yg kita gunakan ini. Semakin besar Daya maka panas yg dihasilkan juga semakin tinggi. So... kita harus memilih R dengan kapasitas daya yang sesuai agar R nya gak meleduk.. He3.....&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div align="center"&gt;&lt;span class="fullpost"&gt;&lt;b&gt;P= V*I&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;So.... P= 9.8*0.02 = 0.196 watt &lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;jadi minimal kita harus memilih LED yang &lt;b&gt;1/4&lt;/b&gt; Watt (0.25 watt)&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;&lt;a href="http://www.avrku.blogspot.com/"&gt;&lt;span style="font-family: co;"&gt;http://www.AVRku.blogspot.com&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span class="fullpost"&gt;&lt;a href="mailto:zigan@ymail.com"&gt;&lt;span style="font-family: co;"&gt;zigan@ymail.com&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-357074799825395628?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/357074799825395628/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=357074799825395628&amp;isPopup=true' title='6 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/357074799825395628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/357074799825395628'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2009/01/menghitung-resistor-untuk-led.html' title='Menghitung Resistor untuk LED'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_05CaZNXNb7o/SWrI0K6heFI/AAAAAAAAAGo/53LLLV_LmUU/s72-c/electronics_led_diagram_thumb%5B1%5D.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-9169795895054865598</id><published>2008-12-09T21:29:00.003+07:00</published><updated>2010-03-14T11:48:01.121+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Internal Oscilator Microcontroller</title><content type='html'>&lt;span class="awal"&gt;Y&lt;/span&gt;upzzz karena kemaren dapet pesanan dari "mazveri" tentang &lt;i&gt;Internal Oscilator&lt;/i&gt;.., jadi lanjutan artikel ADCnya kita tunda dulu yaww... ^_^. &lt;br /&gt;
Kebanyakan rangkaian microcontroller yang kita gunakan menggunakan sumber clock &lt;i&gt;Oscilator&lt;/i&gt; &lt;i&gt;Eksternal&lt;/i&gt; (XTAL). Ada yang menggunakan 4 MHz,11.0592 MHZ, 12 MHz dll. Selain itu microcontroller juga dilengkapi &lt;i&gt;Internal Oscilator.&lt;/i&gt; Jika kita mengaktifkan &lt;i&gt;Internal Oscilator&lt;/i&gt; ini, maka kita tidak perlu menambahkan XTAL pada rangkaian kita.&lt;br /&gt;
&lt;span class="fullpost"&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Register yg berhubungan dg Oscilator:&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan gambar berikut :&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/ST5_qkB_bRI/AAAAAAAAAGM/BWulDlBZ6Uo/image15.png"&gt;&lt;img align="left" alt="image" border="0" height="333" src="http://lh3.ggpht.com/_05CaZNXNb7o/ST5_wDEccsI/AAAAAAAAAGQ/qy9MGpDC9FA/image_thumb11.png" style="border-width: 0px;" width="420" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Gambar di samping berasal dari  datasheet ATmega8535 hal. 239.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Register yang berhubungan dengan Oscilator adalah &lt;b&gt;SUT1..0&lt;/b&gt; dan &lt;b&gt;CKSEL3..0&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;SUT1..0&lt;/b&gt; berfungsi untuk menentukan waktu start-up Oscilator&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;CKSEL3..0 &lt;/b&gt;untuk menentukan sumber Oscilator. Apakah internal atau eksternal?&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/ST6AlB0-CPI/AAAAAAAAAGU/zcIspE7zPGs/image16.png"&gt;&lt;img align="left" alt="image" border="0" height="185" src="http://lh4.ggpht.com/_05CaZNXNb7o/ST6ArzwGL4I/AAAAAAAAAGY/Cda4xjr8n6w/image_thumb12.png" style="border-width: 0px;" width="432" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Gambar di samping berasal dari data sheet ATmega8535 hal. 25&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan kombinasi nilai &lt;b&gt;CKSEL3..0&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat kita membeli chip ATmega 8535, register &lt;b&gt;CKSEL3..0&lt;/b&gt; telah diset oleh pabriknya dengan nilai "&lt;b&gt;0001&lt;/b&gt;" biner. Ini berarti Internal Oscilator telah diaktifkan. Nilai Internal Oscilator ATmega8535 adalah 1MHz.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;Mungkin ada yg nanya??? Jika  dari  setting awalnya chip ATmega8535 menggunakan Internal Oscilator, Mengapa eksternal oscilator (XTAL) saya berfungsi ??Mengapa setting Oscilator berubah menggunakan Eksternal Oscilator??? &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Setting Register-Register Oscilator&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat kita mendownload program ke chip ATmega, setting default programmer CodeVision AVR seperti berikut:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/ST6Azdx4tFI/AAAAAAAAAGc/sN00y38AIUg/image25.png"&gt;&lt;img align="left" alt="image" border="0" height="365" src="http://lh5.ggpht.com/_05CaZNXNb7o/ST6A4aVtpZI/AAAAAAAAAGg/ozYFYrAWdT4/image_thumb17.png" style="border-width: 0px;" width="337" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan setting &lt;b&gt;fuse bit&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Register &lt;b&gt;CKSEL3..0 &lt;/b&gt;diisi dengan nilai "&lt;b&gt;0000&lt;/b&gt;" biner. Berarti setting Oscilator chip ATmega berubah menggunakan Oscilator Eksternal.  &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Kesimpulannya tanpa sadar kita telah merubah setting yang telah diset oleh pabrik.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Jika kita mau mengaktifkan lagi Internal Oscilator maka &lt;b&gt;centang&lt;/b&gt; bit &lt;b&gt;CKSEL0&lt;/b&gt;, agar register &lt;b&gt;CKSEL&lt;/b&gt; bernilai "&lt;b&gt;0001&lt;/b&gt;"&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Lalu jika sudah ada &lt;i&gt;Internal Oscilator&lt;/i&gt;, mengapa banyak orang yang menggunakan &lt;i&gt;Oscilator Eksternal&lt;/i&gt;?? &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Beragam alasannya, misal: &lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;jika kita menggunakan chip ATmega untuk komunikasi serial(RS232) sebaiknya kita memakai XTAL 11,0592 MHz agar tidak ada error saat setting baudrate (error= &lt;b&gt;0%)&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;menggunakan XTAL 4MHz, agar chip bisa lebih cepat jika dibandingkan dengan internal oscilator yang hanya 1MHz. &lt;/li&gt;
&lt;/span&gt;&lt;/ol&gt;&lt;span class="fullpost"&gt;&lt;b&gt;NB:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;Jika kita sudah &lt;b&gt;terlanjur&lt;/b&gt; men "SET" sumber clock chip menggunakan &lt;i&gt;Oscilator Eksternal, &lt;/i&gt;maka &lt;b&gt;kita harus memasang XTAL&lt;/b&gt; pada rangkaian microcontroller kita. Jika tidak  microcontroller kita tidak akan berfungsi. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat XTAL telah terpasang dan rangkaian microcontroller kita sudah berfungsi, baru kita bisa merubah sumber clock chip agar kembali menggunakan &lt;i&gt;Internal Oscilator&lt;/i&gt; atau tetap menggunakan &lt;i&gt;Eksternal Oscilator&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;u&gt;any questions?? post comment on this blog: &lt;/u&gt;&lt;span style="color: blue;"&gt;&lt;a href="http://avrku.blogspot.com/"&gt;http:\\avrku.blogspot.com&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.      &lt;br /&gt;
AVR is a registered trademark of Atmel Corporation.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-9169795895054865598?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/9169795895054865598/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=9169795895054865598&amp;isPopup=true' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/9169795895054865598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/9169795895054865598'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2008/12/internal-oscilator-microcontroller.html' title='Internal Oscilator Microcontroller'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_05CaZNXNb7o/ST5_wDEccsI/AAAAAAAAAGQ/qy9MGpDC9FA/s72-c/image_thumb11.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-4648585079206907099</id><published>2008-12-03T22:07:00.003+07:00</published><updated>2010-03-14T11:48:08.364+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Mengenal ADC (1)</title><content type='html'>&lt;span class="awal"&gt;A&lt;/span&gt;DC (Analog to Digital Converter) adalah fitur paling populer dari ATmega 8535. Dengan adanya fitur ini kita tidak perlu menggunakan ADC0804 untuk membaca sinyal analog. ATmega 8535 memiliki 8 channel input ADC. Hasil pembacaan ADC beresolusi maksimum 10 bit (hmmm... cukup presisi. Biasanya saya hanya menggunakan 8 bit biar gak bingung ngitungnya.. He3...) &lt;br /&gt;
&lt;b&gt;Register-Register yang mempengaruhi ADC:&lt;/b&gt;&lt;br /&gt;
Berikut adalah daftar register untuk menentukan setting ADC&lt;br /&gt;
&lt;span class="fullpost"&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Register ADMUX&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Register ADMUX digunakan untuk:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;menentukan tegangan referensi dari ADC &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;menentukan format data hasil konversi ADC &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;menentukan channel ADC yg akan digunakan (&lt;b&gt;Ingat!! &lt;/b&gt;ATmega 8535 memiliki 8 channel ADC ) &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Berikut isi dari register ADMUX: &lt;/span&gt;&lt;br /&gt;
&lt;div align="center"&gt;&lt;/div&gt;&lt;table align="center" border="2" cellpadding="2" cellspacing="0" style="width: 400px;"&gt;&lt;tbody&gt;
&lt;tr&gt;             &lt;td valign="top" width="50"&gt;Bit 7&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 6&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 5&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 4&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 3&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 2&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 1&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 0&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="50"&gt;&lt;b&gt;REFS1&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;REFS0&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;ADLAR&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;-&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;MUX3&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;MUX2&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;MUX1&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;MUX0&lt;/b&gt;&lt;/td&gt;           &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div align="center"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span class="fullpost"&gt;Bit 7 (REFS1) dan bit 6(REFS0) digunakan untuk menentukan tegangan referensi ADC.&lt;/span&gt;&lt;br /&gt;
&lt;div align="center"&gt;&lt;/div&gt;&lt;table align="center" border="2" cellpadding="2" cellspacing="0" style="width: 400px;"&gt;&lt;tbody&gt;
&lt;tr&gt;             &lt;td valign="top" width="76"&gt;Bit 7&lt;/td&gt;              &lt;td valign="top" width="78"&gt;Bit 6&lt;/td&gt;              &lt;td valign="top" width="239"&gt;Tegangan Referensi&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="78"&gt;0&lt;/td&gt;              &lt;td valign="top" width="78"&gt;0&lt;/td&gt;              &lt;td valign="top" width="239"&gt;&lt;div align="justify"&gt;&lt;i&gt;pin&lt;/i&gt; AREF, internal Vref di matikan (off)&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="79"&gt;0&lt;/td&gt;              &lt;td valign="top" width="78"&gt;1&lt;/td&gt;              &lt;td valign="top" width="239"&gt;&lt;div align="justify"&gt;&lt;i&gt;pin&lt;/i&gt; AVCC, dengan kapasitor eksternal pada&amp;nbsp; &lt;i&gt;pin&lt;/i&gt; AREF&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="78"&gt;0&lt;/td&gt;              &lt;td valign="top" width="239"&gt;tidak digunakan&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;&lt;br /&gt;
1&lt;/td&gt;              &lt;td valign="top" width="78"&gt;&lt;br /&gt;
1&lt;/td&gt;              &lt;td valign="top" width="239"&gt;&lt;div align="justify"&gt;tegangan referensi internal 2,56 V dengan kapasitor eksternal pada &lt;i&gt;pin &lt;/i&gt;AREF&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div align="center"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;Bit 5 (ADLAR) digunakan untuk menentukan format data hasil konversi.&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span class="fullpost"&gt;Isi bit ini dengan 1 (ADLAR=1)jika menggunakan resolusi 8 bit&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;Bit 3..0 (MUX3..0) digunakan untuk menentukan channel ADC&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;table align="center" border="2" cellpadding="2" cellspacing="0" style="width: 400px;"&gt;&lt;tbody&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;Bit 3&lt;/td&gt;              &lt;td valign="top" width="80"&gt;Bit 2&lt;/td&gt;              &lt;td valign="top" width="80"&gt;Bit 1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;Bit 0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;Channel ADC&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;2&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;3&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;4&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;5&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;6&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="80"&gt;0&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;1&lt;/td&gt;              &lt;td valign="top" width="80"&gt;7&lt;/td&gt;           &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;Contoh:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tegangan referensi&amp;nbsp; ADC menggunakan AVCC,&amp;nbsp; mode 10 bit, membaca channel 1 &lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="center"&gt;&lt;span class="fullpost"&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/STagw7v4XsI/AAAAAAAAAGE/jn0JX9RhTMI/image5.png"&gt;&lt;img alt="image" border="0" height="142" src="http://lh5.ggpht.com/_05CaZNXNb7o/STagy0tHMEI/AAAAAAAAAGI/fHUXcfvGo-w/image_thumb1.png" style="border-width: 0px;" width="244" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;maka programnya:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADMUX=0x41;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Register ADCSRA&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;table align="center" border="2" cellpadding="2" cellspacing="0" style="width: 404px;"&gt;&lt;tbody&gt;
&lt;tr&gt;             &lt;td valign="top" width="50"&gt;Bit 7&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 6&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 5&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 4&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 3&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 2&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 1&lt;/td&gt;              &lt;td valign="top" width="50"&gt;Bit 0&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="50"&gt;&lt;b&gt;ADEN&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;ADSC&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;ADFR&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;ADIF&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;ADIE&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;ADPS2&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;ADPS1&lt;/b&gt;&lt;/td&gt;              &lt;td valign="top" width="50"&gt;&lt;b&gt;ADPS0&lt;/b&gt;&lt;/td&gt;           &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Bit 7 (ADEN) untuk mengaktifkan ADC. ADEN=0 disable / ADEN=1 enable&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;Bit 6 (ADSC) untuk memulai (start) pembacaan ADC. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;Bit 5 (ADFR)&amp;nbsp; jika ADFR=1 free running mode , ADFR=0 single conversion&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;Bit 4 (ADIF) bit penanda interupsi. Bernilai 1 saat konversi ADC selesai.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;Bit 3 (ADIE) berfungsi untuk mengaktifkan interupsi ADC. ADIE=1 enable / ADIE=0 disable&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;Bit 2..0(ADPS2..0) menentukan &lt;i&gt;clock&lt;/i&gt; ADC&lt;/span&gt;&lt;/div&gt;&lt;table align="center" border="2" cellpadding="2" cellspacing="0" style="width: 404px;"&gt;&lt;tbody&gt;
&lt;tr&gt;             &lt;td valign="top" width="16"&gt;&lt;/td&gt;              &lt;td valign="top" width="91"&gt;Bit 2&lt;/td&gt;              &lt;td valign="top" width="77"&gt;Bit 1&lt;/td&gt;              &lt;td valign="top" width="87"&gt;Bit 0&lt;/td&gt;              &lt;td valign="top" width="123"&gt;Clock&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="21"&gt;&lt;/td&gt;              &lt;td valign="top" width="90"&gt;0&lt;/td&gt;              &lt;td valign="top" width="77"&gt;0&lt;/td&gt;              &lt;td valign="top" width="87"&gt;0&lt;/td&gt;              &lt;td valign="top" width="121"&gt;XTAL / 2&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="23"&gt;&lt;/td&gt;              &lt;td valign="top" width="90"&gt;0&lt;/td&gt;              &lt;td valign="top" width="77"&gt;0&lt;/td&gt;              &lt;td valign="top" width="87"&gt;1&lt;/td&gt;              &lt;td valign="top" width="120"&gt;XTAL / 2&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="26"&gt;&lt;/td&gt;              &lt;td valign="top" width="90"&gt;0&lt;/td&gt;              &lt;td valign="top" width="77"&gt;1&lt;/td&gt;              &lt;td valign="top" width="87"&gt;0&lt;/td&gt;              &lt;td valign="top" width="120"&gt;XTAL / 4&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="27"&gt;&lt;/td&gt;              &lt;td valign="top" width="89"&gt;0&lt;/td&gt;              &lt;td valign="top" width="77"&gt;1&lt;/td&gt;              &lt;td valign="top" width="87"&gt;1&lt;/td&gt;              &lt;td valign="top" width="119"&gt;XTAL / 8&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="30"&gt;&lt;/td&gt;              &lt;td valign="top" width="89"&gt;1&lt;/td&gt;              &lt;td valign="top" width="77"&gt;0&lt;/td&gt;              &lt;td valign="top" width="87"&gt;0&lt;/td&gt;              &lt;td valign="top" width="119"&gt;XTAL /16&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="31"&gt;&lt;/td&gt;              &lt;td valign="top" width="89"&gt;1&lt;/td&gt;              &lt;td valign="top" width="77"&gt;0&lt;/td&gt;              &lt;td valign="top" width="87"&gt;1&lt;/td&gt;              &lt;td valign="top" width="119"&gt;XTAL / 32&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="31"&gt;&lt;/td&gt;              &lt;td valign="top" width="89"&gt;1&lt;/td&gt;              &lt;td valign="top" width="77"&gt;1&lt;/td&gt;              &lt;td valign="top" width="87"&gt;0&lt;/td&gt;              &lt;td valign="top" width="119"&gt;XTAL / 64&lt;/td&gt;           &lt;/tr&gt;
&lt;tr&gt;             &lt;td valign="top" width="31"&gt;&lt;/td&gt;              &lt;td valign="top" width="89"&gt;1&lt;/td&gt;              &lt;td valign="top" width="77"&gt;1&lt;/td&gt;              &lt;td valign="top" width="87"&gt;1&lt;/td&gt;              &lt;td valign="top" width="121"&gt;XTAL / 128&lt;/td&gt;           &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Register ADCL dan ADCH&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;merupakan 2 register tempat menampung hasil pembacaan ADC&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;untuk mengambil nilai nya gunakan ADCW(mode 10 bit) dan ADCH (mode 8 bit)&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;misal: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adc_data=ADCH; //memasukkan nilai ADC mode 8bit ke variable adc_data&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="fullpost"&gt;Saat akan menggunakan ADC, hal yang pertama harus di lakukan adalah ADC initialization / inisialisasi ADC (menentukan mode ADC).&lt;/span&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;contoh inisialisasi ADC:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;// ADC initialization        &lt;br /&gt;
// ADC Clock frequency: 125.000 kHz         &lt;br /&gt;
// ADC Voltage Reference: AVCC pin         &lt;br /&gt;
// ADC High Speed Mode: Off         &lt;br /&gt;
// ADC Auto Trigger Source: None         &lt;br /&gt;
ADMUX=0x40;         &lt;br /&gt;
ADCSRA=0x85;         &lt;br /&gt;
SFIOR&amp;amp;=0xEF;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;nyampe sini dulu ya&amp;nbsp; kenalan ma ADCnya,,,&amp;nbsp; ntar dismbung lagi ...&amp;nbsp; ngantuk berat nwech.....^_^&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;any questions?? post comment on this blog: &lt;/u&gt;&lt;span style="color: blue;"&gt;&lt;a href="http://avrku.blogspot.com/"&gt;http:\\avrku.blogspot.com&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.        &lt;br /&gt;
AVR is a registered trademark of Atmel Corporation&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-4648585079206907099?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/4648585079206907099/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=4648585079206907099&amp;isPopup=true' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/4648585079206907099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/4648585079206907099'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2008/12/mengenal-adc-1.html' title='Mengenal ADC (1)'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_05CaZNXNb7o/STagy0tHMEI/AAAAAAAAAGI/fHUXcfvGo-w/s72-c/image_thumb1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-716403260032977937</id><published>2008-11-24T09:40:00.003+07:00</published><updated>2010-03-14T11:48:15.190+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Mendalami Prosedur dan Fungsi</title><content type='html'>&lt;span class="awal"&gt;D&lt;/span&gt;alam penulisan program bahasa C, kadang terdapat program yang kita gunakan berulang-ulang. Dengan metode penulisan secara sederhana kita akan menulisa &lt;span style="font-style: italic;"&gt;code&lt;/span&gt; tersebut berulang-ulang, hmmm..... pasti merepotkan. Dengan Prosedur dan Fungsi, kita gak perlu repot-repot menulis setiap baris &lt;span style="font-style: italic;"&gt;code&lt;/span&gt; tersebut.&lt;i&gt;&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;1. Prosedur&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan contoh program berikut:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;#include&amp;lt;mega8535.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;#include&amp;lt;delay.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;void main()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;DDRA= 0xff;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;PORTA=0x00;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;     while(1)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;     {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;0;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;1;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;2;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;3;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;4;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;5;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x03&amp;lt;&amp;lt;0;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x03&amp;lt;&amp;lt;1;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x03&amp;lt;&amp;lt;2;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;     }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;span style="font-family: Arial;"&gt;Simulasikan program di atas menggunakan AVR Studio4. Maksud dari &lt;i&gt;code&lt;/i&gt;  &lt;b&gt;&amp;lt;&amp;lt;  &lt;/b&gt;yaitu untuk menggeser &lt;i&gt;bit&lt;/i&gt; ke kiri :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;PORTA=0x01&amp;lt;&amp;lt;&lt;b&gt;n&lt;/b&gt;;  //menggeser nilai sebesar 0x01 digeser ke kiri sebanyak &lt;b&gt;n&lt;/b&gt;. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;                                  //Dan mengeluarkan hasilnya ke Port A&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;misal:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;PORTA=0x01&amp;lt;&amp;lt;2; //artinya menggeser nilai 0x01 digeser ke kiri sebanyak 2 kali.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;                                 //lalu hasilnya dikeluarkan ke Port A&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Pahami gambar berikut:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/SSoUL2bU7xI/AAAAAAAAAF8/d0VjSyejdvo/image8.png"&gt;&lt;img align="left" alt="image" border="0" height="260" src="http://lh6.ggpht.com/_05CaZNXNb7o/SSoUMn9RhhI/AAAAAAAAAGA/3ocO7iTixcc/image_thumb6.png" style="border-width: 0px;" width="125" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;nilai yang dikeluarkan ke Port A, sama seperti gambar di samping. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pertama, kondisi high pada Port A.0 lalu Port A.1 kemudian Port A.2 dan seterusnya.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Logika yang sama juga digunakan untuk &lt;i&gt;code program &lt;/i&gt;berikut:&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;PORTA=0x03&amp;lt;&amp;lt;&lt;b&gt;n  &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;//nilai digeser ke kiri sebanyak &lt;b&gt;n&lt;/b&gt;.                                 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;//tapi kali ini nilai yang digeser sebesar 0x03 =  0b000 0011&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;i&gt;program&lt;/i&gt; di atas dapat juga ditulis seperti dibawah:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;#include&amp;lt;mega8535.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;#include&amp;lt;delay.h&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;void geserkiri_A()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;0;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;1;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;2;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;3;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;4;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x01&amp;lt;&amp;lt;5;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;void geserkiri_B()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;{ &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x03&amp;lt;&amp;lt;0;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x03&amp;lt;&amp;lt;1;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          PORTA=0x03&amp;lt;&amp;lt;2;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;          delay_ms(50);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;void main()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;DDRA= 0xff;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;PORTA=0x00;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;     while(1)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;     {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;         &lt;/span&gt;&lt;span style="font-family: Comic Sans MS;"&gt;geserkiri_A();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;         geserkiri_B();        &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;     }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Pada program di atas, &lt;i&gt;main program&lt;/i&gt; hanya berisi beberapa baris program saja. &lt;i&gt;Main program&lt;/i&gt; memanggil prosedur &lt;b&gt;geserkiri_A&lt;/b&gt;   kemudian memanggil prosedur &lt;b&gt;geserkiri_B&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat sebuah prosedur dipanggil, maka code program yang berada di dalam prosedur (di dalam kurung kurawal ) akan dijalankan oleh microcontroller. Cara memanggil prosedur cukup dengan menuliskan nama prosedurnya diikuti tanda kurung &lt;b&gt;&lt;u&gt;&lt;span style="color: red;"&gt;( )&lt;/span&gt;&lt;/u&gt;&lt;/b&gt; . Contoh:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;............&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;............&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;geserkiri_A(); &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;//berarti micro akan menjalankan code program yang ada di dalam prosedur geserkiri_A()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;............&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Dengan menggunakan prosedur, &lt;i&gt;main program&lt;/i&gt; akan terlihat lebih simple dan mudah dipahami.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;2. Fungsi&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Fungsi merupakan prosedur yang memiliki nilai return (menghasilkan nilai).&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan &lt;i&gt;code program&lt;/i&gt; berikut:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;#include&amp;lt;mega8535.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;#include&amp;lt;delay.h&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;unsigned char baca_PINA()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   unsigned char d;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   d=PINA;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   return d;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;void main()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   &lt;/span&gt;&lt;span style="font-family: Comic Sans MS;"&gt;DDRA=0x00;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   DDRB=0xff;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   while(1)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;        PORTB=baca_PINA();&lt;/span&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Pada contoh program di atas terdapat &lt;i&gt;fungsi&lt;/i&gt;  &lt;b&gt;baca_PINA&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;unsigned char baca_PINA()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   unsigned char d; //mendeklarasikan variabel &lt;b&gt;d &lt;/b&gt;dengan tipe data &lt;i&gt;unsigned char&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   d=PINA; //memasukkan nilai PINA ke variabel &lt;b&gt;d&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;   return d; //mengembalikan(return) nilai &lt;b&gt;d&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;                //nilai &lt;b&gt;d&lt;/b&gt; ini merupakan nilai yg dihasilkan saat fungsi &lt;b&gt;baca_PINA&lt;/b&gt; dipanggil&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Cara memanggil &lt;i&gt;fungsi&lt;/i&gt; seperti di atas sama dengan cara memanggil &lt;i&gt;prosedur&lt;/i&gt;. Cuman karena &lt;i&gt;fungsi&lt;/i&gt; menghasilkan sebuah nilai, maka kita harus menyediakan tempat untuk menampung nilai tersebut. Contohnya pada program di atas terdapat &lt;i&gt;code program&lt;/i&gt; berikut:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;PORTB=baca_PINA(); //memanggil fungsi baca_PINA ,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;                               //lalu mengeluarkan hasilnya ke  PORTB&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Mungkin ada temen2 yang tanya, kenapa harus memakai fungsi segala, program untuk membaca nilai PINA lalu mengeluarkannya ke PORTB kan bisa ditulis seperti ini:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;...........&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;..........&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;while(1)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;      PORTB=PINA;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;.........&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Iya YA... kenapa mesri repot2.. HEhehe..&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Program di atas kan hanya contoh simple aja biar gak bingung. Aplikasi sesungguhnya dari penggunaan &lt;i&gt;fungsi&lt;/i&gt; adalah saat kita membaca data dari sensor, adc, serial dll...&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;NB:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Ada prosedur dan fungsi yang membutuhkan nilai masukan&lt;/b&gt;. Misal:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: Comic Sans MS;"&gt;&lt;b&gt;unsigned int&lt;/b&gt; read_adc(&lt;b&gt;unsigned char&lt;/b&gt; adc_input)          &lt;br /&gt;
{          &lt;br /&gt;
ADMUX=adc_input|ADC_VREF_TYPE;          &lt;br /&gt;
ADCSRA|=0x40;          &lt;br /&gt;
while ((ADCSRA &amp;amp; 0x10)==0);          &lt;br /&gt;
ADCSRA|=0x10;          &lt;br /&gt;
return ADCW;          &lt;br /&gt;
}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Saat kita memanggil fungsi &lt;b&gt;read_adc&lt;/b&gt;,kita harus memasukkan nilai variabel &lt;b&gt;adc_input&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;misal:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;data_ADC=read_adc(0); //nilai &lt;b&gt;0&lt;/b&gt; merupakan nilai untuk variabel &lt;b&gt;adc_input&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Yupzzz...... Sekarang kita telah mempelajari dasar fungsi dan prosedur. Silahkan kembangkan ke dalam program yang lebih komplek. CHayooo..!!!! &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;any questions?? post comment on this blog: &lt;/u&gt;&lt;span style="color: blue;"&gt;&lt;a href="http://avrku.blogspot.com/"&gt;http:\\avrku.blogspot.com&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.       &lt;br /&gt;
AVR is a registered trademark of Atmel Corporation.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-716403260032977937?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/716403260032977937/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=716403260032977937&amp;isPopup=true' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/716403260032977937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/716403260032977937'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2008/11/mendalami-prosedur-dan-fungsi.html' title='Mendalami Prosedur dan Fungsi'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_05CaZNXNb7o/SSoUMn9RhhI/AAAAAAAAAGA/3ocO7iTixcc/s72-c/image_thumb6.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-6102397677044211824</id><published>2008-11-13T09:44:00.003+07:00</published><updated>2010-03-14T11:48:19.754+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Belajar AVR studio 4</title><content type='html'>&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/SRuUDACPJrI/AAAAAAAAAFM/af7XwWoQQK8/image1.png"&gt;&lt;img align="left" alt="image" border="0" height="151" src="http://lh3.ggpht.com/_05CaZNXNb7o/SRuUF2r0tBI/AAAAAAAAAFQ/beTmvDCt67E/image_thumb.png" style="border-width: 0px;" width="260" /&gt;&lt;/a&gt; AVR Studio 4 merupakan software buatan ATMEL corporation. Software ini biasa digunakan untuk mensimulasikan program yang telah dibuat di Code Vision AVR. Jadi kita bisa mengetahui jalannya program tanpa harus mendownload ke microcontroller. Kita bisa mendownload software ini di &lt;a href="http://www.atmel.com/dyn/products/tools.asp?family_id=607"&gt;http://www.atmel.com&lt;/a&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Untuk mulai belajar menggunakan AVR Studio 4, kita buat dulu code program di CodeVision AVR lalu kita compile code program (tekan &lt;b&gt;Shit&lt;/b&gt;+&lt;b&gt;F9&lt;/b&gt;). Kemudian kita buka file &lt;b&gt;.COFF &lt;/b&gt;nya dengan AVR Studio 4.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;1. Membuat Code Program&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Buat project baru di Code Vision AVR, masukkan program berikut:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;#include &amp;lt;mega8535.h&amp;gt;  &lt;br /&gt;
#include &amp;lt;delay.h&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;void main()  &lt;br /&gt;
{   &lt;br /&gt;
DDRA=0xff;   &lt;br /&gt;
while(1)   &lt;br /&gt;
{   &lt;br /&gt;
PORTA=0xff;   &lt;br /&gt;
delay_ms(50);   &lt;br /&gt;
PORTA=0x00;   &lt;br /&gt;
delay_ms(50);   &lt;br /&gt;
}   &lt;br /&gt;
}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Arti dari program dia atas adalah:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;#include &amp;lt;mega8535.h&amp;gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berarti menyertakan file library untuk chip ATmega 8535&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;#include &amp;lt;delay.h&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berarti menyertakan file untuk fungsi delay. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Di dalam Code Vision AVR jika kita ingin menggunakan delay kita harus menyertakan file library &lt;b&gt;delay.h &lt;/b&gt;dan untuk memakainya gunakan perintah:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;delay_us(xxx); //delay dalam micro second&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;delay_ms(xxx); &lt;b&gt;&lt;/b&gt;//delay dalam mili second&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;xxx &lt;/b&gt;adalah nilai yang diinginkan. Contoh:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;delay_us(50); //berarti delay selama 50 micro second&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;delay_ms(1000); //delay selama 1000 mili second == 1 detik&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;void main ()&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berarti program utama (program yang dijalankan microcontroller) &lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;DDRA=0xff;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berarti seluruh pin-pin PortA dijadikan output&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;while(1)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berarti &lt;i&gt;infinite looping &lt;/i&gt;(apa itu infinite looping?? lihat kembali artikel Basic Input Output &lt;b&gt;NB:2&lt;/b&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;PORTA=0xff;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berarti mengeluarkan output ke PORTA dengan nilai 0xff == 0b 1111 1111 (PortA High semua)&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;delay_ms(50)&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berarti delay selama 50 mili detik&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;PORTA=0x00;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berarti mengeluarkan output ke PORTA dengan nilai 0x00 == 0b 0000 0000 (PortA Low semua)&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;delay_ms(50);&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;berati delay selama 50 mili second (50 mili detik)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;2. Compile Program &lt;/b&gt;(tekan &lt;b&gt;Shift&lt;/b&gt; + &lt;b&gt;F9&lt;/b&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Inget kembali &lt;i&gt;compile program&lt;/i&gt; bertujuan menghasilkan file untuk di download ke micro (file &lt;b&gt;.HEX&lt;/b&gt;), selain itu proses &lt;i&gt;compile&lt;/i&gt; juga menghasilkan file yang bisa digunakan untuk simulasi di AVR studio yaitu file &lt;b&gt;.COFF&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;karena tidak untuk didownload ke micro, kita rubah dulu setting &lt;b&gt;After Make &lt;/b&gt;Project.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;klik menu &lt;b&gt;Project &lt;/b&gt;---&amp;gt;&lt;b&gt; Configure&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;klik tab &lt;b&gt;After Make&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SRuUHscjXBI/AAAAAAAAAFU/IzZL9-Uvm2A/image8.png"&gt;&lt;img align="left" alt="image" border="0" height="146" src="http://lh5.ggpht.com/_05CaZNXNb7o/SRuUKAzdeDI/AAAAAAAAAFY/BBAQfl7VMEU/image_thumb3.png" style="border-width: 0px;" width="244" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pastikan &lt;i&gt;check button &lt;/i&gt;&lt;b&gt;Program the Chip&lt;/b&gt; &lt;span style="color: red;"&gt;tidak dicentang&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;kemudian klik &lt;b&gt;OK&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;YupZzz.... sekarang kita tinggal menekan tombol &lt;b&gt;Shift &lt;/b&gt;+&lt;b&gt; F9 &lt;/b&gt;untuk meng &lt;i&gt;compile&lt;/i&gt; program.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;3. Mensimulasikan program di AVR Studio 4&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Jalankan software AVR Studio 4.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/SRuUOWGRTMI/AAAAAAAAAFc/kOS263cynx8/image13.png"&gt;&lt;img align="left" alt="image" border="0" height="172" src="http://lh6.ggpht.com/_05CaZNXNb7o/SRuUQhb8eQI/AAAAAAAAAFg/UAhLzRLsVcg/image_thumb6.png" style="border-width: 0px;" width="266" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat muncul tampilan seperti gambar di samping, pilih &lt;b&gt;Open&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/SRuUSok8E1I/AAAAAAAAAFk/ihd5I2IbKvI/image28.png"&gt;&lt;img align="left" alt="image" border="0" height="219" src="http://lh4.ggpht.com/_05CaZNXNb7o/SRuUViTOu_I/AAAAAAAAAFo/93KsAF6LsdQ/image_thumb17.png" style="border-width: 0px;" width="326" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Lalu pada &lt;i&gt;window &lt;/i&gt;&lt;b&gt;Open Project File or Object File&lt;/b&gt;, masuk ke direktori folder tempat kita meng&lt;i&gt;compile&lt;/i&gt; &lt;i&gt;code program&lt;/i&gt; tadi.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pilih file &lt;b&gt;.COFF&lt;/b&gt; hasil compile lalu klik &lt;b&gt;Open&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Lihat gambar di atas, file code program saya bernama &lt;b&gt;Coba1&lt;/b&gt;, setelah di compile dihasilkan beberapa file yang juga bernama Coba1. File-file tersebut walaupun namanya sama tapi tipenya berbeda-beda. Ada &lt;i&gt;Intel Hex file, Atmel object file, COFF symbolic debug filer &lt;/i&gt;dll. Nah... file yang kit gunakan untuk simulasi di AVR Studio 4 adalah &lt;b&gt;COFF symbolic debug file&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pada &lt;i&gt;window&lt;/i&gt; &lt;b&gt;Save AVR Studio Project File&lt;/b&gt; klik &lt;b&gt;Save&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/SRuUXkIOwAI/AAAAAAAAAFs/IVPmo3uJHzM/image27.png"&gt;&lt;img align="left" alt="image" border="0" height="231" src="http://lh6.ggpht.com/_05CaZNXNb7o/SRuUZ9E3yGI/AAAAAAAAAFw/sU0eB_Rpyyc/image_thumb16.png" style="border-width: 0px;" width="347" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat muncul window&lt;i&gt; Select debug platform and device&lt;/i&gt;. Pastikan:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Debug platform: &lt;b&gt;AVR Simulator&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Device: &lt;b&gt;ATmega 8535&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;lalu klik &lt;b&gt;Finish&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;HooRee!!! jadi dech... tekan &lt;b&gt;F11&lt;/b&gt; untuk menjalankan baris program satu persatu.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SRuUeEWtGlI/AAAAAAAAAF0/oTdtzMokxyM/image33.png"&gt;&lt;img alt="image" border="0" height="313" src="http://lh6.ggpht.com/_05CaZNXNb7o/SRuUi3q3YkI/AAAAAAAAAF4/BceSVf_kdsQ/image_thumb20.png" style="border-width: 0px;" width="528" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Tampilan simulasi AVR Studio 4. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Saat kita menekan &lt;b&gt;F11&lt;/b&gt;, code program di &lt;i&gt;window &lt;/i&gt;&lt;b&gt;1&lt;/b&gt; akan dijalankan satu persatu. Pada &lt;i&gt;window &lt;/i&gt;&lt;b&gt;I/O View &lt;/b&gt;(&lt;i&gt;window&lt;/i&gt; &lt;b&gt;2&lt;/b&gt;) klik PORTA agar kondisi register-regiser PORTA ditampilkan di &lt;i&gt;window&lt;/i&gt; &lt;b&gt;3&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Lihat setiap perubahan yang terjadi di &lt;i&gt;window&lt;/i&gt; &lt;b&gt;I/O View&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Inilah keuntungan menggunakan simulator AVR Studio 4, kita bisa memahami setiap baris program dengan melihat langsung apa yang terjadi pada register microcontroller. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Untuk latihan, coba buat berbagai macam program dan simulasikan di AVR Studio 4. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Coba jalankan simulasi dengan &lt;b&gt;ALT&lt;/b&gt;+&lt;b&gt;F5 &lt;/b&gt;(mode Auto Step) dan amati apa yang terjadi pada &lt;i&gt;window &lt;/i&gt;&lt;b&gt;3&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Semakin sering latihan maka logika kita akan semakin terasah. Saat logika anda sudah bener -bener tajam saat itulah anda menjadi &lt;span style="color: red;"&gt;&lt;b&gt;&lt;span style="font-family: comic sans ms;"&gt;AVR Master&lt;/span&gt;&lt;span style="color: black;"&gt;^_^&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;u&gt;any questions?? post comment on this blog: &lt;/u&gt;&lt;span style="color: blue;"&gt;&lt;a href="http://avrku.blogspot.com/"&gt;http:\\avrku.blogspot.com&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;u&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.       &lt;br /&gt;
AVR is a registered trademark of Atmel Corporation.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;  &lt;br /&gt;
&lt;div class="post-footer"&gt;&lt;div class="post-footer-line post-footer-line-1"&gt;&lt;span class="post-timestamp"&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-6102397677044211824?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/6102397677044211824/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=6102397677044211824&amp;isPopup=true' title='10 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/6102397677044211824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/6102397677044211824'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2008/11/belajar-avr-studio-4.html' title='Belajar AVR studio 4'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_05CaZNXNb7o/SRuUF2r0tBI/AAAAAAAAAFQ/beTmvDCt67E/s72-c/image_thumb.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-2886740985220150938</id><published>2008-11-09T05:21:00.003+07:00</published><updated>2010-03-14T11:48:26.633+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Basic Input Output (I/O)</title><content type='html'>&lt;span class="awal"&gt;A&lt;/span&gt;VR dengan package 40-pin PDIP, contoh ATmega 8535 memiliki 32 I/O lines. Masing-masing lines dapat diatur fungsinya. Sebagian dari lines-lines I/O  tersebut ada yang memilki fungsi-fungsi khusus, seperti ADC, Analog Comparator, PWM, USART dan External Interrupt. Kali ini kita akan membahas basicnya dulu. &lt;br /&gt;
Fungsi dasar dari setiap pin microcontroller adalah:&lt;br /&gt;
&lt;blockquote&gt;membaca perubahan level tegangan apakah &lt;b&gt;0&lt;/b&gt; atau &lt;b&gt;5&lt;/b&gt; volt (jika digunakan sebagai input) &lt;/blockquote&gt;&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;mengeluarkan tegangan sebesar  &lt;b&gt;0&lt;/b&gt; atau &lt;b&gt;5&lt;/b&gt; volt (jika digunakan sebagai output)&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Microcontroller AVR memiliki 2 register yang berhubungan dengan fungsi dasar ini, yaitu:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;1. Register DDR&lt;i&gt;x&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;DDR&lt;i&gt;&lt;b&gt;x &lt;/b&gt;&lt;/i&gt;( &lt;b&gt;&lt;i&gt;x&lt;/i&gt;&lt;/b&gt; adalah port micro yang digunakan ).  &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Misal: menggunakan Port A berarti registernya DDRA.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;Register ini berfungsi untuk mengatur &lt;b&gt;arah&lt;/b&gt; Pin/Port micro. Apakah dipakai sebagai input atau output. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Nilai register ini sebesar &lt;b&gt;8 bit&lt;/b&gt;. Setiap bit mewakili masing-masing pin kaki micro. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Jika pin kaki micro digunakan sebagai &lt;b&gt;input&lt;/b&gt; maka register &lt;b&gt;DDR&lt;i&gt;x&lt;/i&gt;&lt;/b&gt; nya harus &lt;b&gt;bernilai 0 (nol)&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Jika pin kaki micro digunakan sebagai &lt;b&gt;output&lt;/b&gt; maka register &lt;b&gt;DDR&lt;i&gt;x&lt;/i&gt;&lt;/b&gt; nya harus &lt;b&gt;bernilai &lt;/b&gt;&lt;b&gt;1&lt;/b&gt;.&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Misal Port A akan digunakan sebagai input maka untuk mensetnya kita gunakan perintah:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;DDRA= 0x00;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;//ini berarti seluruh pin-pin pada Port A digunakan sebagai input&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;span style="background-color: white;"&gt;Contoh:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span style="background-color: white;"&gt;Port A.0 dijadikan input sedangkan Port A.2 ..sampai.. Port A.7 digunakan sebagai &lt;/span&gt;&lt;span style="background-color: white;"&gt;output      maka perintahnya:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;DDRA= 0xFE;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;0xFE (heksa) == 0b 1111 1110 (biner)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan baik-baik konversi biner diatas!! Setiap bit nilai biner mewakili Pin-Pin pada PortA.   &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SRYQ1DziatI/AAAAAAAAAEs/0aXyTy5XnVs/image4.png"&gt;&lt;img align="left" alt="image" border="0" height="211" src="http://lh5.ggpht.com/_05CaZNXNb7o/SRYQ2f91nSI/AAAAAAAAAEw/qvm8B7VGhfQ/image_thumb2.png" style="border-width: 0px;" width="284" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Amati dan pahami betul gambar di samping. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Port A.0 sebagai Input karena nilai DDRnya &lt;b&gt;0 (nol)&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Port A.1 sampai Port A.7 sebagi Output karena nilai DDRnya &lt;b&gt;1.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;2. Register PORTx&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;PORT&lt;b&gt;&lt;i&gt;x &lt;/i&gt;&lt;/b&gt;( &lt;b&gt;&lt;i&gt;x&lt;/i&gt;&lt;/b&gt; adalah port micro yang digunakan ).  &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Misal: menggunakan Port A berarti registernya PORTA.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Jika Port digunakan sebagai input&lt;/b&gt; register ini berfungsi sebagai penentu apakah kondisi Port di &lt;b&gt;Pull Up atau Floating&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Jika Port digunakan sebagai output&lt;/b&gt; register ini menentukan kondisi Port &lt;b&gt;High atau Low&lt;/b&gt;.&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Untuk memahami apa arti Pull Up perhatikan gambar berikut:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/SRYQ3AL3bKI/AAAAAAAAAE0/nSSgJ58l9t4/image12.png"&gt;&lt;img align="left" alt="image" border="0" height="244" src="http://lh4.ggpht.com/_05CaZNXNb7o/SRYQ4SK4PoI/AAAAAAAAAE4/brZhMfGiuHY/image_thumb6.png" style="border-width: 0px;" width="195" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Pin 1.&lt;/b&gt; dihubungkan ke VCC(tegangan 5 Volt) melalui resistor (R), inilah yang di maksud dengan &lt;b&gt;Pull Up.&lt;/b&gt; Saat tidak ada tegangan dari luar Pin 1 akan &lt;b&gt;cenderung berkondisi High (1)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Pin 2.&lt;/b&gt; dibiarkan begitu saja sehingga kondisi logic Pin2 rentan terhadap pengaruh sekitarnya. Pin 2. bisa berlogika high bisa juga berlogika low ini artinya logika Pin2 ngambang (&lt;b&gt;Floating&lt;/b&gt;). &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Kondisi floating biasanya diperlukan saat Pin sebuah IC atau micro dihubungkan ke sensor.  Karena jika di Pull Up dikhawatirkan kondisi logic Pin IC mengganggu kondisi logic pin-pin sensor. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan &lt;i&gt;code program&lt;/i&gt; berikut:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;DDRA=0x00;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;PORTA = 0xFF;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;ini berarti seluruh pin-pin pada Port A sebagai Input dan di Pull Up.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan &lt;i&gt;code program&lt;/i&gt; berikut:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;DDRB= 0x00;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;PORTB=0x0F;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;0x0F == 0b 0000 1111&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;berarti :&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Seluruh pin-pin PortB dijadikan Input&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;PortB.0 ..sampai.. PortB.3 di Pull Up&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;PortB.4 ..sampai.. PortB.7 dalam keadaan Floating&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Example:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;mengelurakan Output ke PortC dengan nilai 0x BB &lt;/li&gt;
&lt;/span&gt;&lt;/ol&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;#include &amp;lt;mega8535.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;void main()&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;DDRC= 0xFF;         //Port C sebagai Output&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;PORTC= 0x BB;      //mengeluarkan nilai 0x BB ke Port C&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;2.    membaca input di PORT A dan mengeluarkan nilainya ke PORT D &lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;#include &amp;lt;mega8535.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;void main()&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;DDRA= 0x00;         //Port A sebagai Input&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;PORTA= 0xFF;       //Port A di Pull Up&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;//karena tidak terhubung ke sensor, PortA di Pull Up agar kondisi logic nya tidak kacau&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;DDRD=0xFF;     //Port D sebagai Output&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;while(1)     //Infinite Looping (agar program dibawah ini dijalankan terus menerus) &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{ &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;PORTD=PINA;     //kondisi PORTD sama dengan PORTA&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;NB 1:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Amati lagi baris program: &lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;PORTD=PINA;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Mengapa tidak ditulis&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;PORTD=PORTA;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Hal ini tidak bisa dilakukan, dalam AVR kondisi input masuk ke register &lt;b&gt;PINx&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Untuk membaca input, gunakan &lt;i&gt;PINx&lt;/i&gt; bukan &lt;/b&gt;&lt;i&gt;&lt;b&gt;PORTx&lt;/b&gt;.&lt;/i&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;NB 2:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Apa itu &lt;b&gt;Infinite Looping??&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Infinite &lt;/b&gt;: tak terbatas, tak terhingga&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;Looping &lt;/b&gt;: perulangan, pengulangan, perputaran&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Infinite Looping adalah perulangan(looping) yang dijalankan terus menerus. INGAT!!! code program yang dijalankan AVR adalah code program yang berada dalam fungsi utama:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;void main()&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;..............................//&lt;i&gt;code program&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;.............................//&lt;i&gt;code program&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Program dijalankan berurutan dari atas ke bawah dan program tersebut hanya akan dijalankan &lt;b&gt;sekali&lt;/b&gt;. Dengan memakai infinite looping &lt;i&gt;Code Program&lt;/i&gt; yang berada di dalam infinite looping akan dijalankan terus menerus.&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;void main()&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;...................&lt;i&gt;//code program di luar infinite looping. Hanya dijalankan sekali&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;...................&lt;i&gt;//code program di luar infinite looping. Hanya dijalankan sekal&lt;/i&gt;i&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;while(1)     //infinite looping&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;..................................&lt;i&gt;//code program dalam infinite looping&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;.................................&lt;i&gt;//code program dalam infinite looping&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Untuk &lt;b&gt;keluar dari infinite looping&lt;/b&gt; gunakan perintah&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;break;&lt;/b&gt; &lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Mengapa terjadi Infinite Looping ??&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan &lt;i&gt;code program&lt;/i&gt; berikut:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;while(1)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;............................    &lt;i&gt;//code program&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;...........................     &lt;i&gt;//code program&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Arti dari &lt;i&gt;code program &lt;/i&gt;di atas adalah:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;while(1) //selama 1 maka kerjakan program di dalam kurung kurawal               &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;....................     &lt;i&gt;//code program&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;....................     &lt;i&gt;//code program&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;} &lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Statement diatas akan selalu benar (selalu bernilai satu) karena angka &lt;b&gt;1&lt;/b&gt;merupakan konstanta. Konstanta nilainya tidak akan berubah, sehingga terjadilah Looping terus menerus .&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Coba bedakan dengan &lt;i&gt;code program&lt;/i&gt; berikut:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;while(index&amp;lt;4)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;.......................................     &lt;i&gt;//code program&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;.......................................     &lt;i&gt;//code program&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;index=index+1;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Program di dalam kurung kurawal akan dijalankan selama &lt;b&gt;index&lt;/b&gt; kurang dari 4. &lt;b&gt;index&lt;/b&gt; merupakan variabel sehingga nilainya  bisa berubah. Nah.. jika &lt;b&gt;index&lt;/b&gt;  lebih dari atau sama dengan 4, &lt;b&gt;looping tidak dijalankan lagi&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;u&gt;any questions?? post comment on this blog: &lt;/u&gt;&lt;span style="color: blue;"&gt;&lt;a href="http://avrku.blogspot.com/"&gt;http:\\avrku.blogspot.com&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;u&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.      &lt;br /&gt;
AVR is a registered trademark of Atmel Corporation.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;  &lt;br /&gt;
&lt;div class="post-footer"&gt;&lt;div class="post-footer-line post-footer-line-1"&gt;&lt;span class="post-timestamp"&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span class="fullpost"&gt;    &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.      &lt;br /&gt;
AVR is a registered trademark of Atmel Corporation.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-2886740985220150938?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/2886740985220150938/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=2886740985220150938&amp;isPopup=true' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/2886740985220150938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/2886740985220150938'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2008/11/basic-input-output-io.html' title='Basic Input Output (I/O)'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_05CaZNXNb7o/SRYQ2f91nSI/AAAAAAAAAEw/qvm8B7VGhfQ/s72-c/image_thumb2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-1581002786177250295</id><published>2008-11-04T09:40:00.003+07:00</published><updated>2010-03-14T11:48:35.851+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Berkenalan Dengan CodeVision AVR</title><content type='html'>&lt;span class="awal"&gt;C&lt;/span&gt;ode vision AVR merupakan software untuk membuat code program microcontroller AVR. Software ini bisa kita download versi demonya di &lt;a href="http://www.hpinfotech.ro/"&gt;www.hpinfotech.ro&lt;/a&gt; . Dari yang saya tahu, kebanyakan programmer memakai software ini karena fasilitas-fasilitas yang disediakan CodeVision AVR memudahkan programmer dalam membuat code. &lt;br /&gt;
Kesulitan - kesulitan yang biasa ditemui saat memprogram yaitu belum bisa menggunakan menu -menu di CodeVision AVR, karena belum familiar.  Dalam artikel ini saya coba memberi gambaran singkat bagaimana cara menulis program di CodeVision AVR, merubah konfigurasi Compiler dan cara mendownload program ke dalam microcontroller.&lt;br /&gt;
&lt;span class="fullpost"&gt;       &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;1. Membuat Project&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;Buka aplikasi CodeVision AVR , pilih menu:  &lt;b&gt;File &lt;/b&gt;--&amp;gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Maka akan muncul message box  &lt;b&gt;Create New File&lt;/b&gt;, pilih &lt;b&gt;Project &lt;/b&gt;lalu klik &lt;b&gt;OK&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/SQ_QkkQZT0I/AAAAAAAAAC4/ERabD14AnEY/s1600-h/image%5B6%5D.png"&gt;&lt;img alt="image" border="0" height="132" src="http://lh6.ggpht.com/_05CaZNXNb7o/SQ_Qmd-J_DI/AAAAAAAAADE/faRWkqIOG9U/image_thumb%5B2%5D.png?imgmax=800" style="border-width: 0px;" width="198" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Setelah itu akan muncul message box &lt;b&gt;Confirm&lt;/b&gt;, pilih &lt;b&gt;NO&lt;/b&gt;. Message box ini menanyakan apakah  kita akan menggunakan CodeWizardAVR??&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SQ_QoGJpqUI/AAAAAAAAADI/YfSYItg28i8/s1600-h/image%5B18%5D.png"&gt;&lt;img align="left" alt="image" border="0" height="116" src="http://lh3.ggpht.com/_05CaZNXNb7o/SQ_QqbMqkjI/AAAAAAAAADU/HTyKlgsk10E/image_thumb%5B8%5D.png?imgmax=800" style="border-width: 0px;" width="244" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;CodeWizard AVR merupakan tools untuk menghasilkan code program secara otomatis. Hal ini memudahkan programmer karena  gak perlu repot-repot menulis code program. Tapi untuk beginner sebaiknya jangan menggunakan fasilitas ini, Saya sarankan tulis program dari awal agar lebih memahami setiap code program. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Berikutnya muncul box &lt;b&gt;Create New Project &lt;/b&gt;, pada kotak file name ketikkan nama file. Sebagai contoh beri nama: &lt;b&gt;Coba1&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Lalu muncul box &lt;b&gt;Configure Project&lt;/b&gt;, pada box ini terdapat  &lt;b&gt;Files, C Compiler &lt;/b&gt;dan&lt;b&gt; After Make&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Tab &lt;b&gt;Files &lt;/b&gt;digunakan untuk menyertakan file  source code&lt;b&gt;  &lt;/b&gt;yang akan digunakan dalam project. Setiap project membutuhkan minimal satu file source. &lt;i&gt;File &lt;b&gt;source&lt;/b&gt; merupakan file bahasa C yang kita tulis&lt;/i&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/SREUW9Nr0fI/AAAAAAAAADs/1od6Ae0fQ3Q/s1600-h/image%5B27%5D.png"&gt;&lt;img alt="image" border="0" height="352" src="http://lh3.ggpht.com/_05CaZNXNb7o/SREUbWGMsII/AAAAAAAAADw/ztR1VTMGy_c/image_thumb%5B19%5D.png?imgmax=800" style="border-width: 0px;" width="510" /&gt;&lt;/a&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Biarkan dulu setting awal tab &lt;b&gt;Files&lt;/b&gt; ini. Kita akan atur kemudian&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Tab &lt;b&gt;C Compiler &lt;/b&gt;digunakan untuk meng edit konfigurasi compiler. Tampilan tab &lt;b&gt;C Compiler&lt;/b&gt; seperti berikut&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SQ_Qxd4AxwI/AAAAAAAAADY/iy65-W7kkxk/s1600-h/image%5B28%5D.png"&gt;&lt;img align="left" alt="image" border="0" height="416" src="http://lh4.ggpht.com/_05CaZNXNb7o/SQ_Q1JX0OeI/AAAAAAAAADc/GuBfgmRgaCI/image_thumb%5B16%5D.png?imgmax=800" style="border-width: 0px;" width="354" /&gt;&lt;/a&gt; Menu &lt;i&gt;&lt;b&gt;Chip&lt;/b&gt;  &lt;/i&gt;untuk menentukan chip yang digunakan. Ubah chip ke ATmega8535 jika kita menggunakan ATmega 8535.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Menu &lt;b&gt;&lt;i&gt;Clock&lt;/i&gt;&lt;/b&gt; untuk menentukan frequency xtal yang digunakan microcontroller. Pastikan nilainya sesuai. Saya menggunakan xtal 4 Mhz.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Menu  &lt;b&gt;&lt;i&gt;(s)printf features: &lt;/i&gt;&lt;/b&gt;untuk menentukan konfigurasi fungsi &lt;i&gt;printf&lt;/i&gt; dan &lt;i&gt;sprintf&lt;/i&gt; .&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Menu  &lt;b&gt;&lt;i&gt;(s)scanf features: &lt;/i&gt;&lt;/b&gt;untuk menentukan konfigurasi fungsi &lt;i&gt;scanf &lt;/i&gt;dan &lt;i&gt;sscanf&lt;/i&gt; .&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Tab &lt;b&gt;After Make &lt;/b&gt;digunakan untuk menentukan aplikasi yang dijalankan CodeVosion AVR setelah program di &lt;i&gt;compile&lt;/i&gt;.  &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh6.ggpht.com/_05CaZNXNb7o/SQ_RnIbS0RI/AAAAAAAAADk/Ro5CG1Tz8eg/s1600-h/image%5B47%5D.png"&gt;&lt;img alt="image" border="0" height="339" src="http://lh3.ggpht.com/_05CaZNXNb7o/SQ_Rrt8570I/AAAAAAAAADo/SKykhapPEII/image_thumb%5B33%5D.png?imgmax=800" style="border-width: 0px;" width="320" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pilih (centang) &lt;b&gt;Program the Chip&lt;/b&gt;, hal ini berarti CodeVision akan memprogram chip(micro) setelah program di &lt;i&gt;compile.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Lalu klik &lt;b&gt;OK&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Setelah kita melakukan langkah satu diatas maka tampilan pada CodeVision AVR  seperti berikut:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh4.ggpht.com/_05CaZNXNb7o/SREUff0Fw7I/AAAAAAAAAD0/9XlZfZQNTJo/s1600-h/image58.png"&gt;&lt;img alt="image" border="0" height="316" src="http://lh6.ggpht.com/_05CaZNXNb7o/SREUh8NF8aI/AAAAAAAAAD4/gmKrft0tDQc/image_thumb40.png?imgmax=800" style="border-width: 0px;" width="527" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Langkah pertama tadi adalah langkah untuk membuat Project. &lt;b&gt;Ingat!!&lt;/b&gt; setiap project membutuhkan minimal satu file source. Nah... Berikutnya kita akan membuat file source.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;2. Membuat Source&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;Buka aplikasi CodeVision AVR , pilih menu:  &lt;b&gt;File &lt;/b&gt;--&amp;gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Maka akan muncul message box  &lt;b&gt;Create New File&lt;/b&gt;, pilih &lt;b&gt;Source &lt;/b&gt;lalu klik &lt;b&gt;OK&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Simpan file source, pilih menu:  &lt;b&gt;File&lt;/b&gt; --&amp;gt; &lt;b&gt;Save As&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Beri nama file source. Misal: &lt;b&gt;Coba1&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Setelah anda melakukan langkah-langkah diatas, tampilan CodeVision AVR seperti berikut:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SREUljJJCwI/AAAAAAAAAD8/-U-0FUI42nE/s1600-h/image63.png"&gt;&lt;img alt="image" border="0" height="300" src="http://lh5.ggpht.com/_05CaZNXNb7o/SREUnzSAAHI/AAAAAAAAAEA/CEkFrdTo3eo/image_thumb43.png?imgmax=800" style="border-width: 0px;" width="490" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;3. Memasukkan File Source ke dalam Project&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;File source yang kita buat harus kita masukkan kedala projet. Caranya:&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/SREUpp-n8kI/AAAAAAAAAEE/4tiqrnIDe2Q/s1600-h/image68.png"&gt;&lt;img align="left" alt="image" border="0" height="146" src="http://lh4.ggpht.com/_05CaZNXNb7o/SREUryInb0I/AAAAAAAAAEI/Iz5n2nuFNQ4/image_thumb46.png?imgmax=800" style="border-width: 0px;" width="196" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pilih menu: &lt;b&gt;Project &lt;/b&gt;--&amp;gt; &lt;b&gt;Configure&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/SREUwgmfFvI/AAAAAAAAAEM/KWGo2XbXRbE/s1600-h/image75.png"&gt;&lt;img align="left" alt="image" border="0" height="328" src="http://lh4.ggpht.com/_05CaZNXNb7o/SREU1qmU_YI/AAAAAAAAAEQ/BrOkYcs-biQ/image_thumb51.png?imgmax=800" style="border-width: 0px;" width="370" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pada tab &lt;b&gt;Files&lt;/b&gt;, klik &lt;b&gt;Add  &lt;/b&gt;(1).&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Lalu akan muncul box &lt;b&gt;Add File To Project&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pilih file source yang akan disertakan, dalam hal ini file sourcenya  &lt;b&gt;Coba1&lt;/b&gt; (2)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Klik &lt;b&gt;Open&lt;/b&gt; (3)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Kemudian klik &lt;b&gt;OK&lt;/b&gt;  (4)&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Nachh!!! sekarang project telah siap kita gunaka. Sebagai awal tuliskan code program sederhana dulu&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;seperti:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;#include &amp;lt;mega8535.h&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;void main()    &lt;br /&gt;
{     &lt;br /&gt;
DDRA=0xff&lt;br /&gt;
PORTA=0x0f     &lt;br /&gt;
}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Penjesan dari program diatas adalah:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;#include &amp;lt;mega8535.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;//menyertakan file library  untuk chip ATmega8535&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;DDRA=0xff&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;//Port A, dijadikan sebagai output&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;PORTA=0x0f&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Mengeluarkan output ke Port A dengan nilai &lt;b&gt;0x0f &lt;/b&gt;( &lt;b&gt;f&lt;/b&gt; Heksa) atau &lt;b&gt;0b00001111&lt;/b&gt;. Berarti logic dari Port A saat program dijalankan: &lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;ol&gt;&lt;span class="fullpost"&gt;
&lt;li&gt;Port A.0  ----&amp;gt; HIGH     (1) &lt;/li&gt;
&lt;li&gt;Port A.1  ----&amp;gt; HIGH     (1) &lt;/li&gt;
&lt;li&gt;Port A.2  ----&amp;gt; HIGH     (1) &lt;/li&gt;
&lt;li&gt;Port A.3  ----&amp;gt; HIGH     (1) &lt;/li&gt;
&lt;li&gt;Port A.5  ----&amp;gt; low   (0) &lt;/li&gt;
&lt;li&gt;Port A.6  ----&amp;gt; low   (0) &lt;/li&gt;
&lt;li&gt;Port A.7  ----&amp;gt; low   (0) &lt;/li&gt;
&lt;li&gt;Port A.8  ----&amp;gt; low   (0) &lt;/li&gt;
&lt;/span&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;span class="fullpost"&gt;*/    &lt;br /&gt;
&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Compile program dengan menekan &lt;b&gt;F9&lt;/b&gt;,,,&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pasti ERROR.. he..he..heee.....   ^_^&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh3.ggpht.com/_05CaZNXNb7o/SREU6iWbDxI/AAAAAAAAAEU/o_l8XZntD9A/s1600-h/image%5B6%5D.png"&gt;&lt;img alt="image" border="0" height="335" src="http://lh5.ggpht.com/_05CaZNXNb7o/SREVBScy34I/AAAAAAAAAEY/SR9PEQIZO_I/image_thumb%5B4%5D.png?imgmax=800" style="border-width: 0px;" width="452" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Perhatikan tampilan diatas, terdapat informasi error di dalam &lt;b&gt;Message Box&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;Error: D:\.....\.....\.....\Coba1.c(6): missing ';'&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Maksud dari pesan error di atas adalah:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;D:\.....\.....\....\             adalah alamat file&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;Coba1.c                   adalah nama file&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="fullpost"&gt;(6)                              adalah nomor baris  yang error &lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Perlu diingat walau nomor baris yang error adalah baris ke 6, &lt;b&gt;error juga bisa terjadi karena kesalahan (error) pada baris sebelumnya.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;: missing ';'              adalah deskrpisi error&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Deskripsi error diatas yaitu error terjadi karena  tidak adanya(missing) karakter  &lt;b&gt;; &lt;/b&gt;(titik koma). &lt;b&gt;Setiap akhir baris dalam penulisan code harus diakhiri dengan ; (titik koma)&lt;/b&gt;            &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Compile lagi program dengan menekan &lt;b&gt;F9&lt;/b&gt;, lihat apakah ada error?? jika tidak ada tekan &lt;b&gt;Shift F9&lt;/b&gt; untuk mengcompile ulang  dan  klik &lt;b&gt;Program&lt;/b&gt; untuk mendownload program ke micro.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SREVFyAUgEI/AAAAAAAAAEc/OyahUDhdzHo/s1600-h/image%5B17%5D.png"&gt;&lt;img alt="image" border="0" height="324" src="http://lh6.ggpht.com/_05CaZNXNb7o/SREVKLYAzOI/AAAAAAAAAEg/Fw8M7l9almw/image_thumb%5B11%5D.png?imgmax=800" style="border-width: 0px;" width="365" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Gak bisa ya..... he3.... sabar buukk.... tuh karena kita blum mengatur setting programmer yang akan digunakan.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;b&gt;4. Mengatur Setting Programmer&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Pilih menu: &lt;b&gt;Setting&lt;/b&gt; ---&amp;gt; &lt;b&gt;Programmer&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="http://lh5.ggpht.com/_05CaZNXNb7o/SREVMAnPfcI/AAAAAAAAAEk/dBVXkHGdz4M/s1600-h/image%5B12%5D.png"&gt;&lt;img align="left" alt="image" border="0" height="295" src="http://lh6.ggpht.com/_05CaZNXNb7o/SREVOrIaJoI/AAAAAAAAAEo/PNRncnO5XgU/image_thumb%5B8%5D.png?imgmax=800" style="border-width: 0px;" width="283" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Jika anda menggunakan downloader yang terhubung ke port parallel / port printer.  Contoh: downloader DT-HiQ AVR ISP produksi innovative electronics, pastikan &lt;i&gt;Programmer Type &lt;/i&gt;nya: &lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Kanda Systems STK200+/300&lt;/b&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;i&gt;Printer Port&lt;/i&gt; :&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="fullpost"&gt;&lt;b&gt;LPT1: 378h&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Jika anda menggunakan dowloader tipe lain misal yang terhubung ke USB, setting &lt;i&gt;Programmer Type &lt;/i&gt;disesuaikan dengan keterangan di user manual bawaan downloader anda.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Yupz... sekarang tekan &lt;b&gt;Shift F9 &lt;/b&gt;lalu klik &lt;b&gt;Program&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;u&gt;any questions?? post comment on this blog: &lt;/u&gt;&lt;span style="color: blue;"&gt;&lt;a href="http://avrku.blogspot.com/"&gt;http:\\avrku.blogspot.com&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;u&gt;or send email to: &lt;a href="mailto:zigan@ymail.com"&gt;zigan@ymail.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;i&gt;CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.       &lt;br /&gt;
AVR is a registered trademark of Atmel Corporation.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;span class="fullpost"&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-1581002786177250295?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/1581002786177250295/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=1581002786177250295&amp;isPopup=true' title='3 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/1581002786177250295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/1581002786177250295'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2008/11/berkenalan-dengan-codevision-avr.html' title='Berkenalan Dengan CodeVision AVR'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_05CaZNXNb7o/SQ_Qmd-J_DI/AAAAAAAAADE/faRWkqIOG9U/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6915655194506864398.post-1802880734073931591</id><published>2008-10-29T14:47:00.003+07:00</published><updated>2010-03-14T11:48:41.647+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller Basic'/><title type='text'>Dasar Pemrograman C</title><content type='html'>&lt;span class="awal"&gt;B&lt;/span&gt;ahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler. Bahasa ini sudah merupakan high level language, dimana memudahkan programmer menuangkan algoritmanya. Untuk mengetahui dasar bahasa C dapat dipelajari sebagai berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Struktur penulisan program&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt; [library1.h] &amp;gt; // Opsional&lt;br /&gt;
#include &amp;lt; [library2.h] &amp;gt; // Opsional&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
#define [nama1] [nilai] ; // Opsional&lt;br /&gt;
#define [nama2] [nilai] ; // Opsional&lt;br /&gt;
&lt;br /&gt;
[global variables] // Opsional&lt;br /&gt;
&lt;br /&gt;
[functions] // Opsional&lt;br /&gt;
&lt;br /&gt;
void main(void) // Program Utama&lt;br /&gt;
{&lt;br /&gt;
[Deklarasi local variable/constant]&lt;br /&gt;
[Isi Program Utama]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
2. Tipe data&lt;br /&gt;
&lt;br /&gt;
* char : 1 byte ( -128 s/d 127 )&lt;br /&gt;
* unsigned char : 1 byte ( 0 s/d 255 )&lt;br /&gt;
* int : 2 byte ( -32768 s/d 32767 )&lt;br /&gt;
* unsigned int : 2 byte ( 0 s/d 65535 )&lt;br /&gt;
* long : 4 byte ( -2147483648 s/d 2147483647 )&lt;br /&gt;
* unsigned long : 4 byte ( 0 s/d 4294967295 )&lt;br /&gt;
* float : bilangan desimal&lt;br /&gt;
* array : kumpulan data-data yang sama tipenya.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Deklarasi variabel &amp;amp; konstanta&lt;br /&gt;
&lt;br /&gt;
* Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.&lt;br /&gt;
Penulisan :&lt;br /&gt;
[tipe data] [nama] = [nilai] ;&lt;br /&gt;
&lt;br /&gt;
* Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.&lt;br /&gt;
Penulisan :&lt;br /&gt;
const [nama] = [nilai] ;&lt;br /&gt;
&lt;br /&gt;
* Tambahan:&lt;br /&gt;
Global variabel/konstanta yang dapat diakses di seluruh bagian program.&lt;br /&gt;
Local variabel/konstanta yang hanya dapat diakses oleh fungsi tempat dideklarasikannya.&lt;br /&gt;
&lt;br /&gt;
4. Statement&lt;br /&gt;
&lt;br /&gt;
Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [ } ]. Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga comments / komentar.&lt;br /&gt;
&lt;br /&gt;
Contoh:&lt;br /&gt;
suhu=adc/255*100; //contoh rumus perhitungan suhu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Function&lt;br /&gt;
&lt;br /&gt;
Function adalah bagian program yang dapat dipanggil oleh program utama.&lt;br /&gt;
&lt;br /&gt;
Penulisan :&lt;br /&gt;
[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2])&lt;br /&gt;
{&lt;br /&gt;
[statement] ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
6. Conditional statement dan looping&lt;br /&gt;
&lt;br /&gt;
if else : digunakan untuk penyeleksian kondisi&lt;br /&gt;
&lt;br /&gt;
if ( [persyaratan] ) {&lt;br /&gt;
[statement1];&lt;br /&gt;
[statement2];&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
[statement3];&lt;br /&gt;
[statement4];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for : digunakan untuk looping dengan jumlah yang sudah diketahui&lt;br /&gt;
&lt;br /&gt;
for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ) {&lt;br /&gt;
[statement1];&lt;br /&gt;
[statement2];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while : digunakan untuk looping jika dan salama memenuhi syarat tertentu&lt;br /&gt;
&lt;br /&gt;
while ( [persyaratan] ) {&lt;br /&gt;
[statement1];&lt;br /&gt;
[statement2];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
do while : digunakan untuk looping jika dan salama memenuhi syarat tertentu, namun min 1 kali&lt;br /&gt;
&lt;br /&gt;
do {&lt;br /&gt;
[statement1];&lt;br /&gt;
[statement2];&lt;br /&gt;
}&lt;br /&gt;
while ( [persyaratan] )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
switch case : digunakan untuk seleksi dengan banyak kondisi&lt;br /&gt;
&lt;br /&gt;
switch ( [nama variabel] ) {&lt;br /&gt;
case [nilai1]: [statement];&lt;br /&gt;
break;&lt;br /&gt;
case [nilai2]: [statement];&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Operasi logika dan biner&lt;br /&gt;
&lt;br /&gt;
* Logika&lt;br /&gt;
AND :&amp;amp;&amp;amp;&lt;br /&gt;
NOT : !&lt;br /&gt;
OR : ||&lt;br /&gt;
* Biner&lt;br /&gt;
AND : &amp;amp;&lt;br /&gt;
OR : |&lt;br /&gt;
XOR : ^&lt;br /&gt;
Shift right: &amp;gt;&amp;gt;&lt;br /&gt;
Shift left : &amp;lt;&amp;lt;&amp;gt;&lt;br /&gt;
* Lebih besar sama dengan : &amp;gt;=&lt;br /&gt;
* Lebih kecil : &amp;lt; * Lebih kecil sama dengan : &amp;lt;= 9. Operasi aritmatika * + , - , * , / : tambah,kurang,kali,bagi * += , -= , *= , /= : nilai di sebelah kiri operator di tambah/kurang/kali/bagi dengan nilai di sebelah kanan operator * % : sisa bagi * ++ , -- : tambah satu (increment) , kurang satu (decrement) * Contoh : a = 5 * 6 + 2 / 2 -1 ; maka nilai a adalah 30 a *= 5 ; jika nilai awal a adalah 30, maka nilai a = 30x5 = 150. a += 3 ; jika nilai awal a adalah 30, maka nilai a = 30+5 = 33. a++ ; jika nilai awal a adalah 5 maka nilai a = a+1 = 6. a-- ; jika nilai awal a adalah 5 maka nilai a = a-1 = 4. Ditulis oleh: Tim Prasimax Copyright Prasimax Technology Dokumen ini berasal dari &lt;a href="http://www.mikron123.com/"&gt;www.mikron123.com&lt;/a&gt;     &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6915655194506864398-1802880734073931591?l=www.avrku.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.avrku.com/feeds/1802880734073931591/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6915655194506864398&amp;postID=1802880734073931591&amp;isPopup=true' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/1802880734073931591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6915655194506864398/posts/default/1802880734073931591'/><link rel='alternate' type='text/html' href='http://www.avrku.com/2008/10/bahasa-c-luas-digunakan-untuk.html' title='Dasar Pemrograman C'/><author><name>zigan</name><uri>http://www.blogger.com/profile/10372694968234382753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_05CaZNXNb7o/S3EvZoszIjI/AAAAAAAAAM0/-nNVpYR7DSE/S220/mypict.jpg'/></author><thr:total>1</thr:total></entry></feed>
