You are on page 1of 29

Interface remote tv sony dengan TSOP 1738 berbasis atmega 16.

Untuk membaca data tombol remote TV sony. Kita dapat membuat alat reciver remote sony dengan tampilan LCD berbasis atmega 16. Rangkaian sebagai berikut..

R1
4k7

C1
47uf

LCD1
LM016L

C3
22p

U1
9 13 12 RESET XTAL1 XTAL2 PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7 PB0/T0/XCK PB1/T1 PB2/AIN0/INT2 PB3/AIN1/OC0 PB4/SS PB5/MOSI PB6/MISO PB7/SCK ATMEGA16 PC0/SCL PC1/SDA PC2/TCK PC3/TMS PC4/TDO PC5/TDI PC6/TOSC1 PC7/TOSC2 PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP1 PD7/OC2 22 23 24 25 26 27 28 29 14 15 16 17 18 19 20 21 1 2 3

C2
VSS VDD VEE RS RW E D0 D1 D2 D3 D4 D5 D6 D7

X1

22p

40 CRYSTAL 39 38 37 36 35 34 33 1 2 3 4 5 6 7 8

TSOP 1738

1 2 3

4 5 6

RV1

7 8 9 10 11 12 13 14

AREF AVCC

32 30

50K

A. Universal remote control TV SONY Remote sony memiliki feature 12-bit, 15-bit and 20-bit versions of the protocol exist (12-bit described here). 5-bit address and 7-bit command length (12-bit protocol). Untuk modulasi lebar pulsa saat high atau low adalah :

Gambar data dikirimkan 7 bit command dan 5 bit anddres. (sumber: www.sbprojects.com) Dengan protokol diatas, data LSB dikirimkan pertama kali, pulsa diawali dengan start bit selama 2.4ms, kemudian diikuti standard low 0.6ms. data dikirimkan 7-bit command dan 5-bit address.

Gambar 19. Modulasi lebar pulsa pada saat high ke low. (sumber: www.sbprojects.com) Dari gambar diatas, terlihat bahwa yang membedakan logika high dan low adalah lebar pulsa. Lebar pulsa low adalah 600us dan pulsa high bernilai lebih dari itu (1.2ms).. Untuk membaca data tombol remote TV sony. penulis menggunakan alat reciver remote sony dengan tampilan LCD berbasis atmega 16. Data tombol remote TV sony dapat dilihat pada table B. LCD (Liquid Crystal Display) LCD (Liquid Crystal Display) atau dapat dibahasa Indonesia-kan sebagai tampilan Kristal Cair adalah suatu jenis media tampilan yang menggunakan kristal cair sebagai penampil utama. LCD bisa memunculkan gambar atau tulisan dikarenakan terdapat banyak sekali titik cahaya (piksel) yang terdiri dari satu buah kristal cair sebagai sebuah titik cahaya. Walau disebut sebagai titik cahaya, namun kristal cair ini tidak memancarkan cahaya sendiri. Sumber cahaya di dalam sebuah perangkat LCD adalah lampu berwarna putih di bagian belakang susunan kristal cair tadi.Titik cahaya yang jumlahnya puluhan ribu bahkan jutaan inilah yang membentuk tampilan citra. Kutub kristal cair yang dilewati arus listrik akan berubah karena pengaruh polarisasi medan magnetik yang timbul dan oleh karenanya akan hanya membiarkan beberapa warna diteruskan sedangkan warna lainnya tersaring. Dalam menampilkan karakter untuk membantu menginformasikan proses dan control yang terjadi dalam suatu program kita sering menggunakan LCD juga. Yang sering

digunakan dan paling mudah untuk dipelajari adalah LCD dengan banyak karakter 16x2. Maksudnya semacam fungsi tabel di MicrosoftOffice. 16 menyatakan kolom dan 2 menyatakan baris.Bila kita beli di pasaran, LCD 16x2 masih kosongan, maksudnya kosongan yaitu butuh driver lagi supaya bisa dikoneksikan dengan sistem minimum dalam suatu mikrokontroler. Driver yang disebutkan berisi rangkaian pengaman, pengatur tingkat kecerahan backligt maupun data, serta untuk mempermudah pemasangan di

