Pemrograman Microcontroller

  • Uploaded by: Iqbal
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Pemrograman Microcontroller as PDF for free.

More details

  • Words: 1,258
  • Pages: 30
Kuliah Instrumentasi Kelautan

Pemrograman Microcontroller Muhammad Iqbal [email protected]

Laboratorium Instrumentasi dan Telemetri Kelautan Departemen Ilmu dan Teknologi Kelautan Institut Pertanian Bogor @2009

Apa yang dibutuhkan? • Board Microcontroller • Program Penulis => notepad, AVR Studio, BASCOM AVR, CodeVision AVR dll • Compiler: sangat bergantung bahasa yang digunakan : Assembly, C, BASIC, PASCAL dll • Downloader dan programnya: alat dan program yang digunakan untuk mendownload program dari komputer ke microcontroller

Diagram Proses Pemrograman Microcontroller

Introduction to C Language • Comments => menggunakan tanda “//” atau /* ini komentar tidak di eksekusi oleh compiler, tanda ini bisa 1 atau lebih baris */ • Include files ex. #include #include #include adalah preprocessor directive (pengarah) yang menginstruksikan compiler mencari file didalam tanda <>

• Expression, Statements dan Blocks Expression: kombinasi dari variable, operators dan function sehingga menghasilkan satu hasil (value) PORTD=0xFF-counter++ Statements: kontrol aliran program berdasarkan keywords, expressions dan atau statement lain. TempInCelcius=5*(TempInFahrenheit-32)/9;

• Operators simbol yang memerintahkan compiler untuk melakukan sesuatu misalnya “=“ menyatakan sama dengan sehingga misal DDRB=0xFF memerintahkan compiler untuk membuat nilai DDRB menjadi 0xFF atau “++” pada counter++ memerintahkan compiler menambahkan 1 nilai pada variable counter

Flow Control • If-Else dan Else-If if (expression) statemen1 else statemen2 Atau if (expression) statemen1 else if (expression2) statemen2 else if (expression3) statemen3 else statemen4

• Switch switch(expression) case constant expression1: statements case constant expression2: statements case constant expression3: statements default: statements

• Loops-While, For dan Do-While while (expression) { statements or do stuff } for (expression1;expression2;expression3) { statements or do stuff }

do { statements or do stuff } while (expression)

