line follower

31
 26/11/2013 1 WORKSHOP PEMROGRAMAN MIKROKONTROLLER AT MEGA 8535 Arga Dwi P Pendahuluan  , (  Alf and Vegard’s Risc processor ) s ekita r tahu n 1997. Berb eda deng an mikr okont roler  , mempunyai lebar bus data 8 bit. Perbe daan ini bisa dilihat dari frek uens i kerjanya, MCS51 memiliki frek uensi kerja seper duabelas kali frek uensi osilator sedan gkan frek uensi kerja  AVR sa ma dengan frekuensi osilator. Jadi dengan frekuen si osilator yang sama kecepatan  AVR dua belas kali lebih cepat dibanding dengan MCS51. Sec ara umum AVR d ibagi menjadi 4 kelas, yaitu:  ATtiny , A T90Sxx, ATMeg a dan A T86RFxx.  er e aan an ar pe a aa ur- ur yang awar an, se ang an ar seg ars e ur dan set instruksi yang digunakan hampir sama.

Upload: yudhi-prayoga

Post on 08-Oct-2015

12 views

Category:

Documents


1 download

DESCRIPTION

line follower

TRANSCRIPT

  • 26/11/2013

    1

    WORKSHOP PEMROGRAMAN WORKSHOP PEMROGRAMAN MIKROKONTROLLER AT MEGA 8535 MENGGUNAKAN BAHASA CMENGGUNAKAN BAHASA C

    Arga Dwi PArga Dwi P

    PendahuluanPendahuluanAtmel, salah satu vendor yang bergerak dibidang mikroelektronika telah mengembangkan AVR Atmel, salah satu vendor yang bergerak dibidang mikroelektronika telah mengembangkan AVR

    (Alf and Vegards Risc processor) sekitar tahun 1997. Berbeda dengan mikrokontroler

    MCS51, AVR menggunakan arsitektur RISC (Reduce Instruction Set Computer) yang MCS51, AVR menggunakan arsitektur RISC (Reduce Instruction Set Computer) yang

    mempunyai lebar bus data 8 bit. Perbedaan ini bisa dilihat dari frekuensi kerjanya, MCS51

    memiliki frekuensi kerja seperduabelas kali frekuensi osilator sedangkan frekuensi kerjamemiliki frekuensi kerja seperduabelas kali frekuensi osilator sedangkan frekuensi kerja

    AVR sama dengan frekuensi osilator. Jadi dengan frekuensi osilator yang sama kecepatan

    AVR dua belas kali lebih cepat dibanding dengan MCS51. Secara umum AVR dibagi

    menjadi 4 kelas, yaitu:

    ATtiny, AT90Sxx, ATMega dan AT86RFxx.

    Perbedaan antar tipe AVR adalah fitur-fitur yang ditawarkan, sedangkan dari segi arsitektur Perbedaan antar tipe AVR adalah fitur-fitur yang ditawarkan, sedangkan dari segi arsitektur

    dan set instruksi yang digunakan hampir sama.

  • 26/11/2013

    2

    FiturFitur 8bit AVR berbasis RISC dengan performa tinggi dan konsumsi daya

    rendah.

    rendah. Kecepatan maksimal 16MHz. Memori Memori 8KB Flash 512 byte SRAM 512 byte SRAM 512 byte EEPROM Timer/Counter

    2 buah 8 bit timer/counter 1 buah 16 bit timer/counter 4 kanal PWM 4 kanal PWM

    8 kanal 10/8 bit ADC Programable Serial USART Programable Serial USART Komparator Analog 6 pilihan sleep mode untuk penghematan daya listrik 32 jalur I/O yang bisa diprogram 32 jalur I/O yang bisa diprogram

    Konfigurasi PINKonfigurasi PIN Power, VCC dan GND (Ground) Power, VCC dan GND (Ground) PORTA (PORTA0-7), merupakan pin IO dua arah

    dan fungsi khusus sebagai pin masukan ADC. PORTB (PORTB0-7), merupakan pin IO dua arah

    dan fungsi khusus sebagai pin Timer/Counter, komparator analog dan SPI.komparator analog dan SPI.

    PORTC (PORTC0-7), merupakan pin IO dua arahdan fungsi khusus sebagaidan fungsi khusus sebagai

    PORTD (PORTD0-7), merupakan pin IO dua arahdan fungsi khusus sebagaidan fungsi khusus sebagai

    RESET adalah pin utk mereset mikrokontroler. XTAL1 dan XTAL2 pin untuk exsternal clock. XTAL1 dan XTAL2 pin untuk exsternal clock. AVCC adalah pin masukan untuk tegangan ADC. AREF adalah pin masukan untuk tegangan AREF adalah pin masukan untuk tegangan

    referensi eksternal ADC.

  • 26/11/2013

    3

    CV AVRCV AVR Code Vision AVR C Compiler (CVAVR) merupakan compiler Code Vision AVR C Compiler (CVAVR) merupakan compiler

    bahasa C untuk AVR. Compiler ini cukup memadai untukbelajar AVR, selain mudah dalam penggunaan juga di dukungbelajar AVR, selain mudah dalam penggunaan juga di dukungfitur-fitur yang sangat membantu dalam pembuatan software untuk keperluan pemrograman AVR.untuk keperluan pemrograman AVR.

    CVAVR ini dapat berjalan dibawah sistem operasi Windows 9x, Me, NT 4, 2000 dan XP. CVAVR ini mengimplementasikanhampir semua instruksi bahasa C yang sesuai denganhampir semua instruksi bahasa C yang sesuai denganarsitektur AVR, bahkan terdapat beberapa keunggulantambahan untuk memenuhi keunggulan spesifik dari AVR.tambahan untuk memenuhi keunggulan spesifik dari AVR.

    Fitur CV AVRFitur CV AVR Mendukung hampir semua library standart bahasa C Terdapat library tambahan dari CVAVR yang mendukung dalam pemrograman Terdapat library tambahan dari CVAVR yang mendukung dalam pemrograman

    AVR, yaitu: Alphanumeric LCD modules Philips I2C bus Philips I2C bus National Semiconductor LM75 Temperature Sensor Philips PCF8563, PCF8583, Maxim/Dallas Semiconductor DS1302 and Philips PCF8563, PCF8583, Maxim/Dallas Semiconductor DS1302 and

    DS1307 Real Time Clocks Maxim/Dallas Semiconductor 1 Wire protocol Maxim/Dallas Semiconductor DS1820, DS18S20, DS18B20 Temperature Maxim/Dallas Semiconductor DS1820, DS18S20, DS18B20 Temperature

    Sensors Maxim/Dallas Semiconductor DS1621 Thermometer/Thermostat Maxim/Dallas Semiconductor DS2430 and DS2433 EEPROMs Maxim/Dallas Semiconductor DS2430 and DS2433 EEPROMs SPI Power management Power management Delays Gray code conversion

    Memiliki Program Generator yang memungkinkan kita Memiliki Program Generator yang memungkinkan kitamembuat program dengan cepat.

  • 26/11/2013

    4

    PEMROGRAMAN PEMROGRAMAN PEMROGRAMAN BAHASA CBAHASA CBAHASA C

    StrukturStruktur

    Struktur penulisan bahasa C secaraStruktur penulisan bahasa C secaraumum tersusun atas empat blok, yaitu:umum tersusun atas empat blok, yaitu: Header Header Deklarasi Global Konstanta dan atau

    VariabelVariabel Fungsi dan atau Procedur (bisa dibawah Fungsi dan atau Procedur (bisa dibawah

    program utama)program utama) Program Utama Program Utama

  • 26/11/2013

    5

    StrukturStrukturSecara utuh adalah sebagai berikut:/* HEADER untuk memanggil library yang akan digunakan *//* HEADER untuk memanggil library yang akan digunakan */#include #include /*Deklarasi konstanta dan atau variabel global */unsigned char dt, xx;unsigned char dt, xx;char buf[33];/*Deklarasi fungsi dan atau prosedur */unsigned char lampu(unsigned char bitn)unsigned char lampu(unsigned char bitn){PORTA=bitn & 0x3C;}/*Program Utama *//*Program Utama */void main (void);/*Deklarasi konstanta dan atau variabel lokal */char data;PORTA=0x00;PORTA=0x00;DDRA=0xF0;while (1){

    //. . .//. . .};

    }

    Tipe DataTipe DataType Size (Bits) Rangebit 1 0 , 1

    char 8 -128 to 127

    unsigned char 8 0 to 255

    signed char 8 -128 to 127

    int 16 -32768 to 32767int 16 -32768 to 32767

    short int 16 -32768 to 32767

    unsigned int 16 0 to 65535unsigned int 16 0 to 65535

    signed int 16 -32768 to 32767

    long int 32 -2147483648 to 2147483647long int 32 -2147483648 to 2147483647

    unsigned long int 32 0 to 4294967295

    signed long int 32 -2147483648 to 2147483647signed long int 32 -2147483648 to 2147483647

    float 32 1.175e-38 to 3.402e38

    double 32 1.175e-38 to 3.402e38double 32 1.175e-38 to 3.402e38

  • 26/11/2013

    6

    KonstantaKonstantaPenulisan konstanta adalah sebagai berikut:Penulisan konstanta adalah sebagai berikut: Integer atau long integer dapat ditulis dengan format desimal

    (contoh 1234), biner dengan awalan 0b (contoh 0b101001), (contoh 1234), biner dengan awalan 0b (contoh 0b101001), hexadesimal dengan awalan 0x (contoh 0xff) atau oktal dengan awalan 0 (contoh 0777).awalan 0 (contoh 0777).

    Unsigned integer ditulis dengan diakhiri U (contoh 10000U). Long integer ditulis dengan diakhiri L (contoh 99L). Long integer ditulis dengan diakhiri L (contoh 99L). Unsigned long integer ditulis dengan diakhiri UL (contoh 99UL). Floating point ditulis dengan diakhiri F (contoh 1.234F). Penulisan karakter konstanta harus dalam tanda kutip Penulisan karakter konstanta harus dalam tanda kutip

    (contoh a). Sedangkan konstanta string harus dalam tanda kutip dua (contoh Saya Belajar C).dua (contoh Saya Belajar C).

    Label,Variable,FunctionLabel,Variable,Function

    Identifikasi label, variabel dan fungsi dapat Identifikasi label, variabel dan fungsi dapat berupa huruf (A...Z, a...z) dan angka (0...9), juga berupa huruf (A...Z, a...z) dan angka (0...9), juga karakter underscore (_). Meskipun begitu identifikasi hanya bisa dimulai dengan huruf atau identifikasi hanya bisa dimulai dengan huruf atau karakter underscore, dan yang lebih penting lagi karakter underscore, dan yang lebih penting lagi identifikasi ini Case is significant yaitu huruf besar identifikasi ini Case is significant yaitu huruf besar dan kecil berbeda. Misal variable1 tidak sama Variable1. Identifikasi bisa memuat karakter Variable1. Identifikasi bisa memuat karakter sebanyak 32 karakter.sebanyak 32 karakter.

  • 26/11/2013

    7

    OperatorOperator

    Suatu instruksi pasti terdapat operator dan operand. Operand adalah variabel atau Suatu instruksi pasti terdapat operator dan operand. Operand adalah variabel atau konstanta yang merupakan bagian pernyataan sedangkan operator adalah suatu simbol yang menyatakan operasi manakah yang akan dilakukan oleh operand tersebut. Contoh:yang menyatakan operasi manakah yang akan dilakukan oleh operand tersebut. Contoh:c = a + b;Ada tiga operand (a, b dan c) dan dua operator (= dan +).

    Operator dalam C dibagi menjadi 3 kelompok yaitu: Unary Unary

    Operator yang beroperasi pada satu operand, misal: -n. BinaryBinary

    Operator yang beroperasi pada dua operand, misal: a n. Ternary

    Operator yang memerlukan tiga atau lebih operand, misal: a = (b*c)+d.Operator yang memerlukan tiga atau lebih operand, misal: a = (b*c)+d.

    Operator AritmatikaOperator AritmatikaSimbol Contoh AritmetikaSimbol Contoh Aritmetika

    + c = a + bn = n + 2

    Penjumlahan

    - c = a - b Pengurangan- c = a - bn = n - 2

    Pengurangan

    ++ ++i Kenaikan (Increment), sama dengan i = i + 1

    -- --i Penurunan (Decrement), sama dengan i = i - 1-- --i Penurunan (Decrement), sama dengan i = i - 1

    * c = a * bn = n * 2

    Perkalian

    / c = a / b Pembagian/ c = a / bn = n / 2

    Pembagian

    % sisa=a % b Menghasilkan sisa dari pembagian. a dan b bil. bulat

    = a = b Pemberian nilai

    += a += 2 Penambahan suatu nilai pada suatu variabel yang sudah ada sebelumnya.Sama dengan a = a + 2

    -= a -= 2 Pengurangan suatu nilai pada suatu variabel yang sudah ada sebelumnya.-= a -= 2 Pengurangan suatu nilai pada suatu variabel yang sudah ada sebelumnya.Sama dengan a = a - 2

    *= a *= 2 Pengalian suatu nilai pada suatu variabel yang sudah ada sebelumnya.Sama dengan a = a * 2

    /= a /= 2 Pembagian dari suatu nilai pada suatu variabel yang sudah ada sebelumnya.Sama dengan a = a / 2

    %= a /= 2 Sisa dari suatu nilai pada suatu variabel yang sudah ada%= a /= 2 Sisa dari suatu nilai pada suatu variabel yang sudah adasebelumnya yang dibagi oleh nilai atau variabel lain.Sama dengan a = a / 2

    * *pointer Menunjukan isi dari pointer

  • 26/11/2013

    8

    Operator LogikaOperator LogikaSimbol Contoh Logika Pembanding

    == if (a == b) Logika sama dengan, digunakan untuk pembanding.Menghasilkan nilai true jika a=b.

    != if (a != b) Tidak sama dengan. Menghasilkan nilai true jika a b.

    < if (a < b) Logika lebih kecil dari. Menghasilkan nilai true jika a < b.

    b) Logika lebih besar dari. Menghasilkan nilai true jika a > b.> if (a > b) Logika lebih besar dari. Menghasilkan nilai true jika a > b.

    >= if (a >= b) Logika lebih besar sama dengan dari.Menghasilkan nilai true jika a b.Menghasilkan nilai true jika a b.

    ! if (!a) NOT

    && if (a==b && a==c) AND&& if (a==b && a==c) AND

    || if (a==b || a==c) OR

    Operator Manipulasi BitOperator Manipulasi Bit~ a = ~b Complement.

    b = 1100; a = 0011.b = 1100; a = 0011.

    & c = a & b AND untuk manipulasi bit.a=1100; b=1001; maka c=1000.a=1100; b=1001; maka c=1000.

    | c = a | b OR untuk manipulasi bit.a=1100; b=1001; maka c=1101.a=1100; b=1001; maka c=1101.

    ^ c = a ^ b XOR untuk manipilasi bit.^ c = a ^ b XOR untuk manipilasi bit.a=1100; b=1001; maka c=0101.

    n Shift Right, manipulasi bit menggeser ke kirisejauh n bit.sejauh n bit.a=11010; n=2; maka c=0110.

  • 26/11/2013

    9

    PercabanganPercabangan

    if then if thenBentuk umum dari percabangan ini adalah: if (kondisi) {if (kondisi) {

    // pernyataan};

    Artinya adalah pernyataan akan dijalankan jika kondisi terpenuhi.Artinya adalah pernyataan akan dijalankan jika kondisi terpenuhi.Contoh:if (a

  • 26/11/2013

    10

    PercabanganPercabangan switch case switch casePernyataan switch case digunakan jika terjadi banyak percabangan.Struktur penulisan pernyataan ini adalah sebagai berikut:Struktur penulisan pernyataan ini adalah sebagai berikut:

    . . .switch (ekspresi) {switch (ekspresi) {

    case konstanta1:pernyataan1pernyataan1

    break;case konstanta2:pernyataan2pernyataan2

    break;. . .case konstantaN:. . .case konstantaN:pernyataanN

    break;break;}

    . . .PORTC akan dikirim data 0x01 jika nilai a=1, PORTC akan dikirim data 0x02 jika nilai a=2 dan PORTC PORTC akan dikirim data 0x01 jika nilai a=1, PORTC akan dikirim data 0x02 jika nilai a=2 dan PORTC akan dikirim data 0x04 jika nilai a=3;

    PercabanganPercabangan Switch case defaultPernyataan switch case default hampir sama dengan switch case, yang membedakan adalah dengan adanya default. Jika tidakterdapat kondisi case yang sesuai dengan ekspresi switch maka akan menuju pernyataan yang terdapat di bagian default. Strukturterdapat kondisi case yang sesuai dengan ekspresi switch maka akan menuju pernyataan yang terdapat di bagian default. Strukturpenulisan pernyataan ini adalah sebagai berikut:

    switch (ekspresi) {switch (ekspresi) {case konstanta1:

    pernyataan1break;

    case konstanta2:case konstanta2:pernyataan2

    break;. . .. . .

    case konstantaN:pernyataanN

    break;break;default:

    pernyataan-pernyataan;}

    ......PORTC akan dikirim data 0x01 jika nilai a=1,PORTC akan dikirim data 0x02 jika nilai a=2 danPORTC akan dikirim data 0x04 jika nilai a=3 dan jika kondisiPORTC akan dikirim data 0x04 jika nilai a=3 dan jika kondisicase tidak sesuai dengan ekspresi maka pernyataan di default

  • 26/11/2013

    11

    PerulanganPerulangan ForPernyataan for akan melakukan perulangan berapa kali sesuai yang diinginkan. Struktur penulisan perulangan for adalah Pernyataan for akan melakukan perulangan berapa kali sesuai yang diinginkan. Struktur penulisan perulangan for adalah sebagai berikut:

    . . .for (mulai; kondisi; penambahan atau pengurangan) {for (mulai; kondisi; penambahan atau pengurangan) {

    pernyataan-pernyataan;};......

    Mulai adalah pemberian nilai awal, kemudian kondisi adalah pengkondisi dalam for yaitu jika kondisi bernilai true maka pernyataan dalam for akan dijalankan, penambahan atau pengurangan adalah penambahan atau pengurangan terhadap nilai awal.nilai awal.Contoh:

    . . .a=1;a=1;for (i=1; i

  • 26/11/2013

    12

    PerulanganPerulangan Do While Do WhilePentuk perulangan ini kebalikan dari while do, yaitu pernyataan dilakukan terlebih dahulu kemudiandiuji kondisinya.diuji kondisinya.

    . . .do {

    pernyataan-pernyataan;pernyataan-pernyataan;}while (kondisi);while (kondisi);. . .

    Contoh:. . .. . .i=1;a=1;a=1;do {

    a=a*2;PORTC=a;;PORTC=a;;i++ ;

    }while (i

  • 26/11/2013

    13

    ProsedurProsedurProsedur adalah suatu kumpulan instruksi untuk mengerjakan suatu keperluantertentu tanpa mengembalikan suatu nilai.. . .. . .viod nama_prosedur (parameter1, parametar2, parameterN) {Pernyataan-pernyataan;}}. . .

    Contoh:. . .void delay(unsigned char i) {void delay(unsigned char i) {while (i--) {

    /* penulisan untuk bahasa assembly akan dibahas tersendiri *//* penulisan untuk bahasa assembly akan dibahas tersendiri */#asm

    nopnopnop

    #endasm};};

    }. . .

    FungsiFungsiFungsi adalah suatu kumpulan instruksi untuk mengerjakan suatu keperluantertentu dengan hasil akhir pengembalian nilai dari keperluan tersebut.. . .. . .Type data nama_fungsi (parameter1, parametar2, parameterN) {Pernyataan-pernyataan;return variable_hasil;return variable_hasil;}. . .Contoh:Contoh:. . .int luas(int pj, int lb) {

    luas = pj*lb;luas = pj*lb;return luas;

    }. . .. . .Pemanggilan prosedur atau fungsi langsung ditulis prosedur atau fungsinya.Contoh:Contoh:. . .delay(150); // cara memanggil prosedurdt = luas(5,10); // cara menggunakan fungsidt = luas(5,10); // cara menggunakan fungsi}. . .

  • 26/11/2013

    14

    Memasukkan Bahasa Assembly

    Atau kita sebut sebagai in-line assembly. Dalam pemrograman dengan bahasa C ini, Atau kita sebut sebagai in-line assembly. Dalam pemrograman dengan bahasa C ini, kita masih dapat memasukkan bahasa assembly ke dalam program C. Strukturpenulisannyapun juga mudah, yaitu:penulisannyapun juga mudah, yaitu:

    . . .#asm // dimulai dengan #asm#asm // dimulai dengan #asm

    nop // blok bahasa assemblynop //

    #endasm // diakhiri dengan #endasm#endasm // diakhiri dengan #endasm. . .Atau, jika hanya beberapa instruksi bisa dengan cara:Atau, jika hanya beberapa instruksi bisa dengan cara:. . .#asm("nop\nop\nop")#asm("nop\nop\nop"). . .

    CV AVRCV AVR

    Instal Software CV AVR

    Setting Programmer :

    Instal Software CV AVR

    Klik menu Setting, pilih Programmer.Setting Programmer : Klik menu Setting, pilih Programmer. Tampak kotak dialog Programmer Setting, dan

    lakukan perubahan menjadi seperti disamping: lakukan perubahan menjadi seperti disamping: (cek di device manager COM yang dipakai oleh USB downloader)

    Klik OK. Klik OK.

    Setting programmer tergantung dari downloader yang kita gunakan, Setting programmer tergantung dari downloader yang kita gunakan, biasanya dicantumkan dalam CD installer Downloader, karena menggunakan software proteus setting programmer tidak perlu. software proteus setting programmer tidak perlu.

  • 26/11/2013

    15

    CV AVRCV AVR

    1. Pastikan tidak terdapat file/project yang terbuka, jika ada

    Make New Project1. Pastikan tidak terdapat file/project yang terbuka, jika ada

    yang terbuka tutup dahulu(Klik Menu File, Pilih Close Project).

    2. Klik Menu File, kemudian pilih New, maka selanjutnya akan 2. Klik Menu File, kemudian pilih New, maka selanjutnya akan tampak dialog disamping:

    3. Pilih Project, kemudian Klik tombol OK.3. Pilih Project, kemudian Klik tombol OK.4. Tampak Dialog untuk konfirmasi menggunakan Program

    Generator atau manual. Klik tombol Yes maka tampak wizard dialog spt disamping:wizard dialog spt disamping:

    5. Ubah bagian tab Chip, pilih ATmega8535 (karena kitamenggunakan ATmega8535L). Beberapa nantinya akan kitaubah sesuai dengan kebutuhan terutama clock. ubah sesuai dengan kebutuhan terutama clock.

    6. Klik File, pilih Generate, Save and Exit. Simpan masing-masing dengan nama input.C (untuk file source C), input.prj (untuk file Project) dan input.cwp (untuk file Code Wizard (untuk file Project) dan input.cwp (untuk file Code Wizard Project).

    7. Maka pada bagian navigasi akan tampak seperti pada gambar berikut.gambar berikut.

    CV AVRCV AVR8. Klik menu Project dan pilih Configure atau klik 8. Klik menu Project dan pilih Configure atau klik

    icon , maka tampak kotak Dialog Project Configure

    9. Pilih tab After Make.10. Beri tanda [] Cek pada Program the Chip.11. Untuk keperluan yang lain bisa anda ubah11. Untuk keperluan yang lain bisa anda ubah

    sesuai kebutuhan, misal untuk proteksi.12. SCK Freq : 230400 Hz12. SCK Freq : 230400 Hz13. Klik OK

    Note: Untuk point 8 sampai 13 untuk menampilkan execute program setelah compile, karena untuk execute program setelah compile, karena untuk workshop kali ini menggunakan proteus, makatidak perlu diaktifkan.tidak perlu diaktifkan.

  • 26/11/2013

    16

    ProteusProteusInstal Software ProteusInstal Software ProteusReview Tentang Software Proteus (ISIS)

    ProteusProteusSetting Program At mega8535 pada proteus:Klik kiri 2 kali pada gambar IC At mega8535 Pilih file program pada kolom program fileKlik kiri 2 kali pada gambar IC At mega8535 Pilih file program pada kolom program file

  • 26/11/2013

    17

    ProteusProteusMenjalankan Program Simulasi: klik tombol play yang ditunjuk gambar:

    Dasar I/ODasar I/OKonfigurasi Pengaturan Register untuk Input Output

    DDR bit = 1 DDR bit = 0

    PORT bit = 1 Output ; High Input ; R pull-up

    PORT bit = 0 Output ; Low Input ; Floating

    Misal:

    PORTA=0xCC;PORTA=0xCC;DDRA=0x0F;

    Printah Dasar

    Printah Dasar

  • 26/11/2013

    18

    Dasar I/ODasar I/O

    OutputPORTX = data;PORTX = data;Yaitu untuk mengirim data byte ke PortX (X= A, B, C, D).Perintah ini sama dengan out dalam bahasa assembly ATmega8535.Perintah ini sama dengan out dalam bahasa assembly ATmega8535.Inputdata_in = PINX;data_in = PINX;Yaitu mengambil data byte dari PINX (X= A, B, C, D) yang kemudian disimpan ke variable data_in.variable data_in.Perintah ini sama dengan in dalam bahasa assembly ATmega8535.

    Kontrol Port I/O per bitKontrol Port I/O per bit

    OutputOutput

    PORTX.bitn = data;

    Yaitu untuk mengirim data bit (0 atau 1) kePortX bit ke n. (X= A, B, C, D) PortX bit ke n. (X= A, B, C, D) Perintah ini setara dengan sbi dalam bahasa assembly.

    Contoh:PORTB.3=1;

    Artinya adalah bit 3 PORTB di beri nilai 1.

  • 26/11/2013

    19

    Kontrol Port I/O per bitKontrol Port I/O per bitInput

    data_in = PINX.bitn;

    Yaitu mengambil data bit dari PINX (X= A, B, C, D) bit ke n kemudian disimpan ke variable data_in. kemudian disimpan ke variable data_in. Perintah ini setara dengan cbi dalam bahasa assembly.

    Contoh:da ta_n= PORTB.3;

    Artinya adalah, ATmega8535 mengambil data bit pada PORTB bit ke 3. Nilai dari perintah ini hanya 0 atau 1.dari perintah ini hanya 0 atau 1.

    Project 1Project 1

  • 26/11/2013

    20

    Project 1Project 1

    Connect PORTA ke LED,sehingga PORTA diset sebagai output Connect PORTC ke Push Button, sehingga PORTC diset sebagai inputConnect PORTC ke Push Button, sehingga PORTC diset sebagai input

    Project 1Project 1

    Menyalakan LED melalui Push ButtonMenyalakan LED melalui Push Button

    Apa Fungsi penambahan library delay.h?

  • 26/11/2013

    21

    Project 1Project 1

    Buatlah program sebagai berikut:Buatlah program sebagai berikut:~Jika S0 ditekan LED berkedip (looping sampai S1 ditekan).~Jika S1 ditekan LED bergeser dari kiri ke kanan (looping sampai S0 ditekan).~Jika S1 ditekan LED bergeser dari kiri ke kanan (looping sampai S0 ditekan).

    Pin Configuration:Pin Configuration:S0 = PINC.0S1 = PINC.1S1 = PINC.1LED = PORTA

    Note: Meskipun ketika kondisi pergeseran bit LED yang menyala masih berada ditengah, LED akan langsung berganti kedip ketika S0 ditekan. LED akan langsung berganti kedip ketika S0 ditekan.

    Project 2Project 2

  • 26/11/2013

    22

    Project 2Project 2

    Sesuaikan dengan hardware yang kita gunakan Setting LCD Port : PORTC dan setting PORTA sebagai keypad

    Project 2Project 2Logika Cara Pemrograman Keypad:~4 pin diset sebagai Output dan 4 pin lainnya di set sebagai input??~4 pin diset sebagai Output dan 4 pin lainnya di set sebagai input??

  • 26/11/2013

    23

    Project 2Project 2Program menampilkan data keypad ke lcd

    Program Utama

    Project 2Project 2Program cek_keypad();

  • 26/11/2013

    24

    Project 2Project 2

    Program Kalkulator Sederhana penambahan dan pengurangan

    Rule:Rule:Input Error Jika :~ Memasukkan 5 digit atau lebih tiap variabel.~ Memasukkan 5 digit atau lebih tiap variabel.~ Menekan tombol selain angka 0 sampai 9, plus, minus, dan sama dengan.~ Memasukkan lebih dari 2 varibel penambahan atau pengurangan.~ Memasukkan lebih dari 2 varibel penambahan atau pengurangan.~ Memberi nilai minus pada variabel.~ Menekan tombol pengurangan atau penjumlahan dua kali.

    Program : ...../Program Lesson/Lesson 2

    Project 3Project 3

  • 26/11/2013

    25

    Project 3Project 3

    Setting PORTA.0 sebagai output (connect to oscilloscope).Setting PORTA.0 sebagai output (connect to oscilloscope).Setting ADC Enable (use 8 bit).Setting LCD di PORTC.Setting LCD di PORTC.

    Project 3Project 3

    ADC ??Penggunaan ADC ini sangat banyak, terutama dalam bidang pengukuran. Banyak keluaran sensor yang

    ADC ??bidang pengukuran. Banyak keluaran sensor yangberupa masih analog yang harus dikonversi ke digitalagar dapat di olah mikrokontroller.agar dapat di olah mikrokontroller.

    Input ADC adalah di PORTA

    Fitur dari ADC ATMega8535 adalah sebagai berikut: Resolusi 10 bit Resolusi 10 bit Waktu konversi 65 260 s 8 ch input 8 ch input 0-Vcc input ADC 3 Mode pemilihan tegangan referensi 3 Mode pemilihan tegangan referensi

  • 26/11/2013

    26

    Project 3Project 3

    VCCRangkaian Pembagi Tegangan VCCDengan dasar pembagi tegangan kita bisa

    Rangkaian Pembagi Tegangan

    PORTA.n

    Dengan dasar pembagi tegangan kita bisa memberi tegangan yang bervariasi ke ADC.

    R VR50kVcc

    RRRVOUT

    21

    2

    RR 21

    Ada beberapa register yang harus diatur jika akan menggunakan ADC, namun sekali lagi kita sangat terbantu dengan wizzard dari Code Vision AVRAVR

    Project 3Project 3Program Menampilkan data adc ke LCD

    Main ProgramMain Program

  • 26/11/2013

    27

    Project 3Project 3PWM?? (Pulse Width Modulation)

    PWM, Pulse-Width Modulation, adalah salah satu jenis modulasi. Modulasi PWM dilakukan dengan cara merubah lebar pulsa dari suatu pulsa data. Total 1 perioda (T) pulsa dilakukan dengan cara merubah lebar pulsa dari suatu pulsa data. Total 1 perioda (T) pulsa dalam PWM adalah tetap, dan data PWM pada umumnya menggunakan perbandingan pulsa positif terhadap total pulsa.

    Penggunaan PWM:pulsa positif terhadap total pulsa.

    Penggunaan PWM:~PWM sebagai data keluaran suatu perangkat. PWM dapat digunakan sebagai data dari suatu perangkat, data direpresentasikan dengan lebar pulsa positif (Tp).~PWM sebagai data masukan kendali suatu perangkat. Selain sebagai data keluaran, PWM ~PWM sebagai data masukan kendali suatu perangkat. Selain sebagai data keluaran, PWM pun dapat digunakan sebagai data masukan sebagai pengendali suatu perangkat. Salah satu perangkat yang menggunakan data PWM sebagai data masukannya adalah Motor satu perangkat yang menggunakan data PWM sebagai data masukannya adalah Motor DC Servo. Motor DC Servo itu sendiri memiliki dua tipe: 1. Kontinyu, 2. Sudut. Pada tipe 1., PWM digunakan untuk menentukan arah Motor DC Servo, sedangkan pada tipe 2., PWM digunakan untuk menentukan posisi sudut Motor DC Servo.digunakan untuk menentukan posisi sudut Motor DC Servo.~PWM sebagai pengendali kecepatan Motor DC bersikat. Motor DC bersikat atau Motor DC yang biasa ditemui di pasaran yang memiliki kutub A dan kutub B yang jika diberikan bedapotensial diantara kedua-nya, maka Motor DC akan berputar. Pada prinsipnya Motor DC potensial diantara kedua-nya, maka Motor DC akan berputar. Pada prinsipnya Motor DC jenis ini akan ada waktu antara saat beda potensial diantara keduanya dihilangkan dan waktu berhentinya. Prinsip inilah yang digunakan untuk mengendalikan kecepatan Motor DC jenis ini dengan PWM, semakin besar lebar pulsa positif dari PWM maka akan semakin DC jenis ini dengan PWM, semakin besar lebar pulsa positif dari PWM maka akan semakin cepat putaran Motor DC. Untuk mendapatkan putaran Motor DC yang halus, maka perlu dilakukan penyesuaian Frekuensi (Perioda Total) PWM-nya.

    Project 3Project 3

    PWM 50%

    PWM 30%

  • 26/11/2013

    28

    Project 3Project 3Program output PWM menggunakan Timer 0 dengan referensi adc input

    Project 4Project 4

  • 26/11/2013

    29

    Project 4Project 4Decoder 74LS139Decoder 74LS139

    Dari Tabel Kebenaran bisa kita amatifungsi dari IC 74LS139. Bila melihat hardware sebelumnya, PA0 disambunghardware sebelumnya, PA0 disambungKe 1A, PA1 disambung ke 1B, PA2 disambung ke 1G. Output yang dipakaidisambung ke 1G. Output yang dipakai1Y2 dan 1Y3. maka:

    Project 4Project 4H-Bridge

    H bridge ini terdiri dari dua transistor NPN dan dua transistor PNP. Agar lebih mudah dalam memahami rangkaian anggap saja Transistor tersebut sebagai saklar. T1 dan mudah dalam memahami rangkaian anggap saja Transistor tersebut sebagai saklar. T1 dan T3 akan Aktif jika diberi logika low, T2 dan dan T4 akan aktif jika diberi logika high, SehinggaUntuk menggerakkan motor ke arah kanan X1=L , X2=L, X3=H, X4=H, dan sebaliknya untukUntuk menggerakkan motor ke arah kanan X1=L , X2=L, X3=H, X4=H, dan sebaliknya untukMenggerakkan motor ke kiri X1=H, X2=H, X3 =L, X4=L. Untuk mengerem motor X1=L, X2=L,X3=L, X4=L.X3=L, X4=L.

  • 26/11/2013

    30

    Project 4Project 4

    Motor bergerak ke kanan Motor bergerak ke kiri

    Motor NgeremMotor Ngerem

    Project 4Project 4

    Setting ADC enable Setting LCDSetting PORTA

  • 26/11/2013

    31

    Project 4Project 4Header program Main program