mikrokontroler (portable-red). Contoh LCD 16x2 dapat dilihat seperti gambar 20.

Gambar 20. Bentuk Fisik LCD 16x2 (Sumber: www.gravitecth.us)

Sedangkan untuk konfigurasi pin-nya dapat dilihat seperti Gambar 21.

Gambar 21. Konfigurasi Pin dari LCD Modul LCD memiliki karakteristik sebagai berikut:

1. Terdapat 16 x 2 karakter huruf yang bisa ditampilkan. 2. Setiap huruf terdiri dari 5x7 dot-matrix cursor. 3. Terdapat 192 macam karakter. 4. Terdapat 80 x 8 bit display RAM (maksimal 80 karakter). 5. Memiliki kemampuan penulisan dengan 8 bit maupun dengan 4 bit. 6. Dibangun dengan osilator lokal. 7. Satu sumber tegangan 5 volt. 8. Otomatis reset saat tegangan dihidupkan. 9. Bekerja pada suhu 0C sampai 55C Fungsi pin yang terdapat pada LCD ditunjukkan seperti pada tabel 5. Tabel 6. Konfigurasi Pin dari LCD
NO 1 2 3 4 Nama Pin VSS VCC VEE RS Fungsi Groud voltage +5V Contrast voltage Register select 0 = Instruction Register 1 = Data Register Read/Write,to choosen write or read mode 0 = write mode 1 = read mode Enable 0 = strast to lach data to LCD character 1 = disable Data bit ke-0 (LSB) Data bit ke-1 Data bit ke-2 Dat bit ke-3 Data bit ke-4 Dat bit ke-5 Data bit ke-6 Data bit ke-7 (MSB) Back Plane Light Ground voltage

R/W

7 8 9 10 11 12 13 14 15 16

DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BPL GND

(Heri andrianto,2008)

Secara umum setiap pinnya didefinisikan sebagai berikut : a. .Pin 1 : Ground b. Pin 2 : Vcc

c. Pin 3 : VEE (contrast) d. Pin 4 : RS (Register Select). 0 = Instruction Register. 1 = Data Register e. Pin 5 : R/W (Read / Write mode). 0 = Write Mode. 1 = Read Mode f. Pin 6 : En (Enable). 0 = start to latch data to LCD. 1 = Disable g. Pin7-14 : DB0 - DB7 (Data Bus) h. Pin 15 : Back Light (+) i. Pin16 : Back Light (-) Display karakter pada LCD diatur oleh pin EN, RS dan RW. Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa kita sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low 0 dan set pada dua jalur kontrol yang lain RS dan RW. Ketika dua jalur yang lain telah siap, set EN dengan logika 1 dan tunggu untuk sejumlah waktu tertentu (sesuai dengan datasheet dari LCD tersebut) dan berikutnya set EN ke logika low 0 lagi. Jalur RS adalah jalur Register Select. Ketika RS berlogika low 0, data akan dianggap perintah atau instruksi khusus (seperti clear screen, posisi kursor, dll). Ketika RS berlogika high 1, data yang dikirim adalah data text yang akan ditampilkan pada display LCD. Sebagai contoh, untuk menampilkan huruf T pada layar LCD maka RS harus diset logika high 1. Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high 1, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low 0. Setiap pemberian logika RS, EN, dan R/W membutuhkan waktu sekitar 15ms.

C. Mikrokontroler ATmega 16 AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis arsitektur RISC (Reduced Instruction Set Computer). Hampir semua instruksi dieksekusi dalam satu siklus clock. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan compare mode, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan mode power saving, ADC dan PWM internal. AVR juga mempunyai In-System Programmable Flash on-chip yang mengijinkan memori program untuk ulang dalam sistem menggunakan hubungan serial SPI. (Solikhul Hadi, 2008:1) ATMega 16 salah satu jenis mikrokontroler yang di dalamnya terdapat berbagai macam fungsi. Pada mikrokontroler AVR sudah terdapat oscillator internal dan ADC. Selain itu AVR memiliki Power-On Reset, yaitu tidak perlu adanya tombol reset dari luar, karena hanya cukup mematikan supply, maka secara otomatis AVR akan melakukan reset. ATmega16 dilengkapi dengan 32 jalur I/O yang dapat digunakan untuk mengakses data dari luar dan mengeluarkan data. Komponen ATmega16 dibuat dengan konfigurasi pin dan set intruksinya sesuai dengan standar industri dari keluarga mikrokontroler ATmega16.

