Pengendali Mikrokontroler dengan Beban AC 220V

Mikrokontroler dapat pula digunakan sebagai pengendali dengan beban AC 220V, pengendalian tersebut dapat menggunakan komponen elektronika optocoupler atau relay DC.
Pada kesempatan kali ini yang penulis gunakan sebagai pengendali beban AC 220V ialah relay DC 12V, berikut merupakan skema rangkaian tersebut :
Berikut merupakan pengaturan PORT pada Codewizard :
contoh program pengendalian tersebut sebagai berikut :

Pengaturan Kecepatan Motor DC dengan ATMEGA16 dan L293D

Pada posting kali ini dilakukan uji coba pengaturan kecepatan putaran motor DC, menggunakan mikrokontroler ATMEGA16 sebagai prosesor, dan driver menggunakan ICL293D yang dapat di inputkan tegangan maksimum 32V, LCD karakter 16x2 sebagai user interface, berikut skema rangkaian tersebut :


Motor DC yang di kontrol berjumlah 2 buah, dengan pengaturan dengan 4buah push button, yang berfungsi menaikan dan menurunkan kecepatan.

Driver motor menggunakan IC L293D yang sudah biasa digunakan, dengan fungsi sebagai berikut :
- IN1 & IN2 = arah putaran motor 1 misal (IN1=High & IN2=Low) maka motor forward dan sebaliknya
- IN3 & IN4 = arah putaran motor 2 misal (IN3=High & IN4=Low) maka motor forward dan sebaliknya
- EN1 = Pengatur kecepatan motor 1 dengan metode PWM (Pulse Width Modulation)
- EN1 = Pengatur kecepatan motor 2 dengan metode PWM (Pulse Width Modulation)

Dengan memanfaatkan fitur Fast PWM yang terdapat dalam mikrokontroler ATMEGA16, pemrograman diawali dengan mengaktifasi Fast PWM mode OCR1A untuk motor 1, dan OCR1B untuk motor 2, kemudian nilai OCR1A dan OCR1B ditampilkan melalui LCD sebagai parameter. Berikut merupakan program lengkapnya yang saya tulis dengan bahasa C pada CodeVision AVR :
#include

// Alphanumeric LCD Module functions
#include
#include
//Deklarasi variabel
int SA,SB;
char MA[8];
char MB[8];
void main(void)
{
PORTA=0xFF;
DDRA=0x00;
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 12000.000 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

/ Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 8
lcd_init(8);

while (1)
      {   
      lcd_gotoxy(0,0);lcd_putsf("M1=");lcd_gotoxy(0,1);lcd_putsf("M2=");  
      PORTD.0=1;   //Motor 1 Forward
      PORTD.1=0; 
      PORTD.3=1;   //Motor 2 Reverse
      PORTD.4=0; 
      if(PINA.0==0){SA++;}  //Jika pushbutton A0 ditekan naikan kecepatan motor 1
      if(PINA.1==0){SA--;}   //Jika pushbutton A1 ditekan turunkan kecepatan motor 1
      if(PINA.2==0){SB++;}   //Jika pushbutton A2 ditekan naikan kecepatan motor 2
      if(PINA.3==0){SB--;}    //Jika pushbutton A3 ditekan turunkan kecepatan motor 2
      lcd_gotoxy(5,0);itoa(SA,MA);lcd_puts(MA); //Tampilkan nilai kecepatan Motor 1
      lcd_gotoxy(5,1);itoa(SB,MB);lcd_puts(MB);  //Tampilkan nilai kecepatan Motor 2
      OCR1A=SA; 
      OCR1B=SB;
      // Place your code here

      }
}

Terima Kasih, semoga membantu.

Monitoring SUHU dan Detector Smoke menggunakan ATmega16 Dengan Bahasa Basic (Bascom AVR)

Pada project kali ini adalah sedikit eksperimen menggunakan sensor suhu LM35 dan smoke detektor, rangkaian akan mendeteksi tingkat ketebalan asap dan nilai parameternya akan ditampilkan melalui LCD, dan akan menentukan tingkat bahaya dan adanya api jika terjadi peningkatan suhu. Monitoring SUHU dan Detector Smoke menggunakan ATmega16 Dengan Bahasa Basic )Bascom AVR) Berikut daftar Komponen Library nya... :-) ATMega 16 Led Button LCD 20*4 Sensor LM35 Detector Smoke Berikut Listing Program Basic nya 'Konfigurasi ATmega 16 '================================== $regfile = "m16def.dat" $crystal = 1200000 'Konfigurasi LCD '================================== Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0 Config Lcd = 20 * 4 Cursor Off 'Konfigurasi Input & Out put '================================== Config Portd = Output Config Porta = Input 'Bagian ADC '================================== Dim Y As Integer Deflcdchar 0 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 Config Adc = Single , Prescaler = Auto , Reference = Internal Dim A As Word , Volt As Word , Volt_d As Byte Dim Z As Word , I As Word , I_d As Byte Start Adc 'analisasi Port '================================== C Alias Portd.3 'Star Awal Program '================================== Cls Locate 1 , 4 Lcd "ALARM KEBAKARAN" Locate 3 , 1 Lcd " Suhu & Sensor Asap" Locate 4 , 1 Lcd " AVR ATmega16" Wait 1 Cls Waitms 500 'Mulai Program '=================================== Do 'Baca Sensor Suhu '=================================== Locate 1 , 1 Lcd "MONITORING SUHU" A = Getadc(0) Volt = A * 5 Volt_d = Volt Mod 10 Volt = Volt / 20 Locate 2 , 1 Lcd Volt ; "," ; Volt_d Locate 2 , 6 Lcd Chr(0) ; "C" 'Baca Sensor Asap '================================== Locate 3 , 1 Lcd "MONITORING ASAP" Z = Getadc(1) I = Z * 10 I_d = I Mod 10 I = I / 20 Locate 4 , 1 Lcd I ; "," ; I_d Locate 4 , 6 Lcd Chr(1) ; "ppm" 'Bagian Suhu Normal '================================== Normal: If Volt < 31 Then If Volt > 19 Then Locate 2 , 9 Lcd "SUHU NORMAL " C = 1 End If End If 'Bagian Suhu Dingin '=================================== Dingin: If Volt < 19 Then Locate 2 , 8 Lcd " SUHU DINGIN " C = 1 End If 'Bagian Suhu Siaga '=================================== Siaga: If Volt > 30 Then If Volt < 41 Then Locate 2 , 9 Lcd "SUHU SIAGA1" C = 1 End If End If If Volt > 40 Then If Volt < 51 Then Locate 2 , 9 Lcd "SUHU SIAGA2" C = 1 End If End If If Volt > 50 Then If Volt < 61 Then Locate 2 , 9 Lcd "SUHU SIAGA3" C = 1 End If End If 'Bagian Suhu Bahaya '=================================== Bahaya: If Volt > 60 Then Locate 2 , 9 Lcd "KEBAKARAN " C = 0 End If Loop Skema Rangkaian Menggunakan Proteus 7.7 SP2 Untuk pertanyaan dan kelengkapannya Klick Disini Inbox ajah

Mikrokontroler dengan Ladder diagram

Pemrograman Mikrokontroler menggunakan ladder diagram (ladder logic micro).
Bagi anda yang terbiasa memprogram PLC itu akan sangat membantu menggunakan software ini. karena dengan software ini pemrograman mikrokontroler bisa dilakukan layaknya memprogram PLC.

Berikut ialah screenshotnya
Berikut ialah jenis mikrokontroler yang didukung:
  • PIC16F628(A)
  • PIC16F88
  • PIC16F819
  • PIC16F877(A)
  • PIC16F876(A)
  • PIC16F887
  • PIC16F886
  • ATmega128
  • ATmega64
  • ATmega162
  • ATmega32
  • ATmega16
  • ATmega8
Cara menggunakan software ini cukup mudah, pertama anda memasukan kontak (LD,LD not, And, Andnot, timer, ataupun output) melalui label instruction lalu pilih tipe kontak yang anda inginkan, setelah itu isi parameternya apakan kontak input/output dari pin IC atau input/output virtual layaknya PLC.
 setelah itu compile maka ladder pun akan berubah menjadi bentuk intel hex file (.hex) yang siap dimasukan ke dalam IC mikrokontroler.

terima kasih
software Ladder logic nya bisa anda download disini

Jenis-Jenis Mikrokontroler AVR

Berikut ini ialah jeni-jenis mikrokontroler keluarga AVR beserta fiturnya, yang mungkin berguna sebagai referensi.

AVR
AT90VC8544
8-Kbyte In-System programmable Flash Program Memory,
256 byte SRAM, 512 Byte EEPROM, 8-channel 10-bit A/D.
Up to 4 MIPS throughput at 4 MHz. 3.6 and 5 volt operation.
AT90S1200
1-Kbyte In-System programmable Flash Program Memory,
64-Byte EEPROM, 32-Byte Register File. Up to 12 MIPS
throughput at 12 MHz.
AT90S2313
2-Kbyte In-System programmable Flash Program Memory,
128 Byte SRAM and EEPROM. Up to 10 MIPS throughput at
10 MHz.
AT90S2323
2-Kbyte In-System programmable Flash Program Memory,
128 Byte SRAM and EEPROM. Up to 10 MIPS throughput of
10 MHz. 5V operation.
3V version: AT90LS2323
AT90S2343
2-Kbyte In-System programmable Flash Program Memory,
128 Byte SRAM and EEPROM. Up to 10 MIPS throughput of
10 MHz. 5V operation.
3V version: AT90LS2343

MEGAAVR
ATmega8
8-Kbyte self-programming Flash Program Memory, 1-Kbyte SRAM,
512 Byte EEPROM, 6 or 8 channel 10-bit A/D. Up to 16 MIPS
throughput at 16 MHz. 5V operation.
3V version: ATmega8L
ATmega8515
8-Kbyte self-programming Flash Program Memory,
512 Byte SRAM and EEPROM. Up to 16 MIPS throughput at
16 MHz. 5V operation.
3V version: ATmega8515L
ATmega8535
8-Kbyte self-programming Flash Program Memory,
512 Byte SRAM and EEPROM, 8 channel 10-bit A/D. Up to
16 MIPS throughput at 16 MHz. 5V operation.
3V version: ATmega8535L
ATmega162
16-Kbyte self-programming flash Program Memory,
1-Kbyte SRAM, 512 Byte EEPROM, JTAG interface for on-chipdebug.
Up to 16 MIPS throughput at 16 MHz.
1.8V version: ATmega162V
ATmega16
16-Kbyte self-programming Flash Program Memory,
1-Kbyte SRAM, 512 Byte EEPROM, 8 channel 10-bit A/D,
JTAG interface for on-chip-debug. Up to 16 MIPS throughput at
16 MHz. 5V operation.
3V version: ATmega16L
ATmega32
32-Kbyte self-programming Flash Program Memory,
2-Kbyte SRAM, 1-Kbyte EEPROM, 8 channel 10-bit A/D, JTAG
interface for on-chip-debug. Up to 16 MIPS throughput at 16
MHz. 5V operation.
3V version: ATmega32L
ATmega64
64-Kbyte self-programming Flash Program Memory,
4-Kbyte SRAM, 2-Kbyte EEPROM, 8 channel 10-bit A/D,
JTAG interface for on-chip-debug. Up to 16 MIPS throughput at
16 MHz. 5V operation.
3V version: ATmega64L
ATmega128
128-Kbyte self-programming Flash Program Memory,
4-Kbyte SRAM, 4-Kbyte EEPROM, 8 channel 10-bit A/D, JTAG
interface for on-chip-debug. Up to 16 MIPS throughput at
16 MHz. 5V operation.
3V version: ATmega128L

LCD AVR

ATmega169
16-Kbyte self-programming Flash Program Memory,
1-Kbyte SRAM, 512 Byte EEPROM, 8 channel 10-bit A/D,
JTAG interface for on-chip-debug. 4 x 25 Segment LCD driver.
Up to 16 MIPS throughput at 16 MHz. 5V operation.
3V version: ATmega169L
1.8V version: ATmega169V

TINYAVR
ATtiny11
1-Kbyte In-System programmable Flash Program Memory,
32 byte SRAM. Up to 6 MIPS throughput at 6 MHz.
ATtiny12
1-Kbyte In-System programmable Flash Program Memory,
32 Byte SRAM, 64 Byte EEPROM. Up to 12 MIPS throughput
at 12 MHz.
ATtiny15L
1-Kbyte In-System programmable Flash Program Memory,
64 Byte EEPROM, 32 Byte Register File, 4 channel 10-bit A/D.
Up to 1.6 MIPS throughput at 1.6MHz. 3V operation.
ATtiny26
2-Kbyte In-System programmable Flash Program Memory,
128 Byte SRAM and EEPROM, 11 channel 10-bit A/D. Universal
Serial Interface. High Frequency PWM. Up to 16 MIPS throughput
at 16 MHz. 5V operation.
3V version: ATtiny26L
ATtiny28L
2-Kbyte In-System programmable flash Program Memory,
128 Byte SRAM, 32 Byte Register File, Keyboard interrupt.
Up to 4 MIPS throughput at 4 MHz. 3V operation.
1.8V version: ATtiny28V

USB AVR

AT43USB320A
512 Byte SRAM, Full Speed USB, 3 Function Endpoints, 4 Hub
Ports. Up to 12 MIPS throughput at 12 MHz. 5V operation.
AT43USB325E/M
16-Kbyte EEPROM or Mask ROM, 512 Byte SRAM, Full Speed
USB, 4 Function Endpoints, 4 Hub Ports, 5 LED Driver.
Up to 12 MIPS throughput at 12 MHz. 5V operation.
AT43USB325
16-Kbyte Mask ROM, 512 Byte SRAM, Full Speed USB,
3 Function Endpoints, 2 Hub Ports, 4 LED Driver.
Up to 12 MIPS throughput at 12 MHz. 5V operation.
AT43USB351M
24-Kbyte Mask ROM, 1-Kbyte SRAM, Low-Full Speed USB,
5 Function Endpoints. Up to 24 MIPS throughput at 24 MHz.
5V operation.
AT43USB353M
24-Kbyte Mask ROM, 1-Kbyte SRAM, Full Speed USB, 4 Function
Endpoints, 2 Hub Ports. Up to 24 MIPS throughput at 24 MHz.
5V operation.
AT43USB355E/M
24-Kbyte EEPROM or Mask ROM, 1-Kbyte SRAM, Full Speed
USB, 4 Function Endpoints, 2 Hub Ports. Up to 12 MIPS throughput
at 12 MHz. 5V operation.
AT76C711
Full Speed USB to Fast Serial Asynchronous Bridge.

Secure AVR
AT90SC19236R
192-Kbyte Mask ROM, 36-Kbyte EEPROM, 4-Kbyte RAM.
3-5V operation.
AT90SC19264RC
192-Kbyte Mask ROM, 64-Kbyte EEPROM, 6-Kbyte RAM,
Crypto Engine. 3-5V operation.
AT90SC25672R
256-Kbyte Mask ROM, 72-Kbyte EEPROM, 6-Kbyte RAM.
3-5V operation.
AT90SC320856
32-Kbyte Mask ROM, 8-Kbyte Flash, 56-Kbyte EEPROM,
1.5-Kbyte RAM. 3-5V operation.
AT90SC3232CS
32-Kbyte Flash, 32-Kbyte EEPROM, 3-Kbyte RAM, Crypto Engine.
3-5V operation.
AT90SC4816R/RS
48-Kbyte Mask ROM, 16-Kbyte EEPROM, 1.5-Kbyte RAM.
3-5V operation.
AT90SC6404R
64-Kbyte Mask ROM, 4-Kbyte EEPROM, 2-Kbyte RAM.
3-5V operation.
AT90SC6432R
64-Kbyte Mask ROM, 32-Kbyte EEPROM, 2-Kbyte RAM.
3-5V operation.
AT90SC6464C
64-Kbyte Flash, 64-Kbyte EEPROM, 3-Kbyte RAM, Crypto Engine.
3-5V operation.
USB version: AT90SC6464C-USB
AT90SC9608RC
96-Kbyte Mask ROM, 8-Kbyte EEPROM, 3-Kbyte RAM,
Crypto Engine. 3-5V operation.
AT90SC9616RC
96-Kbyte Mask ROM, 16-Kbyte EEPROM, 3-Kbyte RAM,
Crypto Engine. 3-5V operation.
AT90SC9636R
96-Kbyte Mask ROM, 36-Kbyte EEPROM, 3-Kbyte RAM.
3-5V operation.
AT97SC3201
Trusted Computing Platform Compliant Security Processor,
On-Chip Secure Key Storage, 33 MHz LPC Interface.
3.3V operation

DVD AVR

AT78C1501
DVD/CD Interface Controller, ATAPI Compatible, Ultra DMA
Support at 66 MB/sec.
AT78C1502
DVD Servo Controller, On-Chip Debugger Monitor. Up to 120 MIPS
throughput at 40 MHz. 3V and 5V operation.

RF AVR
AT86RF401
11-19 MHz, 2-Kbyte In-System programmable Flash Program
Memory, 128 Byte SRAM and EEPROM. 2V operation.

FPGA AVR
AT94K05AL
4-16 Kbyte In-System programmable Flash Program Memory,
4-16 Kbyte SRAM, JTAG interface for on-chip-debug, 5K FPGA
Gates. 3V operation.
AT94K10AL
20-32 Kbyte In-System programmable Flash Program Memory,
4-16 Kbyte SRAM, JTAG interface for on-chip-debug, 10K FPGA
Gates. 3V operation.
AT94K40AL
20-32 Kbyte In-System programmable Flash Program Memory,
4-16 Kbyte SRAM, JTAG interface for on-chip-debug, 40K FPGA
Gates. 3V operation.
AT94S05AL
4-16 Kbyte In-System programmable Flash Program Memory,
4-16 Kbyte SRAM, 256 Byte EEPROM, JTAG interface for
on-chip-debug, 5K FPGA Gates. 3V operation.
AT94S10AL
20-32 Kbyte In-System programmable Flash Program Memory,
4-16 Kbyte SRAM, 512 Byte EEPROM, JTAG interface for
on-chip-debug, 10K FPGA Gates. 3V operation.
AT94S40AL
20-32 Kbyte In-System programmable Flash Program Memory,
4-16 Kbyte SRAM, 1-Kbyte EEPROM, JTAG interface for
on-chip-debug, 40K FPGA Gates. 3V operation

Pemrograman MCS51/AVR dengan Bahasa Basic

Mungkin hal ini sudah tidak asing bagi kalangan pecinta mikrokontroler, tetapi dalam hal ini penulis mencoba menulis reviewnya sekedar untuk berbagi tutorial maupun softwarenya bagi yang membutuhkan. Nama aplikasinya ialah BASCOM 8051 untuk MCS51 dan BASCOM AVR untuk AVR.

Jadi jka teman-teman memiliki biasa menggunakan visual basic pasti akan mudah memprogram mikrokontroler keluarga MCS51 maupun AVR dengan software ini, karena statment nya tidak jauh berbeda dengan visual basic dan lebih menyenangkan lagi karena software ini dilengkapi simulasi output dan debug program yang mudah dipahami.

Ketika penulis mencoba menggunakan terasa begitu mudah dipahami meski baru beberapa saat. tidak sabar berikut screenhotnya :

sesi paling penting :
Download Bascom 8051 full version dapat download disini
Download Bascom AVR full version dapat download disini

Untuk tutorial dan artikel penggunaan bascom 8051/avr anda dapat mendownload pada kolom ebook



Pemrograman MCS51/AVR dengan Bahasa C

Bahasa Assembler merupakan bahasa pemrograman tingkat paling rendah, hanya mengenal instruksi-instruksi paling dasar mikrokontroler, ditambah dengan beberapa perintah untuk mengatur memori secara sederhana. Bahasa pemrograman ‘satu tingkat’ di atas Asembler adalah bahasa C yang sangat fleksible, dipakai untuk membangun Windows, tapi bisa juga dipakai untuk rancang bangun peralatan dengan mikrokontroler.

C asalnya dirancang sebagai bahasa pemrograman untuk membangun sistem  operasi UNIX pada komputer DEC PDP-11, sekitar awal tahun 1970-an. Bahasa ini berkembang secara pesat, pada tahun 1983, American National Standards Institute (ANSI) membentuk komite kerja dengan tugas khusus membakukan bahasa C sebagai bahasa pemrograman yang tidak tergantung pada jenis komputer. Hasil kerja komite tersebut merupakan pedoman baku untuk bahasa C, dan C compiler yang dibangun atas dasar pedoman tersebut disebut sebagai ANSI-C.
Semua C compiler yang ada kini kebanyakan adalah ANSI-C, tapi masing-masing mempunyai variasinya tersendiri, dilengkapi dengan sarana-sarana untuk memudahkan pemakaian C pada komputer tertentu. Dalam hal ini dikenal Turbo C, Borland C++, Visual C dan lain sebagainya, semuanya merupakan C Compiler yang banyak dipakai pada IBM-PC, tentu saja hasil akhir dari semua C Compiler tadi adalah kode mesin untuk prosesor IBM-PC (8086, 80286, 80386, 80486 dan Pentium).
Tapi bahasa C untuk keperluan rancang bangun peralatan yang memakai mikrokontroler tentu saja tidak memerlukan sarana-sarana tambahan secanggih C Compiler yang dipakai dalam IBM-PC, dan hasil akhirnya harus berupa kode mesin untuk masing-masing mikrokontroler/mikroprosesor. Artinya C Compiler untuk mikrokontroler MCS51 harus menghasilkan kode mesin MCS51, C Compiler untuk MC68HC11 harus menghasilkan kode mesin MC68HC11 pula.
Dengan pengertian di atas. C Compiler untuk IBM-PC tidak bisa dipakai untuk mikrokontroler, dan masing-masing jenis mikrokontroler mempunyai C Compiler tersendiri.

C Compiler untuk MCS51

Sejak akhir tahun 1980-an, telah banyak dibuat C Cross-Compiler yang bekerja pada IBM-PC untuk MCS51, artinya C Compiler tersebut bekerja di IBM-PC tapi kode mesin yang dihasilkan bukan untuk IBM-PC melainkan untuk MCS51.
C Compiler untuk MCS51 yang cukup dikenal antara lain adalah Micro-C buatan Dunfield Development Systems, Franklin C buatan Franklin Software Inc dan C51 buatan Keil Software, harga perangkat lunak tersebut tidak murah. Yang menarik meskipun harganya mahal, Keil membagikan C51 produknya yang bisa diminta lewat situs web http://www.keil.com, C51 gratis tersebut dibatasi hanya bisa menghasilkan kode mesin MCS51 paling banyak 2 KiloByte. Tapi untuk keperluan projek kecil-kecil yang memakai AT89C2051 batasan memori tersebut tidak merupakan masalah, karena memori-program AT89C2051 memang hanya sebesar 2 KiloByte.
Selain produk komersil tersebut di atas, ada pula C Compiler gratis, yang dikenal sebagai SDCC – Small Device C Compiler.

Small Device C Compiler - SDCC

SDCC, buatan Sandeep Dutta (sandeep@users.sourceforge.net), sejak semula memang dibuat sebagai software gratis (freeware), kemudian project mulia ini digabungkan dengan projek GNU, yakni projek ramai-ramai insan Internet yang melahirkan Linux. Dengan demikian, kini program SDCC bisa diambil pada situs http://sdcc.sourceforge.net.

Dalam rancangannya, SDCC dipersiapkan untuk berbagai macam mikroprosesor / mikrokontroler, hal ini sesuai dengan sifat bahasa C yang mudah diadaptasikan ke berbagai macam prosesor. Sampai saat ini, SDCC sudah bisa dipakai untuk mikroprosesor Z80, mikrokontroler MCS51, dalam waktu dekat akan segera bisa dipakai untuk mikrokontroler AVR buatan Atmel, dan mikrokontroler PIC buatan MicroChip, dan beberapa prosesor lainnya akan segera menyusul.
Hal ini membuat SDCC menjadi sangat menarik. Setelah terbiasa memakai SDCC untuk projek-projek dengan MCS51, kelak satu saat bermaksud memakai mikrokontroler AVR karena memerlukan mikrokontroler yang kemampuannya lebih, maka tidak banyak hambatan untuk beralih prosesor, bahkan program-program yang sudah dikembangkan untuk MCS51 dengan SDCC, dengan sedikit perubahan bisa dipakai di sistem yang memakai AVR.

SDCC dapat anda download disini
Manual booknya anda bisa download disini

Dasar MIkrokontroler AT90S2313 (AVR)

Dalam bab ini akan dibahas fitur-fitur dan arsitektur mikrokontroler AVR seri AT90S2313. Seri AT90S2313 dipilih karena mikrokontroler ini dapat mewakili beberapa seri yang lain, baik dari segi instruksi yang digunakan, maupun peripheralnya yang relative lengkap. Dengan mempelajari tipe AVR yang lain, yang pada dasarnya memiliki konsep dan arsitektur yang hampir sama. Bagi Anda yang ingin mendapatkan informasi lengkap mengenai jenis mikrokontroler ini, Anda juga dapat membacanya pada datasheet AT90S2313.

2.1 Fitur-fitur AT90S2313
    Fitur-fitur utama antara lain sebagai berikut:
1.    118 macam instruksi
2.    32 x 8 bit General Purpose Register,
3.    Memori program Flash pada ROM 2 K word (1Kx16),
4.    Memori data SRAM 128 byte,
5.    Memori EEPROM 128 byte,
6.    Jalur I/O 15 pin,
7.    Timer/counter 2 buah,
8.    Output PWM 1 kanal,
9.    Serial I/O menggunakan USART,
10.    Komparator analog.

2.2 Hardware

    AT90S2313 beredar dalam dua jenis kemasan, yaitu 20 DIP dan 20 SOIC. Kemasannya yang cukup sederhana memudahkan kita yang hendak mempelajari cara-cara pemrograman mikrokontroler AVR tanpa harus dipusingkan oleh instalansi kabel yang melibatkan banyak jalur sebagaimana pada mokrokontroler dengan jumlah pin di atas 40 buah.
Deskripsi Pin

VCC     Power supply.
GND    Ground.
Port B (PB7 . .Pb0)    port B merupakan Port I/O 8-bit bi-direktional. Pin-pin pada port ini dapat diberi resistor pull-up internal secara individual. PB0 dan PBI juga dapat digunakan untuk melayani input sebagai komparator analog. Buffer port B dapat mencatu arus hingga 20 mA dan dapat secara langsung men-drive LED.
Port D (PD6 . .PD0)    Port D memiliki tujuh buah pin I/O bi directional, yakni PD6 . .PD0. Seperti halnya port B, pin-pin pada port ini juga mampu men-drive LED karena dapat mencatu arus hingga 20 mA.
RESET    Reset input. Kondisi logika rendah “0” lebih dari 50 ns pada pin ini akan membuat mikrokontroler masuk ke dalam kondisi reset.
XTA11    Input bagi inverting oscillator amplifier dan input bagi clock internal.
XTAL2    Output inverting oscillator amplifier.