Anda di halaman 1dari 117

MODUL I

ALGORITMA PEMROGRAMAN
I. Tujuan

II. Uraian Materi


A. Algoritma
1. Pengertian

2. Ciri ciri algoritma

No.

Proses

Algoritma

Contoh Langkah dalam Algoritma

3. Jenis Struktur data penyusunan Algoritma


a) Sequence Process

b) Selection Process

c) Iteration Process

d) Concurrent Process

4. Penyajian Algoritma

KETERANGAN

LAMBANG

Mulai / Selesai (Terminator)

Aliran Data

Input / Output

Proses

Percabangan (Decision)

Pemberian nilai awal suatu variabel


(Preparation)

Memangggil prosedur / fungsi (Call)

KETERANGAN

LAMBANG

Connector (di halaman yang sama)

Connector (di halaman lain)

Sequence process

Perulangan

B.

Pemrograman

III. Rangkuman

IV. Latihan Soal

V. Tugas

VI. Evaluasi

VII.

Kriteria Penilaian

Kriteria

Skor (5-100)

Kognitif soal nomor 1

Kognitif soal nomor 2

Bobot

Nilai

Keterangan

Nilai >= 75
Kognitif soal nomor 3

10
Lulus

Kognitif soal nomor 4

10

Kognitif soal nomor 5

70
Nilai akhir

MODUL II
ARSITEKTUR MIKROKONTROLER
I.

Tujuan

II.

Uraian Materi

A. Mirkokontroler ATMega8535

10

11

a. Konfigurasi pin ATMega8535

12

PIN

1-8

KETERANGAN

9
10
11
12
13

14-21

13

PIN

KETERANGAN

22-29

30
31
32
33 40

b. Karakteristik Keslistrikan ATMega8535

14

c. Organisasi Memori

1) Memori Program (Memory ISP)

15

$000

Aplication Flash Section

Boot Flash Section

$FFF

2) Memori Data
32 Registers

$000 - $001F

64 I/O Registers

$020 - $005F
$0060

Internal SRAM
512 x 8

$025F

a) RAM

b)

SRAM

16

3) Memori EEPROM

$0000

EEPROM

$0200

Microcontroller AVR
Jenis

Kemasan
PIN

Memori (byte)
Flash
EEPROM
SRAM
( Kb ) ( K
(Kb )

(Byte )

d. Interupsi Mikrokontrol ATMega8535

17

e. Sistem Minimum ATMega8535

18

SISTEM MINIMUM ATMega8535

I/O Header
(Optional)

ISP Downloader
(Optional)

III.

Rangkuman

19

IV. Latihan Soal

V.

Tugas

VI. Evaluasi

VII. Kriteria Penilaian

Kriteria

Skor

Kognitif soal nomor 1

15

Kognitif soal nomor 2

20

Kognitif soal nomor 3

20

Kognitif soal nomor 4

Kognitif soal nomor 5

20

Kognitif soal nomor 6

20

Bobot

Nilai

Keterangan

Nilai >= 75
Lulus

Nilai akhir

20

MODUL III
BAHASA C UNTUK PEMROGRAMAN
MIKROKONTROLER AVR
I.

Tujuan

II.

Uraian Materi

A. Bahasa C untuk Pemrograman AVR


a. Sejarah Singkat Bahasa C

b.

Kekurangan dan Kelebihan Bahasa C dibanding Assmbler


1. Kelebihan Bahasa C

21

2. Kekurangan Bahasa C

c. Pengenal dalam bahasa C

diperbolehkan
#define Nama2 PORTB.2
#define nama_saya
#define _saya_ok
diperbolehkan
2saya
Saya+2
Nama saya

//(tidak boleh diawali dengan angka)


//(tidak boleh menggunakan operator +)
//(tidak boleh menggunakan spasi)

d. Tipe Data

22

e.

Konstanta Dan Variabel

1.

Konstanta

2. Variable

f.

Variabel Global Dan Variabel Local

char
int
long
void
{
char
int
long
}
g.

main (void)
data_a;
data_b;
data_c=13;

Komentar Program

// program PWM untuk mengatur kecepatan motor


/*sedangkan yang ini adalah komentar yang
digunakan lebih dari satu baris*/

23

h. Pengarah Prosesor

# include
# include <mega 8535>
i.

Pernyataan

j.

Operator Aritmatika

k. Operator Pembanding

24

l.

Operator Logika

Contoh.
if

(( a == b )

&&

(c ! = d )) PORTC = 0XFF;

m. Operator Bitwise

n. Operator Penugasan

A = x * y;

o.

Operator Unary

25

Catatan Penting ! :

p. Fungsi pustaka

#include <lcd.h>

26

q. Struktur kondisi if.

if (PINA>0x80)
{
dataku = PINA;
PORTC=0xFF;
}

if
r.

(PINA>0x80)

PORTC=0xFF;

struktur kondisi if......else.

if (kondisi)
{
// blok pernyataan
// jika kondisi if
}
else
}
// blok pernyataan
// jika kondisi if
}