1. Konfigurasi Pin ATmega 16

Gambar 3. Konfigurasi kaki (pin) ATmega 16 (www.atmel.com) ATmega 16 memiliki 40 pin yang masing-masing pin memiliki fungsi yang berbeda-beda baik sebagai port maupun sebagai fungsi lainya. Fungsi dari masingmasing pin pada ATmega 16 adalah sebagai berikut: a. VCC VCC berfungsi sebagai masukan catu daya. b. GND GND merupakan Ground. Referensi nol suplai tegangan digital. c. Port A Port A yaitu pin nomor 33 sampai 40 (PA0..PA7) merupakan port I/O 8-bit dengan resistor pull-up internal tiap pin. Buffer port D memiliki kapasitas menyerap dan menyatu. Fungsi lain dari pin ini adalah sebagai input ADC. d. Port B Port B yaitu pin nomor 1 sampai 8 (PB0..PB7). Port I/O dua arah (bidirectional) 8-bit dengan resistor pull-up internal tiap pin. Buffer port B memiliki kapasitas menyerap dan menyatu. Fasilitas khusus dari port B ini adalah adanya In-

System Programming, yaitu PB5 sebagai MOSI, PB6 sebagai MISO, PB7 sebagai SCK. Seperti dapat dilihat pada tabel berikut. Tabel 2. Fungsi Khusus Port B ATmega 16
Port Pin PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 Fungsi Alternatif SCK (SPI Bus Serial Clock) MISO (SPI Bus Master Input/Slave Output) MOSI (SPI Bus Master Output/Slave Input) SS (SPI Slave Select Input) AIN1 (Analog Comparator Negativ Input) OC0 (Timerl Counter0 Output Compare Match Output) AIN0 (Analog Comparator Positiv Input) INT2 (External Interrupt 2 input) T1 (Timer/Counter1 External Counter Input) T0 T1 (Timer/Counter0 External Counter Input) XCK (USART External Clock Input/Output)

(Atmel Corporation 2002). e. Port C Port C yaitu pin nomor 22 sampai 29 (PC0..PC7). Port I/O dua arah (bidirectional) 8-bit dengan resistor pull-up internal tiap pin dan pin fungsi khusus.Buffer port C memiliki kapasitas menyerap dan menyatu.

Tabel 3. Fungsi Khusus Port C ATmega 16 Port Pin


PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0

Fungsi Alternatif
TOSC2 (Timer Oscillator Pin2) TOSC1 (Timer Oscillator Pin1) TD1 (JTAG Test Data In) TDO (JTAG Test Data Out) TMS (JTAG Test Mode Select) TCK (JTAG Test Clock) SDA (Two-wire Serial Bus Data Input/Output Line) SCL (Two-wire Serial Bus Clock Line)

(Atmel Corporation 2002) f. Port D Port D yaitu pin nomor 14 sampai 21 (PD0..PD7). Port I/O dua arah (bidirectional) 8-bit dengan resistor pull-up internal tiap pin. Buffer port D

memiliki kapasitas menyerap dan menyatu.Fasilitas khusus dari port D ini yakni PD0 sebagai RXD, PD1 sebagai TXD. Seperti dapat dilihat pada tabel berikut: Tabel 4. Fungsi Khusus Port D ATmega 16
Port Pin PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 Fungsi Alternatif OC2 (Timer/Counter2 Output Compare Match Output) ICP (Timer/Counter1 Input Capture Pin) OC1A (Timer/Counter1 Output Compare A Match Output) OC1B (Timer/Counter1 Output Compare B Match Output) INT1 (External Interrupt 1 Input) INT0 (External Interupt 0 Input) TXD (USART Output Pin) RXD (USART Input Pin)

(Atmel Corporation ,2002)

g. RESET Fungsi pin ini adalah untuk mereset mikrokontroler ATmega 16. Sinyal LOW pada pin ini dengan lebar minimum 1,5s akan membawa mikrokontroler pada kondisi RESET meskipun clock tidak sedang berjalan. Sinyal dengan lebar kurang dari 1,5s tidak menjamin terjadinya reset. h. AREF Pin analog untuk tegangan referensi ADC. i. XTAL 1 Merupakan pin input penguat inverting oscillator dan input clock Eksternal.

