Upload
drmat-rmat-ii
View
332
Download
4
Embed Size (px)
Citation preview
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…..
PB0/T0/XCK1
PB1/T12
PB2/AIN0/INT23
PB3/AIN1/OC04
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
RESET9
XTAL212XTAL113
PD0/RXD 14
PD1/TXD 15
PD2/INT0 16
PD3/INT1 17
PD4/OC1B 18
PD5/OC1A 19
PD6/ICP1 20
PD7/OC2 21
PC0/SCL 22
PC1/SDA 23
PC2/TCK 24
PC3/TMS 25
PC4/TDO 26
PC5/TDI 27
PC6/TOSC1 28
PC7/TOSC2 29
PA7/ADC733PA6/ADC634PA5/ADC535PA4/ADC436PA3/ADC337PA2/ADC238PA1/ADC139PA0/ADC040
AREF 32
AVCC 30
U1
ATMEGA16
C147uf
R14k7
X1CRYSTAL
C2
22p
C3
22p
D7
14D
613
D5
12D
411
D3
10D
29
D1
8D
07
E6
RW
5R
S4
VS
S1
VD
D2
VE
E3
LCD1LM016L
RV1
50K
123
TSOP 1738
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 0°C sampai 55°C
Fungsi pin yang terdapat pada LCD ditunjukkan seperti pada tabel 5.
Tabel 6. Konfigurasi Pin dari LCD
NO Nama Pin Fungsi
1 VSS Groud voltage2 VCC +5V3 VEE Contrast voltage 4 RS Register select
0 = Instruction Register1 = Data Register
5 R/W Read/Write,to choosen write or read mode 0 = write mode1 = read mode
E Enable0 = strast to lach data to LCD character1 = disable
7 DB0 Data bit ke-0 (LSB)8 DB1 Data bit ke-19 DB2 Data bit ke-210 DB3 Dat bit ke-311 DB4 Data bit ke-412 DB5 Dat bit ke-513 DB6 Data bit ke-614 DB7 Data bit ke-7 (MSB)15 BPL Back Plane Light16 GND Ground voltage
(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 masing-
masing 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 Fungsi Alternatif
PB7 SCK (SPI Bus Serial Clock)
PB6 MISO (SPI Bus Master Input/Slave Output)
PB5 MOSI (SPI Bus Master Output/Slave Input)
PB4 SS (SPI Slave Select Input)
PB3 AIN1 (Analog Comparator Negativ Input) OC0 (Timerl Counter0 Output Compare Match Output)
PB2 AIN0 (Analog Comparator Positiv Input) INT2 (External Interrupt 2 input)
PB1 T1 (Timer/Counter1 External Counter Input)
PB0 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 Fungsi Alternatif
PC7 TOSC2 (Timer Oscillator Pin2)
PC6 TOSC1 (Timer Oscillator Pin1)
PC5 TD1 (JTAG Test Data In)PC4 TDO (JTAG Test Data Out)
PC3 TMS (JTAG Test Mode Select)
PC2 TCK (JTAG Test Clock)
PC1 SDA (Two-wire Serial Bus Data Input/Output Line)PC0 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 Fungsi Alternatif
PD7 OC2 (Timer/Counter2 Output Compare Match Output)
PD6 ICP (Timer/Counter1 Input Capture Pin)PD5 OC1A (Timer/Counter1 Output Compare A Match Output)PD4 OC1B (Timer/Counter1 Output Compare B Match Output)
PD3 INT1 (External Interrupt 1 Input)
PD2 INT0 (External Interupt 0 Input)
PD1 TXD (USART Output Pin)
PD0 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,5µs akan membawa mikrokontroler pada
kondisi RESET meskipun clock tidak sedang berjalan. Sinyal dengan lebar kurang
dari 1,5µs 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 R16, LOW (RAMEND)
OUT SPL, R16
LDI TMP, HIGH (RAMEND)
OUT SPH, R16
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 0×000. 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. Non-
volatile 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.
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 0×000 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 Size (Bits) Range
Bit 1 0,1
Char 8 -128 to 127
unsigned char 8 0 to 255
signed char 8 -128 to 127
Int 16 -32768 to 32767
short int 16 -23768 to32767
unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
long int 32 -2147483648 to 2147483647
unsigned long int 32 0 to 4294967295
unsigned long int 32 0 to 4294967295
signed long int 32 -2147483648 to 2147483647
Float 32 ±1.175e-38 to ±3.402e38
Double 32 ±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 (A…Z, a…z) Dan
angka (0…9), 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 flash signed do int typedef
Bib float sizeof double interrupt union
Case for sfrb eeprom long unsigned
Char funcused sfrw else register void
const goto static enum return volatile
continue if struct extern short while
default inline witch
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.
< 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
(Heri Andrianto:
2008)
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
Operator aritmatika keteranagan
+ Penjumlahan
- Penguranagan
* Perkalian
/ Pembagian
% Sisa hasil bagi
(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. %o menampilkan bilangan octal bulat.
c. %x menampilkan bilangan heksadesimal bulat.
d. %u menampilkan bilangan decimal tanpa tanda.
e. %f menampilkan bilangan pecahan.
f. %i menampilkan bilangan integer.
g. %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. TSOP1738slamet harimukti***********************************************************/unsigned int nilai,count, code, pulse_count; unsigned char data[15]; bit tanda;void timer0_init();// External Interrupt 0 service routineinterrupt [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 initvoid 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 Kode Remote Tombol Kode Remote
MUTING 148 JUMP 187
DISPLAY 186 TEXT CLR 171
POWER 149 + (R) 1009
TEXT 191 SELECT/MENU 244
VIDEO 165 A/B 151
TV 184 - (L) 1008
1 126 PIC MODE 228
2 129 WAKE UP 188
3 130 SLEPP 182
4 131 VOL + 106
5 132 VOL - 147
6 133 PROGR + 144
7 134 PROGR - 145
8 135 -/-- 157
9 136 0 137
(hasil dari pengamat)