Function • Is encapsulates a computation • Ok learn by sample  • int dosomething (int x, int y, int z) { int a=0; int b=x+y+z-12; //do stuff } Selanjutnya.. Di main () program ….. int main() { int a; …. a=dosomething(c,d,e); … }

Now Implement to Microcontroller sekedar intro  • Input Output (I/O) int main() { DDRB=0xff; PORTB=0xff; DDRC=0x00; PORTC=0x00; #asm (“nop”) while (1) { PORTB.0=PINC.0; /*membaca nilai PINC.0 dan dan memberikan hasilnya ke PORTB.0 */ }; }

Jokes

Hayuuuk kita sedikit berkhayal 

ingin membuat pengkontrol ROV yaitu tombol maju, mundur, belok kiri, belok kanan

Bahan yang Tersedia • • • •

Microcontroller ATMega8535 4 buah tombol switch 2 buah motor DC IC L293D

Detail of Scenario • • • • •

Tombol 1: tombol maju Tombol 2: tombol mundur Tombol 3: tombol belok kiri Tombol 4: tombol belok kanan Scenario: Gerak

Motor 1

Motor 2

Maju

CW Hidup

CW Hidup

Mundur

CCW Hidup

CCW Hidup

Belok Kiri

CW Hidup

Mati

Belok Kanan

Mati

CW Hidup

/* pertama alur kasar program */ #include int void main() { DDRB=0x00; // portb sebagai masukan PORTB=0x00; // switch dtempatkan di PORTB 0,1,2,3 while(1) { If (PINB==0x01) { //statement maju } else if (PINB==0x02) { // statement mundur } else if (PINB==0x04) { // statement belok kiri } else if (PINB==0x08) { // statement belok kanan } else { // statement ROV diam } }

Konfigurasi motor • Motor Ada di PORTC sesuaikan dengan pin IC L293D misal saja: PORTC 0 dan 1: motor 1 , dan PORTC 2 dan 3 : motor 2 sehingga setiap gerak di definisikan menjadi : Gerak

PORC.0

PORTC.1

PORTC.2

PORTC.3

Maju

1

0

1

0

Mundur

0

1

0

1

Belok kiri

1

0

0

0

Belok Kanan

0

0

1

0

Program tadi menjadi #include int void main() { DDRB=0x00; // portb sebagai masukan PORTB=0x00; // switch dtempatkan di PORTB 0,1,2,3 DDRC=0xff; PORTC=0x00; while(1) { If (PINB==0x01) { PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; //maju } else if (PINB==0x02) {PORTC.0=0 PORC.1=1; PORTC.2=0; PORC.3=1; //mundur } else if (PINB==0x04) {PORTC.0=1; PORC.1=0; PORTC.2=0; PORC.3=0; //belok kiri } else if (PINB==0x08) {PORTC.0=0; PORC.1=0; PORTC.2=1; PORC.3=0; //belok kanan } else { PORTC=0x00; //ROV diam } }

Rasanya Program tadi ko rumit kelihatanya  • Bagaimana jika menggunakan “function” • Beberapa fungsi yang ingin saya buat – Fungsi maju, – Fungsi mundur, – Fungsi belok_kiri, – Fungsi belok_kanan

Let’s write

• • • •

Gerak

PORC.0

PORTC.1

PORTC.2

PORTC.3

Maju

1

0

1

0

Mundur

0

1

0

1

Belok kiri

1

0

0

0

Belok Kanan

0

0

1

0

Void maju() {PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; } Void mundur() {PORTC.0=0 PORC.1=1; PORTC.2=0; PORC.3=1; } Void belok_kiri() {PORTC.0=1; PORC.1=0; PORTC.2=0; PORC.3=0; } Void belok_kanan() {PORTC.0=0; PORC.1=0; PORTC.2=1; PORC.3=0; }

Program menjadi #include void maju() {PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; } void mundur() {PORTC.0=0 PORC.1=1; PORTC.2=0; PORC.3=1; } void belok_kiri() {PORTC.0=1; PORC.1=0; PORTC.2=0; PORC.3=0; } void belok_kanan() {PORTC.0=0; PORC.1=0; PORTC.2=1; PORC.3=0; }

int void main() { DDRB=0x00; // portb sebagai masukan PORTB=0x00; // switch dtempatkan di PORTB 0,1,2,3 DDRC=0xff; PORTC=0x00; while(1) { If (PINB==0x01) { maju(); //statement maju } else if (PINB==0x02) { mundur(); // statement mundur } else if (PINB==0x04) { belok_kiri() ; // statement belok kiri } else if (PINB==0x08) { belok_kanan(); // statement belok kanan } else { PORTC=0x00; // statement ROV diam } }

Bagaimana jika menggunakan switch #include void maju() {PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; } void mundur() {PORTC.0=0 PORC.1=1; PORTC.2=0; PORC.3=1; } void belok_kiri() {PORTC.0=1; PORC.1=0; PORTC.2=0; PORC.3=0; } void belok_kanan() {PORTC.0=0; PORC.1=0; PORTC.2=1; PORC.3=0; }

int void main() { DDRB=0x00; // portb sebagai masukan PORTB=0x00; // switch dtempatkan di PORTB 0,1,2,3 DDRC=0xff; PORTC=0x00; while(1) { Switch (PINC) Case 0x01 : maju(); Case 0x02 : mundur(); Case 0x04: belok_kiri(); Case 0x08: belok_kanan(); Default: PORTC=0x00; }

find your own style of programming

Good reference

Penutup • Explore lagi tentang bahasa C • Explore lagi tentang Hardware Microcontroller • Selamat berkreasi lebih  -Terima Kasih-

Lampiran • Arithmetic Operators Operator

Nama

Contoh

Penjelasa

*

Multiplication

x*y

Perkalian x dan y

/

Division

x/y

Pembagian x dan y

%

Modulo

x%y

Sisa x dibagi y

+

Addition

x+y

x tambah y

-

Substraction

x-y

x dikurangi y

++

Increment

x++

x=x+1

--

Decrement

x--

x=x-1

-

Negation

-x

Kali x dengan -1

+

Unary plus

+x

x adalah positif

• Data Acces and Size Operators Operator

Nama

Contoh

Penjelasan

[]

Elemen array

X[6]

Elemen ke-7 dari x

.

Member selection

PORTD.2

Bit 2 dari PORTD

->

Member selection

pStruct->x

Anggota x dari struktur pStruct

*

Indirection

*p

Lokasi memori dari P

&

Address of

&x

Alamat dari varible x

• Miscellaneous Operators Operator

Nama

Contoh

Penjelasan

()

Function

Wait(10)

Panggil fungsi wait

(type)

Type Cast

(double)x

Ubah variable x jadi double

?:

conditional

X?y:z

Jika x tidak 0 evaluasi y, sebaliknya evalusi z

,

Seqeuntial evaluation

X++,y++

Mulanya x ditambah 1, kemudian y ditambah 1

Relational and Logical Operators Operator

Nama

Contoh

Penjelasan

>

Lebih besar dari

X>y

X lebih besar dari y

>=

Lebih besar atau sama dengan

X>=y

X lebih besar sama dengan y

<

Lebih kecil dari

X
X lebih kecil dari y

<=

Lebih kecil atau sama dengan

X<=y

X lebih kecil atau sama dengan

==

Sama dengan (logic)

X==y

Jika x dan y sama maka benar (1), jika tidak salah (0)

!=

Tidak sama dengan

X!=y

Jika x dan y tidak sama maka benar, jika sama maka salah

!

Logical not

!x

1 jika x=0 , otherwise 0

&&

Logical AND

X&&y

X and y

||

Logical OR

X||y

X OR y

Bitwise Operators Operator

Nama

Contoh

Penjelasan

~

Bitwise complement NOT

~x

ubah bit 1 ke 0 dan bit 0 ke 1

&

Bitwise AND

X&y

Bitwise X and Y

|

Bitwise OR

X|y

Bitwise x OR y

^

Bitwise exclusive OR

X^y

Bitwise x XOR y

<<

Left shift

X<<2

Geser ke kiri 2 bit dari x

>>

Right shift

X>>2

Geser ke kanan 2 bit dari x

Related Documents


More Documents from ""