yang akan dikerjakan


terpenuhi

lain yang akan dikerjakan


terpenuhi

27

if (PINA>0x80)
{
dataku = PINA;
PORTC = 0xff;
}
else
{
dataku = ~PINA;
PORTC=0x00;
}

s. Pernyataan If Bersarang

if (kondisi_1)
{
if (kondisi_2)
{
// blok pernyataan_1 yang akan dikerjakan
// jika kondisi_1 dan kondisi_2 terpenuhi
}
}
else
{
if (kondisi_3)
{
// blok pernyataan_2 yang akan dikerjakan
// jika kondisi_1 dan kondisi_3 terpenuhi
}
}

t.

Pernyataan Switch

28

switch (PINA)
{
case 0xFE : PORTD=0x00;break;
case 0xFD : PORTC=0xFF;break;
}

u. Pernyataan While

while (kondisi)
{
//sebuah pernyataan atau blok pernyataan
}

Unsigned char
a=0;
................
While (a<10)
{
PORTC=a;
a++;
}

v.

Pernyataan For

for (nilai_awal ; kondisi ; perubahan

29

unsigned int a;
for (a=1,a<10,a++)
{
PORTC=a;
}

w. Bentuk Dasar Program C

//prototype fungsi inisialisasi port


void inisialisasi_port (char A, char B, char C, char D);
//definisi fungsi inisialisasi port
void inisialisasi_port (char A, char B, char C, char D);
{
DDRA=A;
DDRB=B
DDRC=C
DDRD=D
}
//fungsi utama
Void main (void)
{
inisialisasi_port (0xFF, 0xF0, 0x0F, 0x00);
}

30

B. Tool Pendukung

1. Menu File

31

2. Menu Edit

,
,
,
,
,
,
,
,
,

3.

Menu Project

,
,

32

,
,

,
,
4.

Menu Tools

setting

debbuger

5. Menu Setting

33

b. Codevision AVR Chip Programer

III.

Rangkuman

34

IV.

Latihan Soal

V.

Tugas

VI.

Evaluasi
a.
b.

35

MODUL IV
DASAR INPUT OUTPUT

I.

Tujuan

II.

Uraian Materi

A.

Dasar Input Dan Output

36

a. Perintah Input dan Output secara Byte

1. OUTPUT

2. INPUT

b. Perintah Input dan Output secara Bit


1. Output

..........
PORTB.3=1;
..........

37

2. Input

............
data_n=PINB.3;
............

B. Penggunaan Pustaka Delay (Tunda)

Instruksi-Instruksi Dipustaka delay.


delay_us

delay_us(100) //memberikan delay 100 mikro detik


delay_ms

delay_ms(100) //memberikan delay 100 mili detik

Catatan penting
#asm {cli)
#asm (sei)

38

Lembar Kerja I
Alat dan Bahan

Keselamatan Kerja

Judul : Dasar Input Output dan Penggunaan Kompilator

39

Keterangan versi
program dan
identitas

Fungsi Pustaka
Awal Fungsi Utama
Inisialisasi
Input dan
Output
40

Inisialisasi
Timer

Inisialisasi
Timer

Inisialisasi
Interupt

Inisialisasi
Analog
Komparator
Fungsi
pengulangan tak
berhingga

41

............
............
............
while (1)
{
// Place your code here
PORTB = PINA //Memindahkan data PORTA ke PORTB
};
}

tidak dalam posisi on

NO Saklar LED

Reaksi LED

42

Judul: Pemrograman PORT Secara byte dan bit

43

#include <mega16.h>
// blok header
#include <delay.h>
// tambahkan library delay disini
..................
..................
Tambahkan interuksi berikut :
void main(void)
{
..........
// Place your code here
#asm (cli)
PORTB=0xFF;
delay_ms(500);
// memanggil delay dari librari delay.
PORTB=0XF0;
delay_ms(500);
#asm(sei)
};
}

#include <mega16.h>
#include <delay.h>
..........
..........
while (1)
{
// Place your code here
PORTB=0b01111111;delay_ms(200);
PORTB=0b10111111;delay_ms(200);
PORTB=0b11011111;delay_ms(200);
PORTB=0b11101111;delay_ms(200);
PORTB=0b11110111;delay_ms(200);
PORTB=0b11111011;delay_ms(200);
PORTB=0b11111101;delay_ms(200);
PORTB=0b11111110;delay_ms(200);
};
}

44

while (1)
{
// Place your code here
PORTB=0x7f;delay_ms(200);
PORTB=0xbf;delay_ms(200);
PORTB=0xdf;delay_ms(200);
PORTB=0xef;delay_ms(200);
PORTB=0xf7;delay_ms(200);
PORTB=0xfb;delay_ms(200);
PORTB=0xfd;delay_ms(200);
PORTB=0xfe;delay_ms(200);
};
}

while (1)
{
// Place your code here
/*
PORTB=0x7f;delay_ms(200);
PORTB=0xbf;delay_ms(200);
PORTB=0xdf;delay_ms(200);
PORTB=0xef;delay_ms(200);
PORTB=0xf7;delay_ms(200);
PORTB=0xfb;delay_ms(200);
PORTB=0xfd;delay_ms(200);
PORTB=0xfe;delay_ms(200);
*/

blok program ini telah mati dan


dianggap komentar

PORTB=1;delay_ms(200);
//blok program ini yang aktif
PORTB=2;delay_ms(200);
PORTB=4;delay_ms(200);
PORTB=8;delay_ms(200);
PORTB=16;delay_ms(200);
PORTB=32;delay_ms(200);
PORTB=64;delay_ms(200);
PORTB=128;delay_ms(200);
}
}

45

#include <mega16.h>
#include <delay.h>
#define led0
#define led1
#define led2

PORTB.0
PORTB.3
PORTB.7

.............
.............
.............
.............
.............
while (1)
{
// Place your code here
led0=0;delay_ms(200);led0=1;delay_ms(200);
led1=0;delay_ms(200);led1=1;delay_ms(200);
led2=1;delay_ms(200);led2=0;delay_ms(200);
};
}

46

Nomor Progam

Analisa

Kesimpulan

47

Nomor Progam

Analisa

Kesimpulan

Analisa Secara Umum/Keseluruhan:

Kesimpulan Secara Umum/Keseluruhan:

48

Judul : Intertfacing Saklar dan Pengenalan Looping

49

#include <mega16.h>
#include <delay.h>
unsigned char hit;
#define led0
PORTB.0
#define led1
PORTB.1
#define led2
PORTB.2
#define sw1
PINA.1
#define sw2
PINA.2
#define sw3
PINA.3
#define sw4
PINA.4
#define sw5
PINA.7
.............
.............
while (1)
{
// Place your code here
awal:
if (sw1==0) //jika saklar 1 ditekan
{
PORTB=0x00;delay_ms(300);
// 8 led led dimatikan
PORTB=0xFF;delay_ms(300); // 8 led led dinyalakan
}
if (sw2==0) //jika saklar 2 ditekan
{
PORTB=0x0F;delay_ms(300);
PORTB=0xF0;delay_ms(300);
}
if (sw3==0) //jika saklar 7 ditekan
{
PORTB=0xAA;delay_ms(300);
PORTB=0x55;delay_ms(300);
}

//maka led plip-plop

//maka

LED blink-blink

if (sw4==0) //jika sw4 ditekan


{
while(1) //pengulangan talberhingga
{
for(hit=0;hit<3;hit++) // ulang sebanyak 3x
{
PORTB=0x0F;delay_ms(200);PORTB=0;delay_ms(200);
if(sw5==0){ goto awal;}//jika sw 5 ditekan loncat ke label awal
}
for(hit=0;hit<3;hit++) // ulang sebanyak 3x
{
PORTB=0xF0;delay_ms(200);PORTB=0;delay_ms(200);
if(sw5==0){goto awal;}
}
}
}
PORTB=0x00; //jika tidak maka led mati
}
};

50

No

No sw

Reaksi LED

Analisa Secara Umum/Keseluruhan:

Kesimpulan Secara Umum/Keseluruhan:

III.

Rangkuman

51

52

Evalusi

53

MODUL V
PEMOGRAMAN SEVEN SEGMENT
I.

II.

Tujuan

Uraian Materi

A. SEVEN SEGMENT

54

B. Menggunakan SEVEN SEGMENT

COM

A
B
C
D
E
F
G
DP

55

Lembar Kerja I
Alat dan Bahan

Keselamatan Kerja

Judul : Menggunakan 7segment

56

57


Yes.

File | Generate Save and Exit

..........
#include <mega16.h>
#include <delay.h>
..........
while (1)
{
PORTD=0;
PORTB= 0b11000000; //menampilkan angka 0;
delay_ms(500);
PORTB= 0b11111001; //menampilkan angka 1;
delay_ms(500);
PORTB= 0b10100100; //menampilkan angka 2;
delay_ms(500);
}

Analisa:

Latihan :

58

III.

Rangkuman

59

MODUL VI
PEMOGRAMAN MENGGUNAKAN LCD
KARAKTER
I.

Tujuan

II.

Uraian Materi

www.engineersgarage.com

60

Y
0
1

X
0

15

Lembar Kerja I LCD


Alat dan Bahan

Keselamatan Kerja

Judul: Pemrograman LCD Koordinat Satis

61


Yes.
IC

Chip

File | Generate Save and Exit

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
..........

..........
.equ __lcd_port=0x15 ;PORTC
...........

..........
// LCD module initialization
lcd_init(16);
//inisialisasi LCD 16x2
Contoh program LCD :
..........
#include <mega16.h>

62

#include <delay.h>
..........
while (1)
{
// Place your code here
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("*SELAMAT DATANG*");
lcd_gotoxy(0,1);
lcd_putsf("DI PELATIHAN AVR");
delay_ms(5000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("**ATMEGA16 DIP**");
lcd_gotoxy(0,1);
lcd_putsf("*KUSMAN SUBARJA*);
delay_ms(5000);
};
}

lcd_clear()

lcd_putsf("DI PELATIHAN AVR ")


lcd_putsf("

);

Kesimpulan Secara Umum dari percobaan 1 LCD:

Judul: Pemrograman LCD Koordinat Dinamis

63


Yes.
IC

Chip

File | Generate Save and Exit

..........
#include <mega16.h>
#include <delay.h>
#include <stdio.h>

//library standar input dan output

unsigned char a, buf[16];

64

..........
while (1)
{
// Place your code here
for(a=0;a<13;a++)
{
lcd_gotoxy(a,0);lcd_putsf( ^_^ );
sprintf(buf,Nilai a: %d ,a); //fungsi utk menampilkan isi a
lcd_gotoxy(0,1);lcd_puts(buf);
delay_ms(300);
}
lcd_clear();
}

Kesimpulan Secara Umum dari percobaan 1 LCD:

III.

Rangkuman

65

MODUL VII
ADC ( Analog to Digital Converter )
I.

Tujuan

II.

Uraian Materi

A. Konsep ADC

66

67

B. Pemrograman ADC

Lembar Kerja I ADC


Alat dan Bahan

Keselamatan Kerja

Judul: Pemrograman ADC

68

Yes.

.........................................
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
unsigned int adc;
unsigned char nilai[16];
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

69

#define ADC_VREF_TYPE 0x60


// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
// Declare your global variables here
void main(void)
{
.........................................
.........................................
.........................................
.........................................
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Latihan Prgm ADC");
delay_ms(50);
while (1)
{
// Place your code here
adc=read_adc(0);
if(adc<16){PORTB=0;}
else if(adc<64){PORTB=4;}
else if(adc<128){PORTB=8;}
else if(adc<256){PORTB=16;}
sprintf(nilai,"nilai ADC=%d ",adc);
lcd_gotoxy(0,1);lcd_puts(nilai);
delay_ms(300);
};
}

#define ADC_VREF_TYPE 0x60


// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

data_adc=read_adc(1) ;

//membaca ADC dichanel 1

70

71

III.

Rangkuman

72

Evalusi

73

MODUL VIII
TIMER/COUNTER
I.

Tujuan

II.

Uraian Mater

A. Timer/Counter

1. Timer/counter 0

2. Timer/counter 1

74

3. Timer/counter 2

B. PERHITUNGAN WAKTU TIMER


1. Perhitungan untuk timer 8bit

75

2. Perhitungan untuk Timer 16bit

TCNT = D5D0h

76

C. Lembar Kerja
Percobaan I TIMER

Alat dan Bahan

Keselamatan Kerja

Langkah Kerja

77

#include <mega16.h>
bit ciri;

// variabel global untuk flag timer

// Timer 1 overflow interrupt service routine


interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer 1 value
TCNT1H=0xD5;
TCNT1L=0xD0;
// Place your code here
if(ciri==1) // periksa ciri
{
PORTB=0xff;
// jika ciri = 1 (led Menyala)
ciri =0;
// clear ciri
}
else
{
PORTB=0x00;
// jika ciri = 0 (led Padam)
ciri =1;
// set ciri

78

}
}
// Declare your global variables here
void main(void)
......................................
......................................
// Global enable interrupts
#asm (sei)
ciri =0; // kondisi awal ciri berlogika 0
while (1)
{
//place your code here
};
}

Analisa

Kesimpulan Secara Umum :

Percobaan II TIMER

79

Alat dan Bahan

Keselamatan Kerja

Langkah Kerja

80

#include <mega16.h>
#include <stdlib.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
unsigned int kali=0,detik=0,menit=0,jam=0;
unsigned char cdetik[10],cmenit[10],cjam[10];
// Timer 2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
// Place your code here
TCNT2=0;//Jika sudah compare match, set awal lagi
if(++kali==10000)//periksa apakah sudah mencapai
timer2
{
if (++detik==60)
{
detik=0;
lcd_clear();
if (++menit==60)
{
menit=0;
lcd_clear();

10.000

kali

interupsi

if (++jam==24)
{
jam=0;
lcd_clear();
}
}
}

81

kali=0;
itoa(detik,cdetik);// mengubah integer detik jadi karakter pd string cdetik
itoa(menit,cmenit);
itoa(jam,cjam);
lcd_gotoxy(0,0);lcd_putsf("*Jam Digital Ku*");
lcd_gotoxy(9,1);lcd_putsf(":");
lcd_gotoxy(10,1);lcd_puts(cdetik);
lcd_gotoxy(6,1);lcd_putsf(":");
lcd_gotoxy(7,1);lcd_puts(cmenit);
lcd_gotoxy(4,1);lcd_puts(cjam);
}
}
// Declare your global variables here
void main(void)
{
......................
......................
While(1)
{
//Place your code here
}
}

Analisa

Kesimpulan Secara Umum :

Latihan

82

Rangkuman

83

MODUL IX
PWM (Pulse Witdh Modulation)
I.

Tujuan

III.

Uraian Materi

a. Pengertian PWM

84

b. Hubungan antara duty circle dengan nilai rata-rata tegangan

Percobaan I Aplikasi PWM pada LED


Alat dan Bahan

85

Keselamatan Kerja

Langkah Kerja

86

.................
.................
#include <mega16.h>
#include <delay.h>
unsigned char a;
............
..........
Void main (void)
{
........................
........................
While (1)
{
OCR0=a;
delay_ms(100);
a=a+5;
}
}

87

Percobaan II Aplikasi PWM menggunakan interupsi Timer

Alat dan Bahan

Keselamatan Kerja

Langkah Kerja

88

.................
.................
#include <mega16.h>
#include <delay.h>
unsigned char a,x,nilai;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
x++;
if(x<nilai) {PORTB.0=1;} else {PORTB.0=0;}
}
............
..........
Void main (void)
{
........................
........................
While (1)
{
nilai=a;
delay_ms(100);
a=a+5;
}
}

// Timer 0 overflow interrupt service routine


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
x++;
if(x<nilai)
{PORTB.0=1;} else {PORTB.0=0;}
if(x<nilai-30) {PORTB.1=1;} else {PORTB.1=0;}
if(x<nilai-60) {PORTB.2=1;} else {PORTB.2=0;}
}

89

MODUL X
APLIKASI SENSOR TEMPERATUR
I.

Tujuan

II.

Uraian Materi

A. Sensor Temperatur LM 35

B. karakteristik dari sensor suhu LM35.

90

C. Deskripsi kerja

LM35

Sistem
Mikrokontoler

Display/
Aktuator

91

Lembar Kerja I LM35


Alat dan Bahan

Keselamatan Kerja

Judul: Pemrograman ADC

92


Yes.
IC

Chip

93

#include <mega16.h>
unsigned char adc,bar[16];
int suhu1,suhu;
unsigned char x=0;
Void main(void)
{
......................
......................
while (1)
{
// Place your code here
lcd_clear();
adc=read_adc(1);
suhu1=adc;
suhu=1.96*suhu1;
// rumus sensor suhu LM35
sprintf(bar,"Data ADC:%d",adc);
lcd_gotoxy(0,0);lcd_puts(bar);
sprintf(bar,"Temperatur:%d C ",suhu);
lcd_gotoxy(0,1);lcd_puts(bar);
delay_ms(300);
}
}

#include <mega16.h>
unsigned char adc,bar[16];
int refernsi,suhu1,suhu;
unsigned char x=0;
Void main(void)
{
......................
......................
referensi=25;
while (1)
{
// Place your code here
lcd_clear();
adc=read_adc(1);
suhu1=adc;
suhu=1.96*suhu1;
// rumus sensor suhu LM35
sprintf(bar,"Data ADC:%d",adc);
lcd_gotoxy(0,0);lcd_puts(bar);
sprintf(bar,"Temperatur:%d C",suhu);
lcd_gotoxy(0,1);lcd_puts(bar);
if(suhu>referensi) {PORTB = 0xff;}
else {PORTB = 0x00;}
}
}

94

suhu=1.92*data ADC ?

Kesimpulan Secara Umum :

95

MODUL XI
EXTERNAL INTERUPT REQUEST (IRQ)
I. Tujuan

II. Uraian Materi


A. Konsep pembacaan sinyal

96

Perubahan yang terbaca/pulsa yang dihitung

High
t

Low

Perubahan yang terbaca/pulsa yang dihitung

High
t

Low

Perubahan yang terbaca/pulsa yang dihitung

High

Low

B.

Aplikasi External Interupt Request

97

Jenis interup

PIN

Percobaan I Aplikasi Eksternal interupt


Alat dan Bahan

Keselamatan Kerja

Langkah Kerja

98

External IRQ

INT0 Enabled

#include <mega16.h>
#include <stdio.h>
#include <delay.h>
unsigned char a, buf[16];
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
a++;
}
....................................
....................................
....................................
#asm("sei")
while (1)
{
// Place your code here
sprintf(buf,"angka:%d",a);
lcd_gotoxy(0,0);lcd_puts(buf);
};

99

Latihan

a
b

a
b

Rangkuman

100

MODUL XII
APLIKASI KEYPAD
I. Tujuan

II. Uraian Materi

hacker.instanet.net

101

Keadaan awal 1 1 1 1 1 1 1 0

Keadaan awal 1 1 1 1 1 1 0 1

102

Keadaan awal 1 1 1 1 1 0 1 1

Keadaan awal 1 1 1 1 0 1 1 1

Lembar kerja Dasar Menggunakan Keypad Matrix 4x4


Alat dan Bahan

Keselamatan Kerja

Langkah kerja

103

while (1)
{
// Place your code here
PORTA=0b11111110;
delay_us(100);
switch(PINA)
{
case 0b11101110: lcd_gotoxy(0,1);lcd_putsf("D");break;
case 0b11011110: lcd_gotoxy(0,1);lcd_putsf("#");break;
case 0b10111110: lcd_gotoxy(0,1);lcd_putsf("0");break;
case 0b01111110: lcd_gotoxy(0,1);lcd_putsf("*");break;
}
PORTA=0b11111101;
delay_us(100);
switch(PINA)
{
case 0b11101101: lcd_gotoxy(0,1);lcd_putsf("C");break;
case 0b11011101: lcd_gotoxy(0,1);lcd_putsf("9");break;
case 0b10111101: lcd_gotoxy(0,1);lcd_putsf("8");break;

104

case 0b01111101: lcd_gotoxy(0,1);lcd_putsf("7");break;


}
PORTA=0b11111011;
delay_us(100);
switch(PINA)
{
case 0b11101011:
case 0b11011011:
case 0b10111011:
case 0b01111011:
}
PORTA=0b11110111;
delay_us(100);
switch(PINA)
{
case 0b11100111:
case 0b11010111:
case 0b10110111:
case 0b01110111:
}
};

lcd_gotoxy(0,1);lcd_putsf("B");break;
lcd_gotoxy(0,1);lcd_putsf("6");break;
lcd_gotoxy(0,1);lcd_putsf("5");break;
lcd_gotoxy(0,1);lcd_putsf("4");break;

lcd_gotoxy(0,1);lcd_putsf("A");break;
lcd_gotoxy(0,1);lcd_putsf("3");break;
lcd_gotoxy(0,1);lcd_putsf("2");break;
lcd_gotoxy(0,1);lcd_putsf("1");break;

Latihan

Rangkuman

105

MODUL XIII
H-BRODGE MOTOR DRIVER
I.

Tujuan

II.

Uraian Materi

106

SW1 SW2 SW3 SW4 SW5

Polaritas Polaritas
Kutub A

Kutub B

Putaran Motor

Keterangan

OFF

OFF

OFF

OFF

OFF

Diam

OFF

OFF

ON

ON

OFF

OFF

Diam

OFF

ON

OFF

OFF

ON

OFF

Diam

OFF

OFF

OFF

OFF

OFF

ON

Diam

OFF

OFF

ON

ON

OFF

ON

Positif

Ground

CW

Active

ON

OFF

OFF

ON

ON

Ground

Positif

CCW

Active

ON

ON

ON

ON

OFF

Diam

OFF

ON

ON

OFF

OFF

OFF

Diam

OFF

OFF

OFF

ON

ON

OFF

Diam

OFF

ON

ON

ON

ON

ON

Diam

Short Circiut

ON

ON

OFF

OFF

ON

Diam

Short Circiut

OFF

OFF

ON

ON

ON

Diam

Short Circiut

107

CW CCW EN

Ket

Motor OFF

Motor CW

Motor CCW

ShortCircuit/Motor OFF

Motor OFF

Motor OFF

Lembar Kerja Dasar Menggunakan H-BRIDGE driver motor


Alat dan Bahan

108

Keselamatan Kerja

Langkah kerja

1A (CW)
H-BRIDGE
1B (CCW)
MOTOR-DRIVER 1
1E (PWM)

2A (CW)
H-BRIDGE
2B (CCW)
MOTOR-DRIVER 2
2E (PWM)

M1

M2

#include <mega16.h>
#include <delay.h>
#define cw_1A PORTB.0
#define ccw_1B PORTB.1
#define pwm_1E PORTB.2
#define cw_2A PORTB.3
#define ccw_2B PORTB.4
#define pwm_2E PORTB.5
void main(void)
{
........................
........................
........................
while (1)
{
// Place your code here
lcd_gotoxy(0,0);lcd_putsf("Motor CW ");
//motor 1 Putar CW
cw_1A=1;
ccw_1B=0;
pwm_1E=1;

109

//motor 2 Putar CW
cw_2A=1;
ccw_2B=0;
pwm_2E=1;
delay_ms(3000);
PORTB=0; // Semua Motor Stop
delay_ms(300);
lcd_gotoxy(0,0);lcd_putsf("Motor CWW");
//motor 1 Putar CCW
cw_1A=0;
ccw_1B=1;
pwm_1E=1;
//motor 2 Putar CCW
cw_2A=0;
ccw_2B=1;
pwm_2E=1;
delay_ms(3000);
PORTB=0; // Semua Motor Stop
delay_ms(300);
};
}

Latihan

110

Rangkuman

111

MODUL XIV
MOTOR STEPPER
I.

Tujuan

II.

Uraian Materi

112

113

Lembar Kerja Dasar Menggunakan H-BRIDGE driver motor


Alat dan Bahan

Keselamatan Kerja

Langkah kerja

114

include <mega16.h>
#include <delay.h>
unsigned char a,b,step1[]=
{
0b00000001,
0b00000011,
0b00000100,
0b00000110,
0b00000100,
0b00001100,
0b00001000,
0b00001001
};
unsigned char step2[]=
{
0b00010000,
0b00110000,
0b01000000,
0b01100000,
0b01000000,
0b11000000,
0b10000000,
0b10010000
};// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here

115

void main(void)
{
.........
.........
.........
.........
.........
while (1)
{
// Place your code here
for(b=0;b<255;b++)
{
for(a=0;a<8;a++)
// satu siklus 8 tipe pulsa dikirim
{
PORTB=step1[a];
delay_ms(3);
}
}
PORTB=0;delay_ms(10);
for(b=0;b<255;b++)
{
for(a=7;a>0;a--) // Urutan pulsa dibalik
{
PORTB=step1[a];
delay_ms(3);
}
}
};
}

Latihan

Rangkuman

116

DAFTAR PUSTAKA

117