j. XTAL 2 Merupakan pin output dari penguat inverting oscillator. k. AVCC AVCC adalah pin suplai tegangan untuk ADC. Pin ini harus dihubungkan dengan VCC, meskipun ADC tidak digunakan, jika ADC digunakan VCC harus dihubungkan ke AVCC melalui low-pass filter untuk mengurangi noise. (Atmel Corporation: 2003).

1. Arsitektur Mikrokontroler AVR RISC

Gambar 4. Arsitektur Mikrokontroler AVR RISC (www.atmel.com) Dari gambar di atas, AVR menggunakan arsitektur Harvard dengan memisahkan antara memori dan bus untuk program dan data untuk memaksimalkan kemampuan dan kecepatan. Instruksi dalam memori program dieksekusi dengan pipelining single level. Dimana ketika satu instruksi dieksekusi, instruksi berikutnya diambil dari memori program. Konsep ini mengakibatkan instruksi dieksekusi setiap clock cycle. CPU terdiri dari 32x8 bit general purpose register yang dapat diakses dengan cepat dalam satu clock cycle, yang mengakibatkan operasi Arithmetic Logic Unit (ALU) dapat dilakukan dalam satu cycle. Pada operasi ALU, dua operand berasal dari register, kemudian operasi dieksekusi dan hasilnya disimpan kembali pada register dalam satu clock cycle. Operasi aritmatik dan logic pada ALU akan mengubah bit-bit yang terdapat pada Status Register (SREG). Proses pengambilan instruksi dan pengeksekusian instruksi berjalan secara parallel.

Gambar 3. Proses pengambilan dan pengeksekusian instruksi secara parallel.

(Atmel Corporation ,2002)

2. Blok Diagram ATmega 16

Gambar 5. Blok Diagram ATmega 16 (www.atmel.com)

3. General Purpose Register AVR

Gambar 6. General Purpose Register AVR (www.atmel.com) Gambar di atas menunjukan struktur 32 general purpose register yang terdapat dalam CPU, masing-masing register ditentukan juga dalam alamat memori data, dipetakan ke dalam 32 lokasi pertama data user. Walaupun tidak secara fisik diimplementasikan sebagai lokasi SRAM, namun pengaturan ini memberikan flexsibilitas dalam mengakses register, seperti registerpointer X,Y, dan Z dapat diset menuju index dari registerfile manapun. 4. Stack Pointer Stack utamanya digunakan untuk menyimpan data sementara, untuk menyimpan variable local dan untuk menyimpan return address setelah interrupt dan pemanggilan subrutin. Stack Pointer selalu menunjuk ke puncak stack. Stack diimplementasikan mulai dari lokasi memori tertinggi ke lokasi memori terendah, sehingga perintah PUSH akan mengurangi Stack Pointer.

Gambar 7. Stack Pointer (www.atmel.com) Berikut ini program inisialisasi awal stack pointer yang ditulis dalam bahasa assembler MAIN: LDI OUT LDI OUT 5. Peta Memori ATmega 16 Terdapat tiga kelompok memori dalam mikrokontroler ATmega16 yaitu: a. Memori program (Memory FLASH) Memori FLASH merupakan blok dari memori FLASH yang dimulai dari lokasi 0000. Memori FLASH merupakan memori non-volatile dan digunakan untuk menyimpan kode eksekusi dan konstanta, karena kode-kode tersebut akan digunakan kembali meskipun mikrokontroler tidak terhubung ke catu daya. Nonvolatile yaitu kode yang disimpan dalam memori tidak hilang meskipun mikrokontroler tidak dialiri listrik, ruang memori antara 16 bit pada setiap lokasi untuk menangani instruksi mesin yang khususnya single-16 bit word. Untuk keamanan program, memori program, flash dibagi ke dalam dua bagian, yaitu bagian program Boot dan aplikasi. Bootloader adalah program kecil yang bekerja pada saat start up time yang dapat memasukan seluruh program aplikasi ke dalam memori prosesor. R16, LOW (RAMEND) SPL, R16 TMP, HIGH (RAMEND) SPH, R16

Gambar 8. Peta Memori Program AVR ATmega 16 (www.atmel.com) b. Memori Data (SRAM) Memori data AVR ATmega 16 terbagi menjadi 3 bagian, yaitu 32 buah register umum, 64 buah register I/O dan 1 Kbyte SRAM internal.

1) Register-Register Register umum menempati 32 sel terendah dalam data memori. Register ini kebanyakan digunakan seperti data penyimpanan dalam kalkulator yang mana hanya disimpan sementara. Terkadang digunakan u ntuk menyimpan

variabel lokal, variabel global, dan terkadang sebagai pengarah ke memori yang digunakan oleh prosesor. Prosesor menggunakan 32 register kerja sebagaimana program dieksekusi. 2) Register I/O

Setiap register memberikan akses ke register kontrol atau ke register data I/O peripheral yang berada dalam mikrokontroler. Programmer lebih sering menggunakan I/O register untuk mengantarmuka ke peripheral I/O dari

mikrokontroler. Setiap register I/O memiliki nama, sebuah alamat I/O, dan alamat SRAM. 3) SRAM Bagian SRAM dari memori digunakan untuk menyimpan variabel yang tidak dapat disimpan kedalam register dan untuk menyimpan prosesor stack.

Gambar 9. Peta Memori Data AVR ATmega 16 (www.atmel.com) c. Memori Data (EEPROM) ATmega 16 terdiri dari 512 byte memori data EEPROM 8 bit. Bagian memori EEPROM adalah area memori baca/tulis yang non volatile, ini biasanya digunakan untuk menyimpan data yang tidak boleh hilang saat catu daya dilepas (mikrokontroler dimatikan) dan dipasang kembali (mikrokontroler dinyalakan).

Ruang EEPROM dimulai dari 0000 dan ke nilai maksimum tergantung spesifikasi mikrontroler yang digunakan. 6. Timer Timer/counter adalah fasilitas dari ATmega 16 yang digunakan untuk perhitungan pewaktuan. Beberapa fasilitas chanel dari timer counter antara lain counter channel tunggal, pengosongan data timer sesuai dengan data pembanding, bebas glitch, tahap yang tepat Pulse Width Modulation (PWM), pembangkit frekuensi, event counter external.

Gambar 10. Blok diagram timer/counter (www.atmel.com) A. Pemrograman Bahasa C Bahasa C adalah bahasa mesin tingkat tinggi. Dimana dapat dengan mudah untuk melakukan pemrograman terhadap mikrokontroler. Dengan instruksi-instruksi yang mudah dipahami dan mudah diakses. Secara umum pemrograman mikrokontroler terdiri atas empat blok, yaitu : 1. Header, 2. Deklarasi kostanta global, 3. Fungsi dan atau prosedur ( biasa di bawah program utama),

4. Program utama. Secara umum, pemrograman C paling sederhana dapat dilakukan dengan hanya menuliskan program utamanya saja. Beberapa peraturan yang ada dalam bahasa C adalah:

1. Header Header berisi include file (.hex), yaitu library (pustaka) yang akan digunakan dalam pemrograman. Perhatikan contoh dibawah ini: #include <mega16.h> #include <delay.h> #incude <stdio.h> 2. Tipe Data Berikut ini adalah tabel tipe-tipe variabel data yang dapat digunakan di compiler Code Vision AVR: Tabel 7. Type Data
Type Bit Char unsigned char signed char Int short int unsigned int signed int long int Size (Bits) 1 8 8 8 16 16 16 16 32 Range 0,1 -128 to 127 0 to 255 -128 to 127 -32768 to 32767 -23768 to32767 0 to 65535 -32768 to 32767 -2147483648 to 2147483647

unsigned long int unsigned long int signed long int Float Double

32 32 32 32 32

0 to 4294967295 0 to 4294967295 -2147483648 to 2147483647 1.175e-38 to 3.402e38 1.175e-38 to 3.402e38

(Heri andrianto,2008:21)

3. Konstanta Penulisan konstanta adalah sebagai berikut: a. Integer atau long integer dapat ditulis dengan format decimal (contoh 1234), biner dengan awalan 0b (contoh 0b101001), heksadesimal dengan awalan 0x (contoh 0xff) atau oktal dengan awalan 0 (contoh 0777). b. Unsigned integer ditulis dengan diakhiri U (contoh 10000U). c. Long integer ditulis dengan diakhiri L (contoh 99L). d. Unsigned long integer ditulis dengan diakhiri UL (contoh 99UL). e. Floating point ditulis dengan diakhiri F (contoh 1.234F). Karakter konstanta harus ditulis dalam tanda kutip (contoh a), sedangkan konstanta string harus dalam tanda kutip dua (contoh Saya Belajar C). 4. Label, Variabel, Fungsi Identifikasi label, variabel dan fungsi dapat berupa huruf (AZ, az) Dan angka (09), juga karakter underscore (_). Meskipun begitu identikasi hanya bias dimulai dengan huruf atau karakter underscore. Yang lebih penting lagi, identifikasi ini

Case is significant, yaitu huruf besar dan kecil berbeda. Misal Variable1 tidak sama dengan variabel1. Identifikasi bisa memuat sebanyak 32 karakter. 5. Komentar Komentar diawali dengan tanda /* dan diakhiri dengan */. Perhatikan contoh dibawah: /* ini komentar */

6. Reserved Keywords Berikut ini adalah daftar kata baku yang tidak bias dipakai (reserfed keywords) untuk label, identifikasa atau variable: Break Bib Case Char const continue default 7. Operator Berikut ini beberapa operator yang digunakan pada bahasa pemrograman C adalah: a. Operator Kondisi Operator kondisi menyediakan operator yang dimaksudkan untuk menyatakan kondisi. Operator kondisi dilihat pada Tabel 7. Tabel 8. Operator Kondisi Operator Kondisi Keterangan. if float for flash sizeof signed double sfrb eeprom else enum short do int interrupt long register return while union unsigned void volatile typedef

funcused sfrw goto struct inline static extern witch

< <= > >= == !=

Lebih kecil Lebih kecil atau sama dengan Lebih besar Lebih besar sama dengan Sama dengan Tidak sama dengan

a. Operator Aritmatika Operator untuk operasi aritmatika yang tergolong operator binary seperti yang terdapat pada Tabel 8. Tabel 9. Operator Aritmatika Operator aritmatika + * (Heri Andrianto: 2008) / % keteranagan Penjumlahan Penguranagan Perkalian Pembagian Sisa hasil bagi

b. Operator Logika Merupakan operasi boolean yang terdiri dari AND, OR, NOT. Tabel 10. Operator logika
Operator logika ! && || Keteranagan Bolehan NOT Bolehan AND Bolehan OR

(Heri Andrianto: 2008) c. Operator Bitwise Tabel 11. Operator bitwise


Operator bitwise ~ & | ^ >> << Keteranagan Komplemen Bitwise Bitwise AND Bitwise OR Bitwise Exclusive OR Right Shift Left Shift

(Heri Andrianto: 2008)

d. Operasi assignment Tabel 12. Operasi assignment. Operator assignment = += -= *= /= %= Keterangan Untuk memasukan nilai Untuk menambahkan nilai dari keadaan semula Untuk mengurangi nilai dari keadaan semula Untuk mengkalikan nilai dari keadaan semula Untuk melakukan pembagian nilai dari bilanagan semula Untuk memasukan nilai sisa hasil dari pembagian bilangan semula Untuk memasukan shift left Untu memasukan shift right Untuk memasukan bitwise AND Untuk memasukan bitwise OR

<<= >>= &= ^=

\=

Untuk memasukan bitwise XOR (Heri Andrianto: 2008)

8. Konversi Pola ( % ) Karakter % dipakai sebagai operator konversi pola. Konversi pola akan sangat berguna pada saat kita menampilkan hasil ke LCD. a. %d menampilkan bilangan bulat positif. Contoh: Sprintf (buf,angka%d,14); b. c. d. e. f. g. %o menampilkan bilangan octal bulat. %x menampilkan bilangan heksadesimal bulat. %u menampilkan bilangan decimal tanpa tanda. %f menampilkan bilangan pecahan. %i menampilkan bilangan integer. %c menampilkan karakter yang ditunjukkan bilangan ASCII.

9. Memasukkan Bahasa Assembly Sering disebut juga dengan in-line assembly. Pemrograman dengan bahasa C ini masih dapat memasukkan bahasa assembly ke dalam program C. Struktur penulisannya juga mudah, yaitu: #asm //dimulai dengan #asm nop// blok bahasa assembly nop// #endasm // diakhiri dengan #endasm . Atau

. #asm(nop\nop\nop)

. 10. Pernyataan kendali lainnya a. Break Pernyataan ini akan menghentikan dan menyebabkan keluar dari suatu blok program. b. Continue Pernyataan ini akan menyebabkan kendali melakukan kembali proses perulangan dari awal. c. Goto label Pernyataan ini akan melakukan loncatan ke label yang dituju.. .(Heri Andrianto: 2008) B. ISIS Proteus Proteus adalah sebuah software yang memiliki kemampuan simulasi rangkaian elektronik dan simulasi terhadap firmware pada embedded system seperti

mikrokontroler. Proteus memiliki labcenter elektronik yang menyediakan macam alat ukur, mulai dari oscilloscope, frequency counter, spectrum analyzer, multimeter, signal generator komponen baik pasif, aktif maupun embedded system (uP) dengan jumlah yang tidak terbatas. C. ARES (Avenced Routing and Editing Software) ARES (Avenced Routing and Editing Software) merupakan software yang digunakan untuk mendesain layout PCB. Software ini merupakan salah satu modul dari

Proteus Sistem. Pada software ini dilengkapi perangkat untuk mendesain PCB dengan beragam tool yang disediakan. (Cholis Syarifudin: 2011). Tool yang penting dalam menggambar layout PCB seperti Gambar 27.

Gambar 27. Simbol pada Ares Package merupakan tool yang digunakan dalam pengambilan komponen sedangkan trace digunakan untuk menggabungkan atau membuat jalur antar komponen.

List progam
lib remote tv soni. TSOP1738 slamet harimukti ***********************************************************/ unsigned int nilai,count, code, pulse_count; unsigned char data[15]; bit tanda; void timer0_init(); // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { // Place your code here tanda=~tanda; if(tanda==1) { MCUCR=0x03; //rissing edge timer0_init(); //timer0 on, nilai=0, mulai mencacah } else { TCCR0=0; //timer0 off, berhenti mencacah count=TCNT0; //simpan nilai timer0 MCUCR=0x02; //falling edge if(pulse_count>0){ data[pulse_count]=count; if(data[pulse_count] >9) //9*0.0853=0.7677ms { code = code | (1 << (pulse_count-1)); } else { code = code & ~(1 << (pulse_count-1)); };

pulse_count=pulse_count+1; //sinyal pertama tanda=1 if(pulse_count==12) //jumlah data = 8 bit { nilai=code; nilai=nilai&0b0000111111111111; code= pulse_count=0; }; } else {

//verifikasi start bit atau start pulse (2.4 ms long)

if(count >= 28) // pulse = 2.4ms maka adalah sinyal start bit (28*0.08533ms = 2.3892ms) { pulse_count=pulse_count+1; } else { delay_ms(20); // tunda 20ms } }; }; } //timer0 init void timer0_init() { //8-bit timer for measuring delay between IR pulses TCNT0 = 0; //reset the timer TCCR0 = 0x05; //CLK / 1024 0.0853ms } void remot_init(){ tanda=0; MCUCR=0x02; GICR |= 0x40; // Global enable interrupts #asm(sei) } void remot_off(){ tanda=0; MCUCR=0x00; GICR = 0x00; // Global enable interrupts #asm(cli) }

Tabel 5. Data pada tombol remote sony.


Tombol MUTING DISPLAY POWER TEXT VIDEO TV 1 2 3 4 5 6 7 8 9 Kode Remote 148 186 149 191 165 184 126 129 130 131 132 133 134 135 136 Tombol JUMP TEXT CLR + (R) SELECT/MENU A/B (L) Kode Remote 187 171 1009 244 151 1008 228 188 182 106 147 144 145 157 137

PIC MODE WAKE UP SLEPP VOL + VOL PROGR + PROGR -/-0

(hasil dari pengamat)

You might also like