0% found this document useful (0 votes)
88 views

Mudul Avr8535

The document discusses the features and architecture of the AT90S8535 microcontroller. It describes the microcontroller's CPU, memory, ports, registers, and peripherals. Example applications and minimum systems are also presented.

Uploaded by

Muhammad Yassin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
88 views

Mudul Avr8535

The document discusses the features and architecture of the AT90S8535 microcontroller. It describes the microcontroller's CPU, memory, ports, registers, and peripherals. Example applications and minimum systems are also presented.

Uploaded by

Muhammad Yassin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 70

MODUL LATIH MIKROKONTROLLER AT90S8535

Pengertian Mikrokontroller

Mikrokontroller hampir sama dengan computer , karena ada beberapa persaman antara
mikrokontroller dengan computer antara lain:
1. mempunyai CPU
2. Mempunyai memori (RAM dan ROM)
3. mempunyai I/O (input output)
perbedaan computer dan mikrokontroller:
1. mikrokontroller kecepatan operasimya dalam orde Mhz (12,24,40Mhz) sedangankan
kompouter pada orde GHz (2,5G)
2. CPU computer menjalankan program dalam ROM atau BIOS pada saat awal di hidupkan,
mikrokontroller menjalankan program pada ROM internal (MaskROM,Flash PEROM
atau Flash ROM). Sifatnya non-volatile, artinya tetap tersimpan walau tidak ada catu
daya.
3. RAM pada computer sangat besar (orde Giga) sedangkan pada mikro sangat kecil
(128byte,256byte)
4. I/O pada computer sangat rumit sedangkan pada mikrokontroler I/O bisa di akses per bit

Features
AVR High-performance and Low-power RISC Architecture
118 Powerful Instructions Most Single Clock Cycle Execution
32 x 8 General-purpose Working Registers
Up to 8 MIPS Throughput at 8 MHz

Data and Nonvolatile Program Memories


8K Bytes of In-System Programmable Flash (000-FFF) 4095 x 2byte /address(1word/address)
(4Kx16)
SPI Serial Interface for In-System Programming
Endurance: 1,000 Write/Erase Cycles
512 Bytes EEPROM (512 x 8 bit)
Endurance: 100,000 Write/Erase Cycles
512 Bytes Internal SRAM (512 x8 bit)
Programming Lock for Software Security

Peripheral Features
8-channel, 10-bit ADC
Programmable UART
Master/Slave SPI Serial Interface
Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
One 16-bit Timer/Counter with Separate Prescaler, Compare and
Capture Modes and Dual 8-, 9-, or 10-bit PWM
Programmable Watchdog Timer with On-chip Oscillator
On-chip Analog Comparator

1
Special Microcontroller Features
Power-on Reset Circuit
Real-time Clock (RTC) with Separate Oscillator and Counter Mode
External and Internal Interrupt Sources
Three Sleep Modes: Idle, Power Save and Power-down

Power Consumption at 4 MHz, 3V, 20C


Active: 6.4 mA
Idle Mode: 1.9 mA
Power-down Mode: <1 A

I/O and Packages


32 Programmable I/O Lines
40-lead PDIP, 44-lead PLCC, 44-lead TQFP, and 44-pad MLF

Operating Voltages
VCC: 4.0 - 6.0V AT90S8535
VCC: 2.7 - 6.0V AT90LS8535

Speed Grades:
0 - 8 MHz for the AT90S8535
0 - 4 MHz for the AT90LS8535

AT90S8535 mikrokontroller CMOS 8-bit dengan AVR RISC (reduce instruction set
computer)Architecture dengan eksekusi instruction dalam 1 single clock cycle, AT90S8535
Kecepatan eksekusi bisa mencapai 1 MIPS per MHz

2
Gambar1. Arsitektur AT90S8535

AVR mengkombinasi kumpulan perintah-perintah dengan 32 general working register


Ke 32 register tesebut langsung terhubung dengan unit ALU dan dapat 2 register bersamaan
pada satu siklus clock.

3
PORT PADA AVR8535
Port A terdiri dari 8 bit dua arah I/O , bisa untuk input dan ouput , dan sudah tersedia pull up
resisitor dan dapat diaktifkan per bit. Output port A dapat memberikan arus sebesar 20 mA dan
dapat langsung dihubungkan dengan LED
Saat pin PA0 sampai PA7 sebagai input dan external pulled down ,akan menjadi
sourcing jika internal pull up diaktifkan.Port A juga dapat sebagai analog input
Port A merupakan pin 3 keadaan,port A akan aktif saat di reset walaupun clock tidak running
Port B terdiri dari 8 bit dua arah I/O , bisa untuk input dan ouput , dan sudah tersedia pull up
resisitor dan dapat diaktifkan per bit. Output port B dapat memberikan arus sebesar 20 mA dan
dapat langsung dihubungkan dengan LED
Saat pin PB0 sampai PB7 sebagai input dan external pulled down ,akan menjadi
sourcing jika internal pull up diaktifkan, Port B juga mempunyai fungsi yang lain akan
diterangkan lebih lanjut..Port B merupakan pin 3 keadaan,port B akan aktif saat di reset
walaupun clock tidak running
Port C terdiri dari 8 bit dua arah I/O , bisa untuk input dan ouput , dan sudah tersedia pull
up resisitor dan dapat diaktifkan per bit. Output port C dapat memberikan arus sebesar 20 mA
dan dapat langsung dihubungkan dengan LED. 2 pin port C dapat digunkan sebagai timer atau
counter
Port D terdiri dari 8 bit dua arah I/O , bisa untuk input dan ouput , dan sudah tersedia
pull up resisitor dan dapat diaktifkan per bit. Output port D dapat memberikan arus sebesar 20
mA dan dapat langsung dihubungkan dengan LED

Konfigurasi PIN AVR 8535/16/32

4
Rangkaian minimum system AVR 8535

5
ARSITEKTUR DAN MEMORI ALOKASI AVR 8535

6
ATMEGA 8535 memiliki dua jenis memori, yaitu program memory dan data memory ditambah
satu fitur yaitu EEPROM memory untuk menyimpan data.
1. Program Memory

ATMEGA 8535 memiliki On-Chip In-System Reprogrammable Flash Memory untuk menyimpan
program. Untuk alasan keamanan, program memory dibagi menjadi dua bagian, yaitu Boot Flash
Section dan Application Flash Section. Boot Flash Section digunakan untuk menyimpan program
Boot Loader, yaitu program yang harus dijalankan pada saat AVR reset atau pertama kali
diaktifkan.
Application Flash Section digunakan untuk menyimpan program aplikasi yang dibuat user. AVR
tidak dapat menjalakan program aplikasi ini sebelum menjalankan program Boot Loader.
Besarnya memori Boot Flash Section dapat deprogram dari 128 word sampai 1024 word
tergantung setting pada konfigurasi bit di register BOOTSZ. Jika Boot Loader diproteksi, maka
program pada Application Flash Section juga sudah aman

memori SRAM pada ATMEGA 8535. Terdapat 608 lokasi address data memori. 96 lokasi
address digunakan untuk Register File dan I/O Memory sementara 512 aplikasi address lainnya
digunakan untuk internal data SRAM. Register file terdiri dari 32 general purpose working
register, I/O register terdiri dari 64 register.
2. EEPROM Data Memory

ATMEGA 8535 memiliki EEPROM 8 bit sebesar 512 byte untuk menyimpan data. Loaksinya
terpisah dengan system address register, data register dan control register yang dibuat khusus
untuk EEPROM. Alamat EEPROM dimulai dari $000 sampai $1FF.

DIAGRAM BLOK AVR 8535

Bagian-bagian blok diagram di atas dapat dijelaskan sebagai berikut:

7
ALU (Arithmatic Logic Unit) adalah processor yang bertugas mengeksekusi (eksekutor)
kode program yang ditunjuk oleh program counter.

Program Memori adalah memori Flash PEROM yang bertugas menyimpan program
(software) yang kita buat dalam bentuk kode-kode program (berisi alamat memori beserta
kode program dalam ruangan memori alamat tersebut) yang telah dicompile berupa
bilangan heksa atau biner

Program Counter (PC) adalah komponen yang bertugas menunjukkan ke ALU alamat
program memori yang harus diterjemahkan kode programnya dan dieksekusi. Sifat dari
PC adalah linier artinya menghitung naik satu bilangan yang bergantung alamat awalnya.
Misalnya jika isi PC 0x000 maka naik satu menjadi 0x001 yang berarti menyuruh ALU
mengeksekusi kode program yang berada pada alamat 0x001 program memori. Jika isi
PC dari 0x002 dipaksa (instruksi lompatan) 0x02A maka akan naik satu menjadi 0x02B
dan melakukan tugasnya begitu seterusnya.

32 General Purpose Working Register (GPR) adalah register file atau register kerja (R0-
R31) yang mempunyai ruangan 8-bit. Tugas GPR adalah tempat ALU melibatkan GPR.
GPR terbagi dua yaitu kelompok atas (R16-R31) dan kelompok bawah (R0-R15), di
mana kelompok bawah tidak bisa digunakan untuk mengakses data secara langsung
(imidiet) data konstan seperti instruksi assembly LDI, dan hanya bisa digunakan antar-
register, SRAM, atau register I/O (register port). Sedangkan kelompok atas sama dengan
kelompok bawah hanya mempunyai kelebihan dapat mengakses data secara langsung
(imidiet) data konstan. Kelebihan lain dari GPR adalah terdapat register pasangan yang
digunakan untuk pointer (penunjuk ke alamat tertentu XH:XL(R27:R:26),
YH:YL(R29:R28), ZH:ZL(R31:R30), hanya register pointer Z yang dapat digunakan
untuk menunjuk ke alamat memori program.

Static Random Access Memory (SRAM) adalah RAM yang bertugas menyimpan data
sementara sama seperti RAM pada umumnya mempunyai alamat dan ruangan data.
Alamat terakhir dari SRAM bergantung pada kapasitas SRAM, biasanya sudah
didefinisikan pada file header dengan nama RAMEND, jadi kita tidak perlu mengingat
alamat SRAM yang terakhir, pakai saja RAMEND. RAMEND biasanya digunakan untuk
membuat stack (alamat terakhir dari SRAM). Dalam bahasa C, pembuatan stack menjadi
tanggungan compiler

Internal Pheripheral adalah peralatan/modul internal yang ada dalam mikrokontroler


seperti saluran I/O, interupsi eksternal, Timer/Counter, USART, EEPROM dan lain-lain.
Tiap peralatan internal mempunyai register port (register I/O) yang mengendalikan
peralatan internal tersebut. Kata-kata port dan I/O di atas bukan hanya pin input atau
output tetapi semua peralatan internal yang ada di dalam chip, di sini disebut port atau
I/O (dengan kata lain di luar CPU adalah I/O walaupun kenyataanya berada dalam chip)

8
I/O memory terdiri 64 addresses sebagai peripheral control register,timer/counter.A/D
converters dan fungsi I/O .I/O memory dapat di akses secara langsung sebagai sebagai register
file dari $20-$5F

AVR CPU General-purpose Working Registers

Register R26 s/d R31 mempunyai fungsi tambahan selain sebagai register umum (GPR)
Register ini sebagai address pointer untuk indirect adrresing data space.

9
Cara-cara addressing:
1.Direct single register addressing

2. Direct Register Addressing, Two Registers

3.I/O direct addressing

10
Alamat pada operands terdiri dari 6 bit instruction word n adalah tujuan atau sumber register address

I/O Memory MAP

11
12
2.PROGRAMMING MICROCONTROLLER AVR8535

Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi setiap

instruksi yang akan dilaksanakan oleh computer. Pemilihan tipe data yang tepat akan membuat operasi

data menjadi lebih efisien dan efektif.

Tabel 1.1 Tipe tipe data

No Tipe Jangkauan

1 Bit 0 atau 1

2 Byte 0 255

3 Integer -32,768 32,767

4 Word 0 65535

5 Long -2147483648 2147483647

6 Single 1.5 x 10^45 3.4 x 10^38

7 Double 5.0 x 10^324 to 1.7 x 10^308

8 String >254 byte

1.1. KONSTANTA

Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses program berlangsung.
Konstanta nilainya selalu tetap. Konstanta harus didefinisikan terlebih dahulu di awal program. Konstanta
dapat bernilai integer, pecahan, karakter dan string.

Contoh konstanta : A=5

C = 1.1.

13
1.2. VARIABLE

Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu di dalam

proses program. Berbeda dengan konstanta yang nilainya selalu tetap, nilai dari suatu variable bisa

diubah-ubah sesuai kebutuhan. Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan

aturan sebagai berikut :

Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf..

Tidak boleh mengandung spasi.

Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah (underscore). Yang

termasuk symbol khusus yang tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -, +, = dsb

Panjangnya hanya 32 karakter.

1.3. DEKLARASI

Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program. Identifier dapat

berupa variable, konstanta dan fungsi.

1.4.1. DEKLARASI VARIABEL

Bentuk umum pendeklarasian suatu variable adalah :

Dim Nama_variabel AS Nama_tipe;

Contoh :

Dim x As Integer Deklarasi x bertipe integer

Dim a As long Deklarasi a bertipe long

14
1.4.2. Deklarasi Konstanta

Dalam Bahasa Basic konstanta di deklarasikan langsung.

Contohnya : L = 12345678 'Assign long

S = "Hello world" 'Assign string

1.4.3. Deklarasi Fungsi

Fungsi merupakan bagian yang terpisah dari program dan dapat diaktifkan atau dipanggil di

manapun di dalam program. Fungsi dalam Bahasa Basic ada yang sudah disediakan sebagai fungsi

pustaka seperti Print, input, data dan untuk menggunakannya tidak perlu dideklarasikan.

Fungsi yang perlu dideklarasikan terlebih dahulu adalah fungsi yang dibuat oleh programmer.

Bentuk umum deklarasi sebuah fungsi adalah :

TEST[( [BYREF/BYVAL] var as type)] As type

Contohnya :

Declare Function Myfunction(byval I As Integer , S As String) As Integer

1.4. OPERATOR

1.5.1. OPERATOR PENUGASAN

Operator Penugasan (Assignment operator) dalam Bahasa Basic berupa tanda sama dengan (=).

15
1.5.2. OPERATOR ARITMATIKA

Bahasa Basic menyediakan lima operator aritmatika, yaitu :

.* : untuk perkalian

/ : untuk pembagian

% : untuk sisa pembagian (modulus)

+ : untuk pertambahan

- : untuk pengurangan

Catatan : operator % digunakan untuk mencari sisa pembagian antara dua bilangan.

1.5.3. OPERATOR HUBUNGAN (PERBANDINGAN)

Operator hubungan digunakan untuk membandingkan hubungan antara dua buah operand /sebuah

nilai atau variable.

Operator hubungan dalam Bahasa Basic :

= Equality X=Y

<> Inequality X <> Y

< Less than X<Y

> Greater than X>Y

<= Less than or equal to X <= Y

>= Greater than or equal to X >= Y

16
1.5.4. Operator Logika

Jika operator hubungan membandingkan hubungan antara dua buah operand, maka operator

logika digunakan untuk membandingkan logika hasil dari operator-operator hubungan.

Operator logika ada empat macam, yaitu :

NOT Logical complement

AND Conjunction

OR Disjunction

XOR Exclusive or

Contoh:A = 63 And 19

1.5.5. Operator Bitwise

Operator bitwise digunakan untuk memanipulasi bit dari data yang ada di memori.

Operator bitwise dalam Bahasa Basic :

Shift A , Left , 2 : Pergeseran bit ke kiri

Shift A , RIGHT, 2: Pergeseran bit ke kanan

Rotate A , Left , 2 : Putar bit ke kiri

Rotate A , RIGHT, 2: Putar bit ke kanan

Contoh:

Pergeseran bit ke kiri

Dim a as Byte

17
A=1

Do

Print A

Shift A , Left , 1

Waitms 100

Loop

End

Pergeseran bit ke kanan

Dim a as Byte

A = 128

Do

Print A

Shift A , Right , 1

Waitms 100

Loop

End

Putar bit ke kanan

Dim a as Byte

A = 128

Do

Print A

Rotate A , Right , 1

Waitms 100

Loop

End

18
Putar bit ke kiri

Dim a as Byte

A=1

Do

Print A

Rotate A , Left , 1

Waitms 100

Loop

End

1.5. Komentar Program

Komentar program hanya diperlukan untuk memudahkan pembacaan dan pemahaman suatu program

(untuk keperluan dokumentasi program). Dengan kata lain, komentar program hanya merupakan

keterangan atau penjelasan program. Komentar program tidak akan ikut diproses dalam program (akan

diabaikan).

Contoh pertama :

program ini dibuat oleh

1.6. Penyeleksian Kondisi

Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu proses. Penyeleksian

kondisi dapat diibaratkan sebagai katup atau kran yang mengatur jalannya air. Bila katup terbuka maka air

akan mengalir dan sebaliknya bila katup tertutup air tidak akan mengalir atau akan mengalir melalui

tempat lain. Fungsi penyeleksian kondisi penting artinya dalam penyusunan Bahasa Basic, terutama untuk

program yang kompleks.

19
1.7.1. STRUKTUR KONDISI IF.

Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu kondisi tunggal. Bila

proses yang diseleksi terpenuhi atau bernilai benar, maka pernyataan yang ada di dalam blok if akan

diproses dan dikerjakan. Bentuk umum struktur kondisi if adalah :

if(kondisi) then pernyataan;

Contoh: If data1 = 1 Then Call Lestoright(1)

1.7.2. STRUKTUR KONDISI IF......ELSE.

Dalam struktur kondisi if.....else minimal terdapat dua pernyataan. Jika kondisi yang diperiksa bernilai

benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai

salah maka pernyataan yang kedua yang dilaksanakan. Bentuk umumnya adalah sebagai berikut :

if(kondisi)

pernyataan-1

else

pernyataan-2

Contoh

If A > 10 Then 'make a decision

Print " A >10" 'this will not be printed

Else 'alternative

Print " A not greater than 10" 'this will be printed

END IF

20
1.7.3. STRUKTUR KONDISI CASE

Struktur kondisi switch....case....default digunakan untuk penyeleksian kondisi dengan kemungkinan yang

terjadi cukup banyak. Struktur ini akan melaksanakan salah satu dari beberapa pernyataan case

tergantung nilai kondisi yang ada di dalam switch. Selanjutnya proses diteruskan hingga ditemukan

pernyataan break. Jika tidak ada nilai pada case yang sesuai dengan nilai kondisi, maka proses akan

diteruskan kepada pernyataan yang ada di bawah default.

Bentuk umum dari struktur kondisi ini adalah :

Select Case(kondisi)

case 1 : pernyataan-1;

break;

case 2 : pernyataan-2;

break;

.....

.....

case n : pernyataan-n;

break;

default : pernyataan-m

contoh

Select Case Ultra

Case &B01000001 : Call Maju(6)

21
Case &B01001000 : Call Turnright110()

Case &B01000000 : Call Turnright()

Case &B00000001 : Call Majukiri(4)

Case &B01001001 : Call Balikkanan(50)

Case Else : Call Maju(2)

End Select;

1.7. PERULANGAN

Dalam Bahasa Basic tersedia suatu fasilitas yang digunakan untuk melakukan proses yang
berulangulang sebanyak keinginan kita. Misalnya saja, bila kita ingin menginput dan mencetak bilangan
dari 1 sampai 100 bahkan 1000, tentunya kita akan merasa kesulitan. Namun dengan struktur perulangan
proses, kita tidak perlu menuliskan perintah sampai 100 atau 1000 kali, cukup dengan beberapa perintah
saja. Struktur perulangan dalam Bahasa Basic mempunyai bentuk yang bermacam-macam.

1.10.1. STRUKTUR PERULANGAN WHILE


Perulangan WHILE banyak digunakan pada program yang terstruktur. Perulangan ini banyak digunakan
bila jumlah perulangannya belum diketahui. Proses perulangan akan terus berlanjut selama kondisinya
bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah.

Contoh Program 1 :

While A <= 10 'if a is smaller or equal to 10

Print A 'print variable a

Incr A

Wend

1.10.2. STRUKTUR PERULANGAN DO.....LOOP


Pada dasarnya struktur perulangan do....loop sama saja dengan struktur while. Jadi dengan menggunakan
struktur do loop sekurang-kurangnya akan terjadi satu kali perulangan.

Contoh Program :

A=1 'assign a var

22
Do 'begin a do..loop

Print A 'print var

Incr A 'increase by one

Loop Until A = 10 'do until a=10

1.10.3. STRUKTUR PERULANGAN FOR

Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah

perulangannya. Dari segi penulisannya, struktur perulangan for tampaknya lebih efisien karena

susunannya lebih simpel dan sederhana. Bentuk umum perulangan for adalah sebagai berikut :

FOR var = start TO end [STEP value]

Contoh

For A = 1 To 10 Step 2
Print "This is A " ; A
Next A
Print "Now lets count down"
For C = 10 To -5 Step -1
Print "This is C " ; C
Next

11.ALIAS
Untuk mempermudah programing nama register diberui nama dengan suatu hardware, misalkan:
Tombol_1 alias PortA.0 nama lain dai PortA.0 adalah Tombol_1
Lampu alias PortC.0 nama lain dai PortC.0 adalah Lampu

23
PRAKTIKUM 1

Rangkaian lampu LED


Pada parktikum kali ini , kita akan menyalakan 8 LED melalui PORTC , LED ini tipe common anode
(CA) artinya perlu logika 0 untuk meng ON kan lampu LED, maka PORT C harus mengeluarkan logic 0
dan PORTC sebagai output

Ketiklah listing dibawah ini pada compiler BASCOM AVR

-----Deklarasi Crystal---------
$crystal =11059200
-----Deklarasi header--------
$regfile =m8535.dat
------------------------------------
------deklarasi variabel-------
Dim led AS byte
---------------------------------
--------setting port c-------
Config Portc =output
------------------------------
---------program utama-------------

Do

24
Led =0
Portc = led
Loop
End
---------------------------------------

Pada praktikum 1 port c sebagai output dan menggunakan variabel led dan variabel tersebut diberi nilai
0 sehingga semua LED ON

PRAKTIKUM2

Cobalah diganti nilai led menjadi 7, seperti listing dibawah ini:


Ketiklah listing dibawah ini pada compiler BASCOM AVR

-----Deklarasi Crystal---------
$crystal =11059200
-----Deklarasi header--------
$regfile =m8535.dat
------------------------------------
------deklarasi variabel-------
Dim led AS byte
---------------------------------
--------setting port c-------
Config Portc =output
------------------------------
---------program utama-------------

Do
Led = 18
Portc = led
Loop
End M
---------------------------------------

25
Bit PORTC PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
LOGIC 0 0 0 1 0 0 1 0
LED ON ON ON OFF ON ON OFF ON

Konversi bilangan decimal ke bilagan Biner:

25 : 2 = 12 sisa 1.

12 : 2 = 6 sisa 0.

6 : 2 = 3 sisa 0.

3 : 2 = 1 sisa 1.

1 : 2 = 0 sisa 1.

0 : 2 = 0 sisa 0. (end)

Nah, setelah didapat perhitungan tadi, pertanyaan berikutnya adalah, hasil konversinya yang
mana? Ya, hasil konversinya adalah urutan seluruh sisa-sisa perhitungan telah diperoleh, dimulai
dari bawah ke atas.

Maka hasilnya adalah 0110012. Angka 0 di awal tidak perlu ditulis, sehingga hasilnya menjadi

110012. Sip?

Sekarang kita beralih ke konversi bilangan biner ke desimal. Proses konversi bilangan biner ke
bilangan desimal adalah proses perkalian setiap bit pada bilangan biner dengan perpangkatan 2,
dimana perpangkatan 2 tersebut berurut dari kanan ke kiri bit bernilai 2o sampai 2n.

Langsung saja saya ambil contoh bilangan yang merupakan hasil perhitungan di atas, yaitu
110012. Misalkan bilangan tersebut saya ubah posisinya mulai dari kanan ke kiri menjadi seperti
ini.

26
1

Nah, saatnya mengalikan setiap bit dengan perpangkatan 2. Ingat, perpangkatan 2 tersebut
berurut mulai dari 2o sampai 2n, untuk setiap bit mulai dari kanan ke kiri. Maka :

1 > 1 x 2o = 1

0 > 0 x 21 = 0

0 > 0 x 22 = 0

1 > 1 x 23 = 8

1 > 1 x 24 = 16 > perhatikan nilai perpangkatan 2 nya semakin ke bawah semakin


besar

Maka hasilnya adalah 1 + 0 + 0 + 8 + 16 = 2510.

Nah, bandingkan hasil ini dengan angka desimal yang saya ubah ke biner di awal tadi. Sama
bukan?

27
PRAKTIKUM 3
Berapa angka decimal yang harus diberikan kepada variable led agar seperti kondisi pada table dibawah
ini:
Bit PORTC PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
LOGIC 1 0 1 1 0 0 1 0
LED OFF ON OFF OFF ON ON OFF ON

PRAKTIKUM 4
PEMROGRAMAN LED BERKEDIP dengan menggunakan perintah WAITMS ( second)
Ketik listing dibwah ini:
-----Deklarasi Crystal---------
$crystal =11059200
'-----Deklarasi header--------
$regfile ="m8535.dat" '
'------------------------------------
'------deklarasi variabel-------
Dim led1 AS byte
Dim led2 AS Byte
'---------------------------------
'--------setting port c-------
Config Portc =output
'------------------------------
'---------program utama-------------
led1= 255
Led2 = 0
Do
PortC =led1

28
Waitms 500
PortC =led2
Waitms 500
Loop
End
'---------------------------------------
ADA PERTANYAN????

PARKTIKUM 5

Pada praktikum 5 ini , menggunakan perintah ROTATELEFT dan ROTATE RIGHT, maka LED
pada PORTC akan bergeser ke kiri atau kekanan

$crystal = 11059200
$regfile = "m8535.dat"
Led alias Portc
Config Portc = Output
Led = 254
Do
Rotate Led , Right , 1
Waitms 200
Loop
End

Coba diganti dengan Rotate Led, left,1 kemudian coba diganti Rotate Led, left,2
Rotate ini biasa digunakan untuk aplikasi motor stepper
PARKTIKUM 6 ( latihan mandiri waktu 10 menit)

Buatlah program otomatis geser kiri dari PC0 sampai PC7, kemudian geser kanan dari PC7 ke PC0 secara
terus menerus

29
PRAKTIKUM 7
PEMROGRAMAN DENGAN TOMBOL

Dengan PORTC PC0 digunakan sebagai output PD.0 sebagai input tombol, PD.0 internal PULL UP aktif
'-------------------------------------------------------
'DEKLARASI HEADER
'-------------------------------------------------------
$regfile = "8535def.dat"
'-------------------------------------------------------
'DEKLARASI CRISTAL
'-------------------------------------------------------
$crystal = 11059200
Config Portd.0 = Input
Config Portc.0 = Output
Portd..0 = 1
Do
If Pind.0 = 0 Then
Portc.0 = 1
End If
Loop
End

30
PRAKTIKUM 8
Dengan PORTC PC0 digunakan sebagai output, PD0 sebagai ON dan PD1 sebagai OFF input tombol,
PD0 dan PD1 internal PULL UP aktif
Ketiklah Listing dibawah ini:
$regfile = "8535def.dat"
$crystal = 11059200
Config Portd.0 = Input
Config Portd.1 = Input
Config Portc.0 = Output
Portd.0= 1 aktif internal pullup
Portd.1 = 1; aktifan internal pull up
Do
If Pind.0 = 0 Then cek kondisi input port d.0
Portc.0 = 1
Elseif Pind.1 = 0 Thencek kondisi inpur portd.1
Portc.0 = 0
End If
Loop
End

31
PRAKTIKUM 8.1 Penggunaan Perintah SELECT CASE

Ketiklah Listing dibawah ini:


'-------------------------------------------------------
'DEKLARASI HEADER
'-------------------------------------------------------
$regfile = "8535def.dat"
'-------------------------------------------------------
'DEKLARASI CRISTAL
'-------------------------------------------------------
$crystal = 11059200
Dim A as Byte
Config portc = output
Config portd = input
Keluaran alias portc
Masukkan alias portd
Portd =255
Do
A= masukkan
Select Case A
Case &B01111111 : Keluaran = &B10101010 push button PD.7 ditekan
Case &B10111111 : Keluaran = &B01010101 push button PD.6 ditekan
End select
loop

32
PRAKTIKUM 9 . APLIKASI DENGAN 7 SEGMEN DISPLAY
Tampilan seven segment digunakan sebagai decoder dari bilangan Binary Coded
Decimal ( BCD ) ke 7 segment decoder. Untuk masukan ada 4 bit dan keluarannya
ada 7 bit yang ada pada tampilan 7 segment. Tampilan 7 segment adalah
komponen elekronika yang dapat menampilkan angka dari 0 sampai 9, bisa
menggunakan satu 7 segment atau dua 7 segment yang disesuaikan dengan
berapa karakter yang akan ditampilkan. Ada dua jenis tipe dari penampil 7 segment
ini, ada yang 7 segment dengan common anoda dan 7 segment dengan common
katoda. Pada common anoda akan aktif jika mendapat input low atau logika 0
sedangkan pada common katoda akan aktif jika mendapat input high atau logika
1.Gambar di bawah ini konfigurasi dari 7 segment:

33
PRAKTIKUM 9 . APLIKASI DENGAN 7 SEGMEN DISPLAY
Untuk aplikasi 7 segment ini menggunakan IC type MC14511B BCDtoseven segment
latch/decoder/driver
Dengan menggunakan perintah Makebcd untuk membuat data ke format BCD
X lebih kecil = 10 portA.0 = on= >> parkir kosong
X lebih besar = 20 portA.1 = on, porta A.0 = off >> tersedia
X lebih besar =30 portaA.2 = on, porta A.0= off, portA.1 = off >> full

'-------------------------------------------------------
'DEKLARASI HEADER
'-------------------------------------------------------
$regfile = "8535def.dat"
'-------------------------------------------------------
'DEKLARASI CRISTAL
'-------------------------------------------------------
$crystal = 11059200
Config Portc = Output
Config porta.0 =output
Dim X As Byte
X=0
Do
Portc = Makebcd(x)
Incr X

If X =>30 then
Porta.7 =1
elseIf x <30 then
Porta.7 =0
End if

34
If X = 10 Then X = 0
Waitms 1000
Loop
End
Ketika di atas 30 portA.0 ON .dibawah 30 off

PRAKTIKUM 10 STOP WATCH


Dengan 3 buah tombol dan 6 buah 7 segment
$crystal = 11059200
'--------------------------------------------------------
'DEKLARASI Header
'--------------------------------------------------------
$regfile = "m8535.dat" 'jika menggunakan ATMEGA8535.
'--------------------------------------------------------
Config Porta = Output
Config Portc = Output
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim Pb As Bit
Config Portd.2 = Input
Config Portd.3 = Input
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Do

35
If Pind.4 = 0 Then reset
Pb = 0
A=0
B=0
C=0
Porta = Makebcd(0)
Portc = &B1111_1000
End If
If Pind.2 = 0 Thenstart
Pb = 1
End If
If Pind.3 = 0 Thenstop
Pb = 0
End If
If Pb = 1 Then
Waitms 100
Incr A
Portc = &B1111_1011
Porta = Makebcd(a)

If A = 10 Then
A= 0
Porta = Makebcd(a)
Incr B
End If
If B < 60 Then
Portc = &B1111_1101
Porta = Makebcd(b)
End If
If B = 60 Then
Incr C
B=0
Portc = &B1111_1101
Portc = &B1111_1110

36
Porta = Makebcd(c)
End If
If C >= 99 Then
Portc = &B1111_1111
Porta = Makebcd(c)
End If
If C = 100 Then
Pb = 0
A= 0
B=0
C=0
End If
End If
Loop

PRAKTIKUM 11. JAM DIGITAL DENGAN 7 SEGMNET (latihan mandiri 15 menit)


PRAKTIKUM 12. JAM DIGITAL DENGAN 7 SEGMNET DENGAN TOMBOL SET
DETIK,MENIT,JAM (latihan mandiri 15 menit)

37
PRAKTIKUM 13
Penggunaan KEY PAD 4x4 dengan menggunakan fungsi KBD dan select case pada BASCOM,
Keypad 4x4 merupakan suatu model keypad berukuran 4 kolom dan 4baris ,keypad ini berfungsi sebagai
input dalam aplikasi seperti pengaman digital , data logger , absensi, pengendali motor, robotic ,dll

38
Hubungan key pad 4x4 ke port mikrokontroller

39
Pada Praktikum kali ini menampilkan atau scaning keypad dan ditampilkan pada s7 segment
Ketiklah listing dibawah ini:
$regfile = "8535def.dat"
$crystal = 11059200
Dim B As Integer
Config Kbd = Portc
Config Porta = Output
Declare Sub Segment(byval Datae As Integer)
Do
B = Getkbd()
If B <> 16 Then Call Segment(b)
Loop
End
'-------------------------------------------------------
'Sub Rutin Seven Segment
'-------------------------------------------------------
Sub Segment()
Select Case Datae

40
Case 0 : Porta = Makebcd(1)
Case 1 : Porta = Makebcd(2)
Case 2 : Porta = Makebcd(3)
Case 3 : Porta = Makebcd(10)

Case 4 : Porta = Makebcd(4)


Case 5 : Porta = Makebcd(5)
Case 6 : Porta = Makebcd(6)
Case 7 : Porta = Makebcd(11)

Case 8 : Porta = Makebcd(7)


Case 9 : Porta = Makebcd(8)
Case 10 : Porta = Makebcd(9)
Case 11 : Porta = Makebcd(12)

Case 13 : Porta = Makebcd(0)


Case 15 : Porta = Makebcd(13)

End Select
End Sub
'-------------------------------------------------------

PRAKTIKUM 14 KEYPAD dengan fungsi sub program dan call sub program
$regfile = "8535def.dat"

41
$crystal = 11059200
'-------------deklarasi variabel-----------
Dim Data1 As Integer
Dim B As Byte
Dim A As Byte
Dim C As Byte
'--------------deklarasi port-----------
Config Kbd = Porta
Config Portc = Output
'-----------deklarasi sub program---------------------
Declare Sub Kiri()
Declare Sub Kanan()
Declare Sub Kedip()
Declare Sub Mati()
'-------------program utama---------------
Do
Data1 = Getkbd()
If Data1 = 0 Then
C=1
End If
If Data1 = 1 Then
C=2
End If
If Data1 = 2 Then
C=3
End If
If Data1 = 3 Then
C=4
End If
If C = 1 Then
Call Kiri()
End If
If C = 2 Then
Call Kanan()

42
End If
If C = 3 Then
Call Kedip()
End If
If C = 4 Then
Call Mati()
End If
Loop
End
'----------program sub kiri
Sub Kiri()
A = 254
For B = 0 To 8
Portc = A
Shift A , Left , 1
Waitms 100
Next
End Sub

'------------program sub kanan-----------


Sub Kanan()
A = 127
For B = 0 To 8
Portc = A
Shift A , Right , 1
Waitms 100
Next
End Sub

'--------progam sub kedip2


Sub Kedip()
For B = 0 To 8
Portc = 0
Waitms 100

43
Portc = 255
Waitms 100
Next
End Sub
'-------------------------------------------------------
'SUB RUTIN MATI
'-------------------------------------------------------
Sub Mati()
Portc = 255
End Sub

PRAKTIKUM 15 TIMER T0:


Buatlah listing dibawah ini:

44
$regfile = "8535def.dat"
$crystal = 11059200
Dim Hitung As Integer
Config Porta = Output
Config Portc = Output
Config Portd.2 = Input
Config Timer0 = Counter , Edge = RisingPORTB.0
Portd.2 = 1
Tcnt0 = 0
Portc = &B1111_1111
Do
Hitung = Tcnt0
Porta = Makebcd(hitung)
If Hitung = 20 Then
Portc.0 = 0
End If
If Pind.2 = 0 Then
Portc.0 = 1
Tcnt0 = 0
End If
Loop
End

TEORI DASAR TIMER/COUNTER 1

45
1.8. TIMER/COUNTER0

Timer/Counter0 adalah Timer/Counter 8 bit yang multifungsi. Fitur-fitur dari

Timer/Counter0 pada ATmega8535 adalah sebagai berikut.

a. Counter 1 kanal.

b. Timer di-nol-kan saat proses pembandingan tercapai (compare match).

c. Sebagai pembangkit gelombang PWM.

d. Sebagai pembangkit frekuensi.

e. Clock prescaler 10 bit.

f. Sumber interupsi dari compare match (OCF0) dan overflow (TOV0).

Pengaturan Timer/Counter0 diatur oleh TCCR0 (Timer/Counter Control

Register0) yang dapat dilihat pada Gambar 7.1

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00

Gambar 7.1. Register TCCR0

Penjelasan untuk tiap bit-bitnya adalah sebagai berikut.

a. Bit 7 FOC0: Force Output Compare

b. Bit 6,3 WGM01:WGM00: Waveform Generation Unit

Bit ini mengontrol kenaikan dari counter, sumber dari nilai maksimum

counter, dan tipe dari jenis timer/counter yang dihasilkan, yaitu mode

normal, clear timer, mode compare match, dan dua tipe dari PWM (Pulse

46
Width Modulation). Berikut ini tabel pengaturan pada bit WGM01 dan WGM00

untuk menghasilkan mode tertentu.

Tabel 7.1. Pengaturan Bit WGM01 dan WGM00

Bendera

Mode WGM01 WGM00 Mode TOP Update TOV0


operasi
(CTC0) (PWM0) Timer/Count OCR0 diset
er saat nilai

0 0 0 Normal 0xFF Immediat MAX


e

1 0 1 PWM, phase 0xFF TOP BOTTOM


correct

2 1 0 CTC OCR0 Immediat MAX


e

3 1 1 Fast PWM 0xFF TOP MAX

c. Bit 5, 4 COM01:COM00: Compare Match Output Mode

Bit ini mengontrol pin OC0 (pin Output Compare). Apabila kedua bit ini nol

atau clear, maka pin OC0 berfungsi sebagai pin biasa. Bila salah satu bit set,

maka fungsi pin ini tergantung pada pengaturan bit pada WGM00 dan

WGM01. Berikut daftar tabel pengaturan bit COM01 dan COM00 sesuai

pengaturan bit pada WGM00 dan WGM01.

47
Tabel 7.2. Pengaturan Bit COM01 dan COM00 Mode Non-PWM

COM0 COM00 Keterangan


1

0 0 Operasi port normal, OC0 tidak dihubungkan.

0 1 Toggle OC0 saat proses pembandingan tercapai.

1 0 Clear OC0 saat proses pembandingan tercapai.

1 1 Set OC0 saat proses pembandingan tercapai.

Tabel 7.3. Tabel 2.3 Pengaturan Bit COM01 dan COM00 Mode Fast PWM

COM0 COM0 Keterangan


1 0

0 0 Operasi port normal, OC0 tak dihubungkan.

0 1 Reserved

Clear OC0 saat proses pembandingan tercapai,


set OC0 pada nilai TOP.
1 0

Set OC0 saat proses pembandingan tercapai,


clear OC0 pada nilai TOP.
1 1

Pengaturan Bit COM01 dan COM00 Mode Phase Correct PWM

COM0 COM00 Keterangan

48
1

0 0 Operasi port normal, OC0 tak dihubungkan.

0 1 Reserved

Clear OC0 saat proses pembandingan tercapai, yaitu


ketika hitungan naik. Set OC0 saat proses
1 0
pembandingan tercapai, yaitu ketika hitungan turun.

Set OC0 saat proses pembandingan tercapai, yaitu


ketika hitungan naik. Clear OC0 saat proses
1 1
pembandingan tercapai, yaitu ketika hitungan turun.

d. Bit 2, 1, 0 CS02, CS01, CS00: Clock Select

Ketiga bit tersebut untuk memilih sumber clock yang akan digunakan oleh

Timer/Counter0.

Tabel 7.4. Konfigurasi Bit Clock Select

CS02 CS0 CS0 Keterangan


1 0

0 0 0 Tanpa sumber clock (timer/counter tidak

difungsikan).

0 0 1 clkI/O /1 (tanpa prescaling)

0 1 0 clkI/O /8 (dari prescaler)

0 1 1 clkI/O /64 (dari prescaler)

1 0 0 clkI/O /256 (dari prescaler)

1 0 1 clkI/O /1024 (dari prescaler)

1 1 0 Sumber clock eksternal pada pin T0. Clock pada

falling edge.

1 1 1 Sumber clock eksternal pada pin T0. Clock pada

49
rising edge.

PRAKTIKUM 15A APLIKASI TIMER


$crystal = 11059200
'--------------------------------------------------------
'DEKLARASI Header
'--------------------------------------------------------
$regfile = "m8535.dat"
'-------------------INTERUPT TIMER 0---------------------
Config Timer0 = Timer , Prescale = 256
Const Isiawal = &H0
On Timer0 Timer0_isr ' timer0 overflow interrupt
Tcnt0 = Isiawal
Enable Timer0 ' enable Ovf0
Enable Interrupts
'--------------------------------------------------------
'-------------------interupt timer1 ----------------------
Config Timer1 = Timer , Prescale = 256
Const Inisial = &H5740
'1 detik &H5740
On Timer1 Timer1_isr ' timer1 overflow interrupt
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Enable Timer1 ' enable Ovf1
Enable Interrupts
'------------------------------------------------------------
Config Portc.2 = Output
Config Portc.3 = Output
Dim A As Byte

Do
If A = 10 Then
Toggle Portc.3

50
A= 0
End If
Loop
End
Timer1_isr: ' untuk 1 kali interupsi/detik
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Toggle Portc.2 ' LED 4
Return
Timer0_isr:
Tcnt0 = Isiawal
Incr A
Return

PRAKTIKUM 16 PENGGUNAAN LCD DISPLAY 2X16

51
$crystal = 11059200
$regfile = "m8535.dat" 'jika menggunakan ATMEGA8535
$lib "lcd4busy.Lbx"
Config Porta = Output
Config Portc = Output

Config Lcd = 16 * 2
Const _lcdport = Portb
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off

Do
Cls
Waitms 500
Lcd "****MUHAMMAD****"
Lowerline
Lcd "*LABIB MUBAROK*"
Waitms 500
Cls
Waitms 500
Lcd "Tanjung barat"
Lowerline
Lcd "*pasar minggu *"
Waitms 500
Loop
End

PRAKTIKUM 17 (LATIHAN MANDIRI) 15 menit


1. PORTC.0 Sebagai output yang dihubungkan dengan LED
2. POTD.2 sebagai input

52
3. PORTD.3 sebagai input
Jika tombol PORTD.2 ditekan (logic 0 ) maka LED ON dan di LCD tampil LAMPU ON
Jika tombol PORTD.3 ditekan (logic 0) maka LED OFF dan di LCD tampil LAMPU OFF

-------------------------------------MATERI HARI PERTAMA SELESAI-------------------------------------------

------------------------------KUNCI JAWABAN MATERI HARI PERTAMA SELESAI------------------------

53
JAWABAN PRAKTIKUM 6 program otomatis geser kiri dari PC0 sampai PC7, kemudian geser
kanan dari PC7 ke PC0
$crystal = 11059200
$regfile = "m8535.dat"
Dim Led As Byte
Config Portc = Output
Led = 254
Do
Do
Rotate Led , Left , 1
Portc = Led
Waitms 50
Loop Until Portc = 127
Do
Rotate Led , Right , 1
Portc = Led
Waitms 50
Loop Until Portc = 254
Loop
End

JAWABAN PRAKTIKUM 11 JAM DIGITAL DENGAN 7 SEGMENT

54
$crystal = 11059200
'--------------------------------------------------------
'DEKLARASI Header
'--------------------------------------------------------
$regfile = "m8535.dat"
'--------------------------------------------------------
Config Porta = Output
Config Portc = Output
Dim A As Byte
Dim B As Byte
Dim C As Byte
Do
Wait 1
Incr A
Portc = &B1111_1011
Porta = Makebcd(a)
If A = 60 Then
A= 0
Porta = Makebcd(a)
Incr B
End If
If B < 60 Then
Portc = &B1111_1101
Porta = Makebcd(b)
End If
If B = 60 Then
Incr C
B=0
Portc = &B1111_1101
Portc = &B1111_1110
Porta = Makebcd(c)
End If
If C >= 23 Then
Portc = &B1111_1111

55
Porta = Makebcd(c)
End If
If C = 24 Then
A= 0
B=0
C=0
Portc = &B1111_1000
Porta = Makebcd(0)
End If
Loop
End

56
JAWABAN PRAKTIKUM 12 JAM DIGITAL DENGAN 7 SEGMENT DENGAN SET
DETIK,MENIT,JAM
$crystal = 11059200
'--------------------------------------------------------
'DEKLARASI Header
'--------------------------------------------------------
$regfile = "m8535.dat"
'--------------------------------------------------------
Config Porta = Output
Config Portc = Output
Dim A As Byte
Dim B As Byte
Dim C As Byte
Config Portd.2 = Input
Config Portd.3 = Input
Config Portd.4 = Input
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Do
'----------SETING DETIK----------------
If Pind.2 = 0 Then
Portc = &B1111_1011
Do
Incr A
If A = 60 Then
A= 0
End If
Porta = Makebcd(a)
Waitms 500
Loop Until Pind.2 = 1
End If
'----------SETING DETIK----------------

57
'----------SETING MENIT----------------
If Pind.3 = 0 Then
Portc = &B1111_1101
Do
Incr B
If B = 60 Then
B=0
End If
Porta = Makebcd(b)
Waitms 500
Loop Until Pind.3 = 1
End If
'----------SETING MENIT----------------
'----------SETING JAM----------------
If Pind.4 = 0 Then
Portc = &B1111_1110
Do
Incr C
If C = 24 Then
C=0
End If
Porta = Makebcd(c)
Waitms 500
Loop Until Pind.4 = 1
End If
'----------SETING JAM----------------
Wait 1
Incr A
Portc = &B1111_1011
Porta = Makebcd(a)
If A = 60 Then
A= 0
Porta = Makebcd(a)
Incr B

58
End If
If B < 60 Then
Portc = &B1111_1101
Porta = Makebcd(b)
End If
If B = 60 Then
Incr C
B=0
Portc = &B1111_1101
Portc = &B1111_1110
Porta = Makebcd(c)
End If
If C >= 23 Then
Portc = &B1111_1111
Porta = Makebcd(c)
End If
If C = 24 Then
A= 0
B=0
C=0
Portc = &B1111_1000
Porta = Makebcd(0)
End If
Loop
End

59
JAWABAN PRAKTIKUM 17
$crystal = 11059200
$regfile = "m8535.dat" 'jika menggunakan ATMEGA8535
$lib "lcd4busy.Lbx"
Config Lcd = 16 * 2
Const _lcdport = Portb
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off
Config Portd.2 = Input
Config Portd.3 = Input
Config Portc.0 = Output
Portd.2 = 1
Portd.3 = 1

Do
If Pind.2 = 0 Then
Portc.0 = 0
End If
If Pind.3 = 0 Then
Portc.0 = 1
End If

If Portc.0 = 0 Then
Waitms 20
Cls
Lcd "LAMPU ON"
End If

If Portc.0 = 1 Then
Waitms 20

60
Cls
Lcd "LAMPU OFF"
End If

Loop
End

INTERUPS
Mikrokontroller AVR mempunyai 21 macam interups, terdiri dari 3 interups external dan 18 interups
internal,berikut table interups AVR:
1 0x000(1) RESET External Pin Power-on Reset, Brown-out Reset
2 0x001 INT0 External Interrupt Request 0
3 0x002 INT1 External Interrupt Request 1
4 0x003 TIMER2 COMP Timer/Counter2 Compare Match
5 0x004 TIMER2 OVF Timer/Counter2 Overflow
6 0x005 TIMER1 CAPT Timer/Counter1 Capture Event
7 0x006 TIMER1 COMPA Timer/Counter1 Compare Match A
8 0x007 TIMER1 COMPB Timer/Counter1 Compare Match B
9 0x008 TIMER1 OVF Timer/Counter1 Overflow
10 0x009 TIMER0 OVF Timer/Counter0 Overflow
11 0x00A SPI, STC Serial Transfer Complete
12 0x00B USART, RXC USART, Rx Complete
13 0x00C USART, UDRE USART Data Register Empty
14 0x00D USART, TXC USART, Tx Complete
15 0x00E ADC ADC Conversion Complete
16 0x00F EE_RDY EEPROM Ready
17 0x010 ANA_COMP Analog Comparator
18 0x011 TWI Two-wire Serial Interface
19 0x012 INT2 External Interrupt Request 2
20 0x013 TIMER0 COMP Timer/Counter0 Compare Match
21 0x014 SPM_RDY Store Program Memory Ready

Praktikum 18:
$crystal = 11059200
$regfile = "m8535.dat"
On Int0 Program_1
On Int1 Program_2
Led Alias Portc
Config Int0 = Falling
Config Int1 = Falling

61
Config Portd = Input
Config Portc = Output
Portd = 255
Enable Int0
Enable Int1
Enable Interrupts
Led = 254
Do
Do
Rotate Led , Left , 1
Waitms 500
Loop Until Led = 127
Do
Rotate Led , Right , 1
Waitms 500
Loop Until Led = 254
Loop
Program_1:
Led = &B11111011
Bitwait Pind.2 , Set
Return
Program_2:
Led = &B10111111
Bitwait Pind.3 , Set
Return

POKOK BAHASAN ANALOG INPUT DAN LCD


ATmega8535 menyediakan fasilitas ADC dengan resolusi 10 bit. ADC ini dihubungkan dengan 8
channel Analog Multiplexer yang memungkinkan terbentuk 8 input tegangan single- ended yang masuk
melalui pin pada PortA. ADC memiliki pin supply tegangan analog yang terpisah yaitu AVCC. Besarnya
tegangan AVCC adalah 0.3V dari VCC.
Tegangan referensi ADC dapat dipilih menggunakan tegangan referensi internal maupun
eksternal. Jika menggunakan tegangan referensi internal, bisa dipilih on-chip internal reference voltage
yaitu sebesar 2.56V atau sebesar AVCC. Jika menggunakan tegangan referensi eksternal, dapat

62
dihubungkan melalui pin AREF. ADC mengkonversi tegangan input analog menjadi data digital 8 bit
atau 10 bit. Data digital tersebut akan disimpan didalam ADC Data Register yaitu ADCH dan ADCL.
Sekali ADCL dibaca, maka akses ke data register tidak bisa dilakukan. Dan ketika ADCH dibaca, maka
akses ke data register kembali enable.

Start Adc
'--------------------------
Dim Suhu_ref As Word
Dim Suhu As Word
'--------------------------
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
'--------------------------
Cls
Cursor Off
'--------------------------
Do
Suhu_ref = Getadc(0)
Suhu = Suhu_ref * 5
Suhu = Suhu / 10
Locate 1 , 1
Lcd "**THERMOMETER***"
Locate 2 , 1
Lcd "Suhu="
Locate 2 , 6
Lcd " "

63
Locate 2 , 6
Lcd Suhu
Locate 2 , 9
Lcd Chr(0)
Locate 2 , 10
Lcd "C"
Locate 2 , 11
Lcd " "
Waitms 100
If Suhu => 70 Then
Portc.0 = 1
End If
If Suhu < 70 Then
Portc.0 = 0
End If
Loop

PRAKTIKUM 20
$regfile = "m8535.dat" 'jika menggunakan ATMEGA8535
$lib "lcd4busy.Lbx"
$crystal = 11059200
Config Lcd = 16 * 2
Const _lcdport = Portb
Const _lcdddr = Ddrb

64
Const _lcdin = Pinb
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off

Config Adc = Single , Prescaler = Auto , Reference = Avcc


Start Adc

Dim Data_adc1 As Word , Adc_convert1 As Single , Adc_string1 As String * 10


Dim Data_adc2 As Word , Adc_convert2 As Single , Adc_string2 As String * 10

Cursor Off
Cls

Do
Data_adc1 = Getadc(0)
Adc_convert1 = Data_adc1
Adc_convert1 = Adc_convert1 / 1024
Adc_convert1 = Adc_convert1 * 5
Adc_string1 = Fusing(adc_convert1 , "#.##")

Data_adc2 = Getadc(1)
Adc_convert2 = Data_adc2
Adc_convert2 = Adc_convert2 / 1024
Adc_convert2 = Adc_convert2 * 5
Adc_string2 = Fusing(adc_convert2 , "#.##")
Locate 1 , 1
Lcd "ADC-0 : " ; Adc_string1 ; "volt"
Locate 2 , 1
Lcd "ADC-1 : " ; Adc_string2 ; "volt"
Waitms 200
Loop

65
-AKSES EEPROM

PRAKTIKUM21
$regfile = "m8535.dat"
$lib "lcd4busy.Lbx"

66
$crystal = 11059200
Config Lcd = 16 * 2
Const _lcdport = Portb
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off
Cls
Cursor Off

Dim X As Byte , I As Byte , D As Byte

Cls
Locate 1 , 1
Lcd "ATMega-8535"
Locate 2 , 1
Lcd "Demo EEPROM"

Wait 3

Cls
Locate 1 , 1
Lcd "menulis EEPROM.."
Locate 2 , 1
Lcd "datanya="

For I = 0 To 9
Locate 2 , 9
D = Rnd(100)
Lcd D
Writeeeprom D , I
Wait 1

67
Next I

Locate 2 , 1
Lcd "selesai menulis!"
Wait 2

Cls
Locate 1 , 1
Lcd "membaca EEPROM.."
Locate 2 , 1
Lcd "data ke-"

For I = 0 To 9
Locate 2 , 9
Readeeprom X , I
Lcd I ; " = " ; X
Wait 1
Next I
End

68
Kontrol Motor DC dengan PWM

ATMEGA mempunyai 2 keluaran PW yang terhubung dengan timer1


OC1A dan OC1B atau PD.4 dan PD.5

69
PRAKTIKUM 23
$regfile = "m8535.dat"
$lib "lcd4busy.Lbx"
$crystal = 11059200
Config Lcd = 16 * 2
Const _lcdport = Portb
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim Kecepatan As Integer
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down ,
Prescale = 1024
Compare1a = 0
Compare1b = 10
Do
Kecepatan = Getadc(0)
Compare1a = Kecepatan
Locate 1 , 1
Lcd "compare1a : " ; Kecepatan ; "analog"
Waitms 200
Loop
'--------------------------- end

70

You might also like