Downloader mikrokontroler AT89C2051

AT89C2051 Flash PEROM Programmer ini sangat sederhana, hanya memakai sebuah IC 74HC574 ditambah dengan sistem catu daya dan dihubungkan ke komputer PC lewat Parallel Port, dikendalikan lewat program yang ditulis dengan Pascal.

Program untuk AT89C2051 disimpan di dalam ROM yang terdapat dalam chip IC tersebut, ROM yang dipakai AT89C2051 termasuk jenis Flash PEROM (Programmable Eraseable Read Only Memory). Diperlukan cara dan rangkaian khusus untuk mengisi Flash PEROM tersebut, berikut ini akan dibahas cara pengisian Flash PEROM AT89C2051 dan pembuatan alat pengisi Flash PEROM AT89C2051.
Selain diisi, Flash PEROM tersebut bisa pula dibaca isinya, dihapus bahkan bisa diproteksi sehingga isinya tidak bisa dibaca lagi untuk mencegah pembajakan program. Selain itu semua microcontroller produksi Atmel masing-masing punya kode produksi sendiri, sehingga program Pascal di komputer bisa dengan mudah mengenali chip microcontroller jenis apa yang dipasangkan pada alat ini.
Tabel 1 memperlihatkan kombinasi sinyal yang harus diberikan pada kaki-kaki P3.7..P3.3, tegangan VPP yang harus diberikan ke kaki RESET dan sinyal PROG pada kaki P3.2 untuk berbagai keperluan dengan Flash PEROM di dalam chip AT89C2051.
 Tabel 1 Mode Pemrograman Flash PEROM AT89Cx051

Pengisian data ke PEROM

Gambar 1 merupakan susunan rangkaian untuk mengisi Flash PEROM AT89C2051, dalam susunan ini Port 1 (P1.0..P1.7) dipakai sebagai saluran penerima data yang akan diisikan ke PEROM, P3.7..P3.3 dipakai untuk memilih mode kerja, kaki RESET dipakai untuk catu daya tambahan (VPP) sebesar 12 Volt. 

 Gambar 1
Mengisi Flash PEROM AT89Cx051

AT89C2051 dilengkapi ‘address counter’ di dalam chip, yang berfungsi sebagai ganti address bus pada saat pengisian atau pembacaan Flash PEROM. Kedudukan ‘address counter’ ini akan reset menjadi 000(hex) saat tegangan VPP pada kaki RESET berubah dari 0 Volt menjadi 5, dan nilai ‘address counter’ ini naik satu setiap kali ada pulsa positip NEXT diumpankan pada kaki XTAL1.
Proses pengisian Flash PEROM, dilakukan dengan urutan sebagai berikut :
1.   AT89C2051 diberi catu daya 5 Volt lewat kaki Vcc, kaki RESET dan XTAL1 diberi tegangan 0.
2.   Menjelang proses pengisian akan dimulai, tegangan VPP dinaikkan menjadi 5 Volt agar ‘address counter’ reset menjadi 000(hex), dan sinyal PROG pada kaki P3.2 dijadikan H.
3.  AT89C2051 disiapkan kerja pada mode pengisian dengan memberi sinyal HHHL pada kaki P3.7..P3.3.
4.   Setelah urutan persiapan ini selesai, VPP dinaikkan menjadi 12 Volt sebagai catu daya yang diperlukan untuk pengisian PEROM.
5.   Selanjutnya data yang akan diisikan disiapkan di Port 1 (P1.0..P1.7)
6.   Pulsa negatip PROG pada P3.2 dipakai sebagai perintah agar data pada Port 1 diisikan ke dalam PEROM, proses pengisian ini memerlukan waktu relatip lama lebih kurang selama 1,2 mili-detik, selama proses pengisian ini kaki P3.1 menjadi ‘0’ menandakan AT89C2051 sedang sibuk (BUSY). Saat kaki P3.1 menjadi ‘1’ kembali berarti selesai sudah proses pengisian data 1 byte ke dalam PEROM, dan AT89C2051 siap menerima data lagi.
7.  Setelah proses pengisian 1 byte ini, dikirim sinyal NEXT yang berupa pulsa positip ke kaki XTAL1, dengan maksud menaikkan nilai ‘address counter’, agar pengisian data berikutnya diisikan ke lokasi PEROM berikutnya.
8.  Urutan 5 sampai 7 di atas diulang untuk mengisikan data 1 byte demi 1 byte, sampai semua PEROM dalam AT89C2051 sebanyak 2048 byte selesai diisikan.

Rancangan Rangkaian

Gambar 3 merupakan skema rangkaian AT89C2051 Flash PEROM Programmer yang dibuat, rangkaian ini dikendalikan oleh Komputer PC lewat Parallel Port.
Dari Gambar 1 dan 2 bisa diperhitungkan banyaknya jalur yang diperlukan untuk mengendalikan chip AT89C2051, antara lain diperlukan 8 jalur data yang dua arah, diperlukan 4 jalur pengatur mode, jalur PROG, jalur NEXT dan 2 jalur pengatur VPP, dan 1 jalur BUSY untuk memantau apakah AT89C2051 sudah siap menerima data.
Parallel Port  komputer PC mempunyai 8 jalur data yang dua arah, 4 jalur kontrol (sebagai output dari PC) dan 5 jalur status (sebagai input ke PC), dengan demikian memakai Parallel Port untuk mengendalikan chip AT89C2051, masih kekurangan jalur output.
Untuk mengatasi kekurangan ini pada rangkaian dipakai IC 74HC574, IC ini menampung 4 jalur pengatur mode dan 2 jalur pengatur tegangan VPP. Data pengatur ini disiapkan di jalur data Parallel Port D0..D7, kemudian dikirim sinyal LATCH yang dibangkitkan di kaki nomor 17 konektor DB25 (dikendalikan dengan bit 3 dari Control Register Parallel Port), sehingga  data di D0..D7 tersimpan output 74HC574.
Sinyal PROG dibangkitkan dikaki nomor 14 konektor DB25 (dikendalikan dengan bit 1 dari Control Register Parallel Port), dan sinyal NEXT dibangkitkan dikaki nomor 1 (dikendalikan dengan bit 0 dari Control Register Parallel Port). Sinyal BUSY yang dibangkitkan AT89C2051, dipantau lewat kaki nomor 11 konektor DB25  (bit 7 dari Status Register Parallel Port)
Pengatur tegangan VPP terdiri dari sinyal VPP_5VOLT dan sinyal VPP_OFF.
·        Jika sinyal VPP_5VOLT=1 tegangan output LM317 menjadi 5 Volt, sebaliknya jika sinyal VPP_5VOLT=0 tegangan output LM317 menjadi 12 Volt.
·        Jika sinyal VPP_OFF=1 transistor Q1 menjadi off, VPP menjadi 0 Volt lewat tahanan R7, sebaliknya jika sinyal VPP_OFF=1 transistor Q1 menjadi on dan menyalurkan tegangan dari LM317, sehingga tegangan VPP menjadi 5 Volt atau 12 Volt, sesuai dengan kondisi sinyal VPP_5VOLT.
Nilai tahanan R1 dan R3 termasuk ‘aneh’, dipilih nilai ini untuk menyesuaikan agar tegangan output LM317 tepat 5 Volt atau 12 Volt, tahanan ini dibentuk dengan menghubungkan seri 2 tahanan, R1 dibentuk dengan tahanan  250 + 4,7 = 254.7 Ohm dan R3 dibentuk dengan tahanan 1000 + 120 = 1120 Ohm.
 Klik pada gambar untuk ukuran sebenarnya
Gambar 3
Skema Rangkaian AT89Cx051
Kabel yang dipakai untuk menghubungkan alat ini ke Parallel Port  komputer PC bisa dibeli jadi, di pasaran kabel ini dikenal dengan nama ‘Kabel LPT’, dikedua ujung kabel ini terdapat konektor DB25 (male), masing-masing kaki pada konektor ini dihubungkan secara langsung, yakni kaki 1 konektor pertama dihubungkan dengan kaki 1 konektor lainnya dan seterusnya.

Program Pascal pengatur Parallel Port

Berikut ini dibahas potongan-potongan program pembentuk sinyal-sinyal di atas, program-program ini merupakan program dasar yang mengendalikan Parallel Port  secara langsung.
Perlu diperhatikan sinyal-sinyal pada Parallel Port  bersifat logika negatip, kalau bit pada Control Register bernilai ‘1’ maka tegangan kaki bersangkutan pada konektor DB25 adalah 0 Volt, sebaliknya jika bit pada Control Register bernilai ‘0’ maka tegangan pada kaki konektor DB25 adalah 5 Volt.

Potongan Program 1 Mengatur arah data
01: PROCEDURE SetupOutput;
02: BEGIN
03:      { Control Register
04:        00001001
05:          | | ||_ NEXT      : normally LOW  positive pulse
06:          | | |__ PROG*     : normally HIGH negative pulse
07:          | |____ Latch     : normally LOW  positive pulse
08:          |______ Direction : 0 as ouput Port
09:      }
10:      ControlByte   := 9;                         {00001001}
11:      Port[Control] := ControlByte;
12: END;
13:  
14: PROCEDURE SetupInput;
15: BEGIN
16:      { Control Register
17:        00101001
18:          | | ||_ NEXT      : normally LOW  positive pulse
19:          | | |__ PROG*     : normally HIGH negative pulse
20:          | |____ Latch     : normally LOW  positive pulse
21:          |______ Direction : 1 as input port
22:      }
23:      ControlByte   := $29;                       {00101001}
24:      Port[Control] := ControlByte;
25: END;

PROCEDURE SetupInput dan PROCEDURE SetupOutput dipakai untuk menentukan nilai awal :
·        sinyal NEXT (kaki nomor 1 konektor DB25 terhubung ke bit 0 dari Control Register Parallel Port)
·        sinyal PROG (kaki nomor 14 konektor DB25 terhubung ke bit 1 dari Control Register Parallel Port)
·        sinyal LATCH (kaki nomor 17 konektor DB25 terhubung ke bit 3 dari Control Register Parallel Port)

tapi mengingat  sinyal-sinyal pada Parallel Port  bersifat logika negatip, maka :
·        sinyal NEXT nilai awalnya ‘0’, bit 0 Control Register malah diberi nilai ‘1’ (baris 5 dan 18)
·        sinyal PROG nilai awalnya ‘1’, bit 1 Control Register malah diberi nilai ‘0’ (baris 6 dan 19)
·        sinyal LATCH nilai awalnya ‘0’, bit 3 Control Register malah diberi nilai ‘1’ (baris 7 dan 20)

 Hal yang lebih penting dari kedua procedure di Potongan Program 1 ini adalah mengatur arah 8 jalur data dwi-arah Parallel Port, pada saat mengisi data ke Flash PEROM 8 jalur data ini akan menjadi output untuk menyalurkan data dari PC ke AT892051, dan pada saat membaca data dari Flash PEROM 8 jalur data ini berfungsi sebagai input untuk menyalurkan data dari AT89C2051 ke PC.
Pengaturan ini dilakukan lewat bit 5 Control Register, jika bit 5 Control Register bernilai 0 (baris 8) jalur data dwi-arah menjadi output dari Parallel Port, sebaliknya jika bit 5 Control Register bernilai 1 (baris 21) jalur data dwi-arah akan menjadi input ke Parallel Port.
Kemampuan untuk mengubah jalur data Parallel Port  menjadi input, hanya dimiliki oleh Enhance Parallel Port  (EPP). EPP umumnya dibuat menjadi satu dengan mother board PC, sedangkan Parallel Port  dalam Super I/O Card tidak termasuk EPP. Agar kemampuan ini bisa digunakan, Parallel Port  ini harus ditentukan sebagai Enhance Parallel Port  (EPP) lewat setup BIOS komputer.
Komputer yang tidak dilengkapi dengan EPP tetap bisa dipakai untuk mengisi PEROM, tapi tidak bisa membaca isi PEROM, sehingga program yang diisikan tidak bisa di-verifikasi apakah sudah masuk dengan benar.
Program yang dibuat dilengkapi dengan PROCEDURE MemeriksaPrinterPort yang berfungsi menentukan apakah Parallel Port  yang dipakai termasuk EPP.

Potongan Program 2 Pembangkitan pulsa dasar
01: PROCEDURE NEXT;
02: BEGIN
03:    Port[Control]:=ControlByte and $FE; {bit 0 Control Regiter}
04:    Port[Control]:=ControlByte;
05: END;
06:  
07: PROCEDURE PROG;
08: BEGIN
09:    Port[Control]:=ControlByte or $02; {bit 1 Control Regiter}
10:    Port[Control]:=ControlByte;
11: END;
12:  
13: PROCEDURE EraseStrobe;
14: BEGIN
15:    Port[Control]:=ControlByte or $02;  {bit 1 Control Regiter}
16:    Delay(30);
17:    Port[Control] := ControlByte;
18: END;

PROCEDURE Next membangkitkan pulsa positip di kaki nomor 1 konektor DB25, kaki nomor 1 ini dikendalikan lewat bit 0 di Control Register Parallel Port, bit 0 Control Register ini diberi nilai awal =1 oleh PROCEDURE SetupInput dan PROCEDURE SetupOutput, dibaris 3 bit 0 di-‘nol’-kan dan dibaris 4dikembalikan ke nilai awalnya, dengan cara ini kaki 1 konektor DB25 bertegangan 5 Volt sebentar dan kemudian menjadinya 0 Volt kembali.
PROCEDURE PROG membangkitkan pulsa negatip dikaki nomor 14 konektor DB25, kaki nomor 14 ini dikendalikan lewat bit 1 di Control Register Parallel Port, bit 1 Control Register ini diberi nilai awal =0 oleh PROCEDURE SetupInput dan PROCEDURE SetupOutput, dibaris 9 bit 1 di-‘satu’-kan dan dibaris 10 dikembalikan ke nilai awalnya, dengan cara ini kaki 14 konektor DB25 bertegangan 0 Volt sebentar dan kemudian menjadinya 5 Volt kembali. 
PROCEDURE EraseStrobe sama dengan PROCEDURE PROG, hanya saja pulsa negatip yang dibangkitkan jauh lebih lebar, sekitar 30 mili-detik yang ditentukan di baris 16. Pulsa ini dipakai untuk menghapus isi Flash PEROM, lebar pulsa yang diperlukan paling tidak selebar 10 mili-detik.

Potongan Program 3 Memantau kesiapan AT89C2051
01: FUNCTION Ready:BOOLEAN;
02: BEGIN   
03:      Ready := (Port[Status] and $80) = 0;
04: END;

Potongan Program 3 dipakai untuk memeriksa apakah AT89C2051 siap menerima data lagi.
Di atas dikatakan:
Saat kaki P3.1 menjadi ‘1’ kembali berarti selesai sudah proses pengisian data 1 byte ke dalam PEROM, dan AT89C2051 siap menerima data lagi.

Dalam rangkaian Gambar 3 kaki P3.1 terhubung ke kaki 11 konektor DB25, dalam Parallel Port  kaki 11 itu terhubung ke bit 7 Status Register. Tapi hubungan tersebut dalam kondisi berlawanan, artinya jika tegangan pada kaki 11 konektor DB25 = 0 Volt maka bit 7 Status Register bernilai ‘1’, sebaliknya jika tegangan pada kaki 11 konektor DB25 = 5 Volt maka bit 7 Status Register bernilai ‘0’.
Dengan demikian dalam FUNCTION Ready untuk memeriksa apakah AT89C2051 sudah siap menerima data, yang diperiksa adalah apakah bit 7 dari Status Register Parallel Port  bernilai ‘0’, jika bit 7 bernilai ‘0’ maka Ready bernilai true, sebaliknya jika bit 7 bernilai ‘1’ maka Ready bernilai false.

Potongan Program 4 Pengaturan Tegangan VPP
01: PROCEDURE TeganganVPP(V:BYTE);
02: BEGIN
03:      { Pemakaian 74HC574
04:        x1x1MMMM
05:        ||||||||_ Atmel Programming Mode bits
06:        |||||||__ Atmel Programming Mode bits
07:        ||||||___ Atmel Programming Mode bits
08:        |||||____ Atmel Programming Mode bits
09:        ||||_____ always 1
10:        |||______ VPP_5VOLT : true-VPP=5 V, false-VPP=12 V
11:        ||_______ Reset External Address Counter
12:        |________ VPP_OFF   : true-VPP=0 V, false-VPP=5 or 12 V
13:      }
14:      case V of
15:           0 : V:=$B0;           {10110000}
16:           5 : if ModeSelect=$0B
17:                  THEN V:=$70    {01110000}
18:                  ELSE V:=$30;   {00110000}
19:          12 : V:=$10;           {00010000}
20:          ELSE EXIT;
21:      END;
22:      SetupOutput;
23:      Port[Data]    := V + ModeSelect;
24:      Port[Control] := ControlByte and $F7; { bit 3 }
25:      Port[Control] := ControlByte;
26:      SetupInput;
27: END;
28:  
29: PROCEDURE ResetAddressCounter(Mode:BYTE);
30: BEGIN
31:      ModeSelect := $0B; { any illegal Mode }
32:      TeganganVPP(0);
33:      Delay(100);
34:      ModeSelect := Mode;
35:      TeganganVPP(5);
36:      Delay(100);
37: END;
38:  
39: PROCEDURE MatikanTegangan;
40: BEGIN
41:      ModeSelect := $0B; { any illegal Mode }
42:      TeganganVPP(0);
43: END;

PROCEDURE TeganganVPP untuk menentukan tegangan VPP yang diumpankan ke kaki RESET AT89C2051, sekali gus mengatur mode kerja AT89C2051.
Sinyal kontrol untuk keperluan di atas disimpan dalam IC 74HC574, data yang akan disimpan disiapkan di Port Data (baris 23), setelah itu bit 3 Control Register di-nol-kan (baris 24) dan dikembalikan ke nilai asalnya (baris 25), hali ini mengakibatkan terjadinya pulsa positip pada kaki nomor 17 konektor DB25, sebagai perintah bagi IC 74HC574 untuk mereka data dari Parallel Port.
Kombinasi data yang disimpan tergantung pada bit-bit pengatur mode kerja AT89C2051 seperti terlihat pada Tabel 1, dan sesuai dengan pengatur tegangan VPP terdiri dari sinyal VPP_5VOLT dan sinyal VPP_OFF yang sudah dibahas di atas.
PROCEDURE ResetAddressCounter untuk menyiapkan tegangan kerja AT89C2051 sekaligus me-reset ‘address counter’ dalam chip AT89C2051, mula-mula tegangan VPP dibuat menjadi 0 Volt dan setelah itu dijadikan 5 Volt, waktu tunda selama 100 mili-detik di baris 33 dimaksud menunggu sebentar agar catu daya stabil baru menaikkan tegangan itu menjadi 5 Volt (baris 35). Untuk kestabilan tegangan, mula-mula mode kerja AT89C2051 diberi kombinasi yang tidak dikenal di Tabel 1 (baris 31), baru kemudian diberikan kombinasi yang sesunguhnya (baris 34).
PROCEDURE MatikanTegangan untuk mematikan tegangan VPP dengan mode kerja yang tidak dikenal di Tabel 1 (baris 41).

Program Pascal pengatur AT89C2051

Program dasar pengatur Parallel Port  di atas, dipakai untuk membangun program pengatur AT89C2051 sebagai berikut:

Potongan Program 5 Pengisian PEROM
01: ResetAddressCounter($0E);
02: TeganganVPP(12);
03: SetupOutput;
04: Delay(100);
05: for I := 0 to PEROMsize do
06:      BEGIN
07:           Port[Data] := Buffer[I];
08:           PROG;
09:           REPEAT UNTIL Ready;
10:           NEXT;
11:      END;
12: MatikanTegangan;

Potongan Program  5 sepenuhnya mengikuti tata cara pengisian PEROM yang sudah dibahas, baris 1 mempersiapkan tegangan-tegangan yang diperlukan sambil menentukan mode kerja : Pengisian PEROM (=$0E, lihat Tabel 1). Setelah itu tegangan VPP dinaikkan jadi 12 Volt (baris 2) dan Parallel Port  dijadikan output (baris 3). Sebelum proses pengisian PEROM dimulai, ditunggu sebentar selama 100 mili-detik (baris 4), diharapkan setelah itu tegangan VPP stabil 12 Volt.
Pengisian 1 byte data ke PEROM dilaksanakan di baris7 sampai dengan 10,
·        data yang diisikan diletakkan di jalur data pada baris 7
·        kemudian baris 8 membangkitkan pulsa PROG agar data tadi disimpan di PEROM, AT89C2051 memerlukan waktu sekitar 1.2 mili-detik untuk menyimpan data ke PEROM,
·        baris 9 menunggu sampai AT89C2051 siap menerima data lagi
·        setelah itu dikirimkan pulsa positip NEXT untuk menaikkan nilai ‘address counter’
Proses di atas diulang sampai semua PEROM selesai diisi, proses pengulangan ini dibentuk dengan baris 5, 6 dan 11. Selesai mengisi PEROM, tegangan VPP dimatikan di baris 12.

Potongan Program 6 Membaca isi PEROM
01: ResetAddressCounter($0C);
02: for I := 0 to PEROMSize do
03:      BEGIN
04:           Buffer[I] := Port[Data];
05:           NEXT;
06:      END;
07: MatikanTegangan;

Membaca isi PEROM caranya jauh lebih sederhana dari pada mengisi PEROM, mula-mula baris 1 mempersiapkan tegangan-tegangan yang diperlukan sambil menentukan mode kerja : Pengisian PEROM (=$0C, lihat Tabel 1). Selesai mengerjakan perintah baris 1, isi PEROM sudah siap diambil (baris 4), untuk membaca isi PEROM dikirim pulsa NEXT pada baris 5, pulsa NEXT ini akan mengakibatkan ‘address counter’ nilainya bertambah 1.
Proses di atas diulang sampai semua PEROM selesai dibaca, proses pengulangan ini dibentuk dengan baris 2, 3 dan 6. Selesai membaca isi PEROM, tegangan VPP dimatikan di baris 7.

Penutup

Program yang dibuat mencakup fasilitas untuk mengenali apakah chip AT89C2051 sudah terpasang ditempatnya, juga dilengkapi fasilitas untuk menghapus program yang sudah tersimpan dalam PEROM, membaca isi PEROM, memeriksa apakah PEROM masih kosong, dan tentu saja fasiltas utama untuk pengisian data ke PEROM, program ini disajikan selengkapnya dalam situs.
Flash PEROM Programmer ini merupakan alat kunci dalam bermain AT89C2051, tanpa adanya alat ini tidak mungkin dibuat alat berbasiskan AT89C2051.

Software programmer At89C2051 yang siap pakai dapat anda download disini
Gambar PCB yang telah jadi dan siap pakai anda bisa 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

Konsep Dasar Motor Stepper (Bagian 2)

Rangkaian kontrol untuk setiap tipe motor stepper mempunyai kemiripan yaitu dalam hal aktivasinya. Namun yang paling membedakan adalah dalam hal urutan pemberian data aktivasi setiap lilitan pada motor stepper.

Motor stepper merupakan motor listrik yang tidak mempunyai komutator, di mana semua lilitannya merupakan bagian dari stator. Dan pada rotornya hanya merupakan magnet permanen. Semua komutasi setiap lilitan harus di kontrol secara eksternal sehingga motor stepper ini dapat dikontrol sehingga dapat berhenti pada posisi yang diinginkan atau bahkan berputar ke arah yang berlawanan.
Pada bagaian ini akan dibahas mengenai bagaian terakhir dari rangkaian penggerak motor stepper. Rangkaian ini pada dasarnya hanya merupakan rangkaian switching arus yang mengaliri lilitan pada motor stepper. Urutan pemberian data pada motor stepper ini dapat mengontrol arah putaran dari motor stepper ini. Penambahan kecepatan pada motor stepper dapat dilakukan dengan cara meningkatkan frekuensi pemberian data pada rangkaian switching arus.
Rangkaian kontrol ini nantinya terhubung langsung dengan lilitan pada motor, rangkaian power supplai, dan rangkaian yang dikontrol secara digital yang pada akhirnya menentukan kapan lilitan yang diinginkan dalam kondisi off atau on. Selain hanya menggunakan transistor switching ar, saat ini sudah tersedia driver motor yang memang diperuntukkan bagi motor stepper, yang lebih dikenal dengan H-Bridge. Komponen ini  biasanya digunakan pada motor stepper tipe bipolar, walaupun demikian tidak menutup kemungkinan digunakan pada motor stepper tipe yang lain.

Rangkaian Driver Variabel Reluctance Motor
Gambar 1
Kontrol Pada Varibel Reluctance Motor Stepper

Di dalam gambar 1 tersebut terdapat sebuah 3 blok dimana masing-masing mengatur sebuah kumparan motor stepper. Blok tersebut terdiri dari saklar arus yang dikontrol secara digital. Blok ini berperan penting di dalam pengontrolan arus yang akan melewati kumparan motor tertentu. Pengontrollan blok ini dapat dilakukan oleh sebuah rangkaian digital sederhana atau bahkan sebuah komputer melalui printer port. Dengan menggunakan komputer maka diperlukan perangkat lunak yang nantinya akan mengatur pemberian data dengan suatu urut-urutan tertentu kepada komponen saklar di dalam blok.
Kumparan pada motor stepper mempunyai karakteristik yang sama dengan karakteristik beban induktif lainnya. Oleh sebab itu ketika terdapat arus yang melalui kumparan motor, tidak dapat dimatikan dengan seketika tanpa menghasilkan tegangan transien yang sangat tinggi. Kondisi ini biasanya nampak dengan timbulnya percikan bunga api (ketika menggunakan motor DC dengan daya yang besar). Hal ini sangat tidak diinginkan karena dapat merusak saklar sehingga perlu diberikan rangkaian tambahan untuk membatasi tegangan transien yang muncul. Sebaliknya ketika saklar tertutup maka terdapat arus yang mengalir ke kumparan motor dan akan menghasilkan kenaikan tegangan secara perlahan.
Untuk membatasi tegangan spike yang muncul maka ada dua alternatif penyelesaiannya yaitu dengan memparalel pada kumparan motor dengan dioda dan alternatif yang kedua adalah dengan menggunakan kapasitor yang dipasang paralel dengan kumparan motor stepper.

Gambar 2
Spike Voltage Reducer

Diode yang yang terpasang paralel tersebut harus mampu melewatkan arus balik yang terjadi ketika saklar terbuka. Dioda yang digunakan dapat berupa dioda yang umum dipakai seperti 1N4001 atau 1N4002. Jika digunakan dioda yang mempunyai karakteristik ‘fast switch’ maka perlu diberikan penambahan kapasitor yang dipasang secara paralel pada dioda.
Pemasangan kapasitor paralel dengan kumparan motor dapat menyebabkan spike yang ditimbulkan akan menyebabkan kapasitor tersebut charge sehingga tegangan spike yang terjadi tidak akan keluar tetapi diredam oleh kapasitor ini. Tetapi yang paling penting adalah kapasitor ini harus mampu menahan surge current pada saat terjadi spike. Surge current adalah arus tiba-tiba yang sangat besar yang muncul bersamaan dengan tegangan spike. Nilai kapasitor harus dipilih pada kondisi dimana nilai induktansi dari kumparan motor stepper paling besar. Inilah karakteristik motor stepper dengan tipe variabel reluctance dimana nilai induktansinya berubah-ubah tergantung dari sudut  putaran pada poros rotor. Penambahan kapasitor sehingga tepat akan membentuk sebuah rangkaian resonansi yang dapat menyebabkan peningkatan torsi pada motor dengan tipe ini.

Rangkaian Driver Unipolar Permanent Magnet and Hybrid Motor
Gambar 3
Kontrol Pada Unipolar Permanent Magnet Motor

Rangkaian kontrol untuk mengendalikan motor stepper dengan tipe unipolar ini hampira sama dengan rangkaian kontrol pada motor tipe variabel reluctance. Perbedaanya hanya pada struktur kumparan motornya saja.
Gambar 4
Spike Voltage Reducer untuk Unipolar Stepper Motor

Walaupun demikian karena bebanya merupakan beban induktif maka selalu ada tegangan spike yang muncul ketika saklar terbuka. Oleh sebab itu perlu penambahan dioda yang terpasang paralel dengan kumparan motor stepper seperti terlihat pada gambar 4.
Dua  buah dioda tambahan diperlukan karena kumparan motor bukanlah kumparan yang independen tetapi sebuah kumparan yang mempunyai tap di tengah-tengah kumparan seperti struktur pada autotransformer. Ketika salah satu saklar dibuka maka tegangan spike muncul di kedua ujung kumparan motor tersebut dan di clamp oleh dua buah dioda ke supplay motor. Tetapi jika salah satu ujung kumparan motor tersebut tidak floating terhadap supplai motor maka tegangan spike ini akan lebih negatif daripada referensi ground. Jika saklar yang digunakan berupa relay, kondisi ini bukan menjadi masalah. Kondisi ini baru menjadi masalah ketika saklar yang digunakan adalah saklar semikonduktor seperti transistor atau FET.
Untuk membatasi level tegangan  spike dapat pula digunakan kapasitor yang terpasang seperti pada gambar 5.
Gambar 5
Pemberian Kapasitor Pembatas Tegangan Spike

Rangkaian Praktis Pengendali Motor Stepper
Jika rangkaian kontrol yang mengendalikan rangakaian motor driver ini berupa mikrokontroller atau komponen digital maka ada baiknya agar setiap port yang mengontrol rangkaian driver motor stepper ini diberi buffer terlebih dahulu agar tidak membebani port mikrokontroller yang digunakan. Seperti pada gambar 3, pin control_0, control_1, control_2 dan control_3 ini dapat dikontrol secara digital dengan menggunakan mikrokontroller dengan memberi komponen yang berfungsi sebagai buffer seperti pada gambar 6.
Gambar 6
Rangkaian Sederhana Penggerak Motor Stepper

Pada gambar 6 hanya ditampilkan satu bagian untuk mengontrol satu buah kumparan motor stepper. Ada dua alternatif yaitu dengan menggunakan buffer terlebuh dahulu atau menggunakan FET, yang mempunyai impedansi input yang sangat tinggi, sebagai komponen saklarnya. Tegangan Vmotor tidaklah harus selalu sama dengan tegangan VCC pada mikrokontroller. Oleh sebab itu digunakan sebuah komponen buffer yang mempunyai output open collector sehingga outputnya dapat di pull-up ke tegangan yang diinginkan.
Untuk dasar pemilihan transistornya adalah pada karakteristik IC (arus kolektor). Transistor ini harus merupakan transistor power yang mampu melewatkan arus sesuai dengan arus yang diperlukan oleh kumparan motor stepper ini. Jika arus yang ditarik oleh kumparan motor stepper ternyata lebih besar daripada kemampuan transistor maka transistor akan cepat panas dan dapat menyebabkan rusaknya transistor tersebut.
R pull-up  sebesar 470 akan memberikan arus sebesar 10 mA ke basis transistor Q1. Jika Q1 mempunyai gain sebesar 1000 maka  arus yang dapat diliewatkan adalah sekitar beberapa ampere, tergantung dari besar arus yang ditarik oleh kumparan motor stepper tersebut. Arus ini harus lebih kecil dari arus IC yang diperbolehkan.
Untuk komponen FET dapat digunakan komponen IRL540 yang dapat mengalirkan arus sampai 20 A dan mampu menahan tegangan balik sampai 100V. Hal ini disebabkan oleh karena FET ini mampu menyerap tegangan spike tanpa perlindungan dioda. Tetapi komponen ini memerlukan heat sink  yang besar dan harus cukup baik dalam hal penyerapan panasnya. Ada baiknya jika digunakan kapasitor untuk menekan level tegangan spike yang ditimbulkan dari transisi saklar dari on ke off.

Konsep Dasar Motor Stepper (Bagian 1)

Stepper motor bukanlah barang baru di dalam dunia komputer. Bahkan hampir sebagian besar disk drive atau  CDROM menggunakan stepper motor untuk memutar disk. Penggunaannya juga cukup sederhana dan mudah digunakan untuk aplikasi-aplikasi tertentu yang tidak terlalu membutuhkan torsi yang besar.

Motor stepper banyak digunakan untuk aplikasi-aplikasi yang biasanya cukup menggunakan torsi yang kecil, seperti untuk penggerak piringan disket atau piringan CD. Dalam hal kecepatan, kecepatan motor stepper cukup cepat jika dibandingkan dengan motor DC. Motor stepper merupakan motor DC yang tidak memiliki komutator. Pada umumnya motor stepper hanya mempunyai kumparan pada statornya sedangkan pada bagian rotornya merupakan permanen magnet. Dengan model motor seperti ini maka motor stepper dapat diatur posisinya pada posisi tertentu dan/atau berputar ke arah yang diinginkan, csearah jarum jam atau sebaliknya.
Kecepatan motor stepper pada dasarnya ditentukan oleh kecepatan pemberian data pada komutatornya. Semakin cepat data yang diberikan maka motor stepper akan semakin cepat pula berputarnya. Pada kebanyakan motor stepper kecepatannya dapat diatur dalam daerah frekuensi audio dan akan menghasilkan putaran yang cukup cepat.

Tipe Motor Stepper
Motor stepper dibedakan menjadi dua macam berdasarkan magnet yang digunakan, yaitu tipe permanen magnet dan variabel reluktansi. Pada umumnya motor stepper saat ini yang digunakan adalah motor stepper yang mempunyai variabel relukatansi. Cara yang paling mudah untuk membedakan antara tip motor stepper di atas adalah dengan cara memutar rotor dengan tangan ketika tidak dihubungkan ke suplai.
Pada motor stepper yang mempunyai permanen magnet maka ketika diputar dengan tangan akan terasa lebih tersendat karena adanya gaya yang ditimbulkan oleh permanen magnet. Tetapi ketika menggunakan motor dengan variabel reluktansi maka ketika  diputar akan lebih halus karena sisa reluktansinya cukup kecil.
 
 
Variabel Reluktansi Motor
Pada motor stepper yang mempunyai variabel reluktansi maka terdapat 3 buah lilitan yang pada ujungnya dijadikan satu pada sebuah pin common. Untuk dapat menggerakkan motor ini maka aktivasi tiap-tiap lilitan harus sesuai urutannya.
Gambar 1 merupakan gambar struktur dari motor dengan variabel reluktansi dimana tiap stepnya adalah 30°. Mempunyai 4 buah  kutub pada rotor dan 6 buah kutub pada statornya yang terletak saling berseberangan.
Gambar 1
Variabel Reluktance Motor

Jika lilitan 1 dilewati oleh arus, lilitan 2 mati dan lilitan 3 juga mati maka kumparan 1 akan menghasilkan gaya tolakan kepada rotor dan rotor akan berputar sejauh 30° searah jarum jam sehingga kutub rotor dengan label Y sejajar dengan kutub dengan label 2.
Jika kondisi seperti ini berulang terus menerus secara berurutan, lilitan 2 dilewati arus kemudian lilitan 3 maka motor akan berputar secara terus menerus. Maka agar dapat berputar sebanyak 21 step maka perlu diberikan data dengan urutan seperti pada gambar 2.

‘1’ pada gambar 2 diartikan bahwa lilitan yang bersangkutan dilewati arus sehingga menghasilkan gaya tolak untuk rotor. Sedangkan ‘0’ diartikan lilitan dalam kondisi off, tidak mendapatkan arus.

Unipolar Motor Stepper
Motor stepper dengan tipe unipolar adalah motor stepper yang mempunyai 2 buah lilitan yang masing-masing lilitan ditengah-tengahnya diberikan sebuah tap seperti  tampak pada gambar 3.
Gambar 3
Unipolar Stepper Motor

Motor ini mempunyai step tiap 30° dan mempunyai dua buah liliatan yang didistribusikan berseberangan 180° di antara kutub pada stator. Sedangkan pada rotonya menggunakan magnet permanen yang berbentuk silinder dengan mempunyai 6 buah kutub, 3 kutub selatan dan 3 buah kutub utara. Sehingga dengan konstrusi seperti ini maka jika dibutuhkan ke presisian dari motor stepper yang lebih tinggi dibutuhkan pula kutub-kutub pada stator dan rotor yang semakin banyak pula. Pada gambar 3, motor tersebut akan bergerak setiap step sebesar 30° dengan 4 bit urutan data (terdapat dua buah lilitan dengan tap, total lilitan menjadi 4 lilitan).
Ketelitian dari magnet permanen di rotor dapat sampai 1.8° untuk tiap stepnya. Ketika arus mengalir melalui tap tengah pada lilitan pertama akan menyebabkan kutub pada stator bagian atas menjadi kutub utara sedangkan kutub stator pada bagian bawah menjadi kutub selatan. Kondisi akan menyebabkan rotor mendapat gaya tarik menuju kutub-kutub ini. Dan ketika arus yang melalui lilitan 1 dihentikan dan lilitan 2 diberi arus maka rotor akan mengerak lagi menuju kutub-kutub ini. Sampai di sini  rotor sudah berputar sampai 30° atau 1 step.

Gambar 4
Urutan Data Untuk Motor Stepper dengan Tipe Unipolar (torsi normal)

 Gambar 5
Urutan Data Motor Stepper Tipe Unipolar (torsi besar)


Untuk meningkatkan torsi yang tidak terlalu besar maka dapat digunakan urutan pemberian data seperti pada gambar 5. Dimana terdapat dua buah lilitan yang di beri arus pada suatu waktu. Dengan pemberian urutan data seperti ini akan menghasilkan torsi yang lebih besar dan tentunya membutuhkan daya yang lebih besar.
Dengan urutan data baik pada gambar 4 atau gambar 5 akan menyebabkan motor berputar sebanyak 24 step atau 4 putaran.

Bipolar Motor Stepper
Motor dengan tipe bipolar  ini mempunyai konstruksi yang hampir sama dengan motor stepper tipe unipolar namun tidak terdapat tap pada lilitannya, seperti tampak pada gambar 6.

Penggunaan motor dengan tipe bipolar ini membutuhkan rangkaian yang sedikit lebih rumit untuk mengatur agar motor ini dapat berputar dalam dua arah. Biasanya untuk menggerakkan motor stepper jenis ini membutuhkan sebuah driver motor yang sering dikenal sebagai H Bridge. Rangkaian ini akan menontrol tiap-tiap lilitan secara independen termasuk dengan polaritasnya untuk tiap-tiap lilitan.
Untuk mengontrol agar motor ini dapat berputar satu step maka perlu diberikan arus untuk tiap-tiap lilitan dengan polaritas tertentu pula. Urutan datanya dapat dilihat pada gambar 7.
Gambar 7
Urutan Data Motor Stepper tipe Bipolar

Bersambung pada bagian 2

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