Jumat, 31 Oktober 2014

Arsitektur Komputer (tugas softskill 2)



Arsitektur Komputer


Arsitektur komputer  dapat didefinisikan dan dikategorikan sebagai ilmu dan sekaligus seni mengenai cara interkoneksi komponen-komponen perangkat keras untuk dapat menciptakan sebuah komputer yang memenuhi kebutuhan fungsional, kinerja, dan target biayanya. Dalam bidang teknik komputer, arsitektur komputer adalah konsep perencanaan dan struktur pengoperasian dasar dari suatu sistem komputer. Arsitektur komputer ini merupakan rencana cetak-biru dan deskripsi fungsional dari kebutuhan bagian perangkat keras yang didesain (kecepatan proses dan sistem interkoneksinya). Dalam hal ini, implementasi perencanaan dari masing–masing bagian akan lebih difokuskan terutama, mengenai bagaimana CPU akan bekerja, dan mengenai cara pengaksesan data dan alamat dari dan ke memori cache, RAM, ROM, cakram keras, dll).

Di antara demikian banyak pemahaman tentang arsitektur, arsitektur dikenal juga sebagai suatu tradisi yang berkembang. Dari waktu ke waktu wajah arsitektur selalu mengalami perubahan. Hal-hal yang mempengaruhi perkembangan dan pengembangan arsitektur tidak hanya berupa keadaan eksternal, tetapi juga keadaan internal. Disini kita membahas mengenai evolusi arsitektur pada komputer. Arsitektur dari komputer sendiri merupakan suatu susunan atau rancangan dari komputer tersebut sehingga membentuk suatu kesatuan yang dinamakan komputer. Komputer sendiri berevolusi dengan cepat mulai dari generasi pertama hingga sekarang. Evolusi sendiri didasarkan pada fungsi atau kegunaanya dalam kehidupan. Evolusi pada komputer sendiri ada karena keinginan atau hal yang dibutuhkan manusia itu sendiri. Sekarang ini komputer sudah dapat melakaukan perintah yang sulit sekalipun tidak seperti dulu yang hanya bisa melakukan yang sederhana saja. Itulah yang dinamakan evolusi arsitektur yaitu perubahan bentuk juga fungsi dan kemampuannya.
B.     KLASIFIKASI ARSITEKTUR KOMPUTER
1.      Arsitektur Von Neumann
Arsitektur von Neumann (atau Mesin Von Neumann) adalah arsitektur yang diciptakan oleh John von Neumann (1903-1957). Arsitektur ini digunakan oleh hampir semua komputer saat ini. Arsitektur Von Neumann menggambarkan komputer dengan empat bagian utama: Unit Aritmatika dan Logis (ALU), unit kontrol, memori, dan alat masukan dan hasil (secara kolektif dinamakan I/O). Bagian ini dihubungkan oleh berkas kawat, “bus”.
d
Pada perkembangan komputer modern, setiap prosesor terdiri dari atas :
Arithmetic and Logic Unit  (ALU)
Arithmatic and Logic Unit atau Unit Aritmetika dan Logika berfungsi untuk melakukan semua perhitungan aritmatika (matematika) dan logika yang terjadi sesuai dengan instruksi programhttp://cdncache1-a.akamaihd.net/items/it/img/arrow-10x10.png. ALU menjalankan operasi penambahan,  pengurangan, dan operasi-operasi sederhana lainnya pada input-inputnya dan memberikan hasilnya pada registeroutput.
Register.
Register merupakan alat penyimpanan kecil yang  mempunyai kecepatan akses cukup tinggi, yang  digunakan untuk menyimpan data dan instruksi yang  sedang diproses, sementara data dan instruksi lainnya yang menunggugiliran untukdiproses masihdisimpan yang menunggugiliran untukdiproses masihdisimpan di dalam memori utama. Setiap register dapat menyimpan satu bilangan hingga mencapai jumlah maksimum tertentu tergantung pada ukurannya.
Control Unit
Control Unit atau Unit Kontrol berfungsi untuk mengatur dan mengendalikan semua peralatan yang ada pada sistem komputer. Unit kendali akan mengatur kapan alat input  menerima data dan kapan data diolah serta kapan ditampilkan pada alat output. Unit ini juga mengartikan instruksi-instruksi dari program. Unit ini juga mengartikan instruksi-instruksi dari program komputer, membawa data dari alat input ke memori utama dan mengambil data dari memori utama untuk diolah. Bila ada instruksi untuk perhitungan aritmatika atau  perbandingan logika, maka unit kendali akan mengirim  instruksi tersebut ke ALU. Hasil dari pengolahan data  dibawa oleh unit kendali ke memori utama lagi untuk  disimpan, dan pada saatnya akan disajikan ke alat output.
Bus
Bus adalah sekelompok lintasan sinyal yang digunakan untuk menggerakkan bit-bit informasi dari satu tempat ke tempat lain, dikelompokkan menurut fungsinya Standar bus dari suatu sistem komputer adalah bus alamat (address bus), bus data (data bus) dan bus kontrol (control bus). Komputer menggunakan suatu bus atau saluran bus sebagaimana kendaraan bus yang mengangkut penumpang dari satu tempat ke tempat lain, maka bus komputer mengangkut data. Bus komputer menghubungkan CPU pada RAM dan periferal. Semua komputer menggunakan saluran busnya untuk maksud yang sama.
2.      Arsitektur RISC
Pengertian RISC
RICS singkatan dari Reduced Instruction Set Computer. Merupakan bagian dari arsitektur mikroprosessor, berbentuk kecil dan berfungsi untuk negeset istruksi dalam komunikasi diantara arsitektur yang lainnya. Reduced Instruction Set Computing (RISC) atau “Komputasi set instruksi yang disederhanakan” pertama kali digagas oleh John Cocke, peneliti dari IBM di Yorktown, New York pada tahun 1974 saat ia membuktikan bahwa sekitar 20% instruksi pada sebuah prosesor ternyata menangani sekitar 80% dari keseluruhan kerjanya. Komputer pertama yang menggunakan konsep RISC ini adalah IBM PC/XT pada era 1980-an. Istilah RISC sendiri pertama kali dipopulerkan oleh David Patterson,pengajar pada University of California di Berkely.

ef
RISC, yang jika diterjemahkan berarti “Komputasi Kumpulan Instruksi yang Disederhanakan”, merupakan sebuah arsitektur komputer atau arsitektur komputasi modern dengan instruksi-instruksi dan jenis eksekusi yang paling sederhana. Arsitektur ini digunakan pada komputer dengan kinerja tinggi, seperti komputer vektor.
Selain digunakan dalam komputer vektor, desain ini juga diimplementasikan pada prosesor komputer lain, seperti pada beberapa mikroprosesor Intel 960, Itanium (IA64) dari Intel Corporation, Alpha AXP dari DEC, R4x00 dari MIPS Corporation, PowerPC dan Arsitektur POWER dari International Business Machine. Selain itu, RISC juga umum dipakai pada Advanced RISC Machine (ARM) dan StrongARM (termasuk di antaranya adalah Intel XScale), SPARC dan UltraSPARC dari Sun Microsystems, serta PA-RISC dari Hewlett-Packard.
Karakteristik RISC
Siklus mesin ditentukan oleh waktu yang digunakan untuk mengambil dua buah operand dari register, melakukan operasi ALU, dan menyimpan hasil operasinya kedalam register, dengan demikian instruksi mesin RISC tidak boleh lebih kompleks dan harus dapat mengeksekusi secepat mikroinstruksi pada mesin-mesin CISC
Operasi berbentuk dari register-ke register yang hanya terdiri dari operasi load dan store yang mengakses memori . Fitur rancangan ini menyederhanakan set instruksi sehingga menyederhanakan pula unit control
Penggunaan mode pengalamatan sederhana, hampir sama dengan instruksi menggunakan pengalamatan register.
Penggunaan format-format instruksi sederhana, panjang instruksinya tetap dan disesuaikan dengan panjang word.
Karakteristik-Karakteristik Eksekusi Instruksi
Salah satu evolusi komputer yang besar adalah evolusi bahasa pemprograman. Bahasa pemprograman memungkinkan programmer dapat mengekspresikan algoritma lebih singkat, lebih memperhatikan rincian, dan mendukung penggunaan pemprograman terstruktur, tetapi ternyata muncul masalah lain yaitu semantic gap, yaitu perbedaan antara operasi-operasi yang disediakan oleh HLL dengan yang disediakan oleh arsitektur komputer, ini ditandai dengan ketidakefisienan eksekusi, program mesin yang berukuran besar,dan kompleksitas kompiler.
Untuk mengurangi kesenjangan ini para perancang menjawabnya dengan arsitektur. Fitur-fiturnya meliputi set-set instruksi yang banyak, lusinan mode pengalamatan, dan statemen –statemen HLL yang diimplementasikan pada perangkat keras.
Operasi
Beberapa penelitian telah menganalisis tingkah laku program HLL (High Level Language). Assignment Statement sangat menonjol yang menyatakan bahwa perpindahan sederhana merupakan satu hal yang penting. Hasil penelitian ini merupakan hal yang penting bagi perancang set instruksi mesin yang mengindikasikan jenis instruksi mana yang sering terjadi karena harus didukung optimal.
Operand
Penelitian Paterson telah memperhatikan [PATT82a] frekuensi dinamik terjadinya kelaskelas variabel. Hasil yang konsisten diantara program pascal dan C menunjukkan mayoritas referensi menunjuk ke variable scalar. Penelitian ini telah menguji tingkah laku dinamik program HLL yang tidak tergantung pada arsitektur tertentu. Penelitian [LUND77] menguji instruksi DEC-10 dan secara dinamik menemukan setiap instruksi rata-rata mereferensi 0,5 operand dalam memori dan rata-rata mereferensi 1,4 register. Tentu saja angka ini tergantung pada arsitektur dan kompiler namun sudah cukup menjelaskan frekuensipengaksesan operand sehingga menyatakan pentingnya sebuah arsitektur.
Procedure Calls
Dalam HLL procedure call dan return merupakan aspek penting karena merupakan operasi yang membutuhkan banyak waktu dalam program yang dikompalasi sehingga banyak berguna untuk memperhatikan cara implementasi opperasi ini secara efisien. Adapun aspeknya yang penting adalah jumlah parameter dan variabel yang berkaitan dengan prosedur dan kedalaman pensarangan (nesting).
3.      Arsitektur CISC
Pengertian CISC
Complex instruction-set computing atau Complex Instruction-Set Computer (CISC) “Kumpulan instruksi komputasi kompleks”) adalah sebuah arsitektur dari set instruksi dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memory, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Karakteristik CISC dapat dikatakan bertolak-belakang dengan RISC.
Sebelum proses RISC didesain untuk pertama kalinya, banyak arsitek komputer mencoba menjembatani celah semantik”, yaitu bagaimana cara untuk membuat set-set instruksi untuk mempermudah pemrograman level tinggi dengan menyediakan instruksi “level tinggi” seperti pemanggilan procedure, proses pengulangan dan mode-mode pengalamatan kompleks sehingga struktur data dan akses array dapat dikombinasikan dengan sebuah instruksi. Karakteristik CISC yg “sarat informasi” ini memberikan keuntungan di mana ukuran program-program yang dihasilkan akan menjadi relatif lebih kecil, dan penggunaan memory akan semakin berkurang. Karena CISC inilah biaya pembuatan komputer pada saat itu (tahun 1960) menjadi jauh lebih hemat.
Memang setelah itu banyak desain yang memberikan hasil yang lebih baik dengan biaya yang lebih rendah, dan juga mengakibatkan pemrograman level tinggi menjadi lebih sederhana, tetapi pada kenyataannya tidaklah selalu demikian. Contohnya, arsitektur kompleks yang didesain dengan kurang baik (yang menggunakan kode-kode mikro untuk mengakses fungsi-fungsi hardware), akan berada pada situasi di mana akan lebih mudah untuk meningkatkan performansi dengan tidak menggunakan instruksi yang kompleks (seperti instruksi pemanggilan procedure), tetapi dengan menggunakan urutan instruksi yang sederhana.
Istilah RISC dan CISC saat ini kurang dikenal, setelah melihat perkembangan lebih lanjut dari desain dan implementasi baik CISC dan CISC. Implementasi CISC paralel untuk pertama kalinya, seperti 486 dari Intel, AMD, Cyrix, dan IBM telah mendukung setiap instruksi yang digunakan oleh prosesor-prosesor sebelumnya, meskipun efisiensi tertingginya hanya saat digunakan pada subset x86 yang sederhana (mirip dengan set instruksi RISC, tetapi tanpa batasan penyimpanan/pengambilan data dari RISC). Prosesor-prosesor modern x86 juga telah menyandikan dan membagi lebih banyak lagi instruksi-instruksi kompleks menjadi beberapa “operasi-mikro” internal yang lebih kecil sehingga dapat instruksi-instruksi tersebut dapat dilakukan secara paralel, sehingga mencapai performansi tinggi pada subset instruksi yang lebih besar.
Karakteristik CISC
Sarat informasi memberikan keuntungan di mana ukuran program-program yang dihasilkan akan menjadi relatif lebih kecil, dan penggunaan memory akan semakin berkurang. Karena CISC inilah biaya pembuatan komputer pada saat itu (tahun 1960) menjadi jauh lebih hemat
Dimaksudkan untuk meminimumkan jumlah perintah yang diperlukan untuk mengerjakan pekerjaan yang diberikan. (Jumlah perintah sedikit tetapi rumit) Konsep CISC menjadikan mesin mudah untuk diprogram dalam bahasa rakitan
4.      Arsitektur Harvard
Arsitektur Havard menggunakan memori terpisah untuk program dan data dengan alamat dan bus data yang berdiri sendiri. Karena dua perbedaan aliran data dan alamat, maka tidak  diperlukan multiplexing  alamat dan bus data. Arsitektur ini tidak hanya didukung dengan bus paralel untuk alamat dan data, tetapi juga menyediakanorganisasiinternal yang  berbeda sedemikian rupa instruksi dapat diambil dan dikodekan ketika dan data, tetapi juga menyediakan organisasi internal yang  berbeda sedemikian rupa instruksi dapaLebih lanjut lagi, bus data bisa saja memiliki ukuran yang berbeda  dari bus alamat. Hal ini memungkinkan pengoptimalan bus data dan bus alamat dalam pengeksekusian instruksi yang cepat.t diambil dan dikodekan ketika berbagai data sedang diambil dan dioperasikan. Sebagai contoh, mikrokontroler Intel keluarga MCS-51 menggunakan arsitektur Havard karena ada perbedaan kapasitas memori untuk program dan data, dan bus terpisah (internal) untuk alamat dan data.  Begitu juga dengan keluarga PIC dari Microchip yang menggunakan arsitektur Havard.
5.      Arsitektur Blue Gene
Blue Gene adalah sebuah arsitektur komputer yang dirancang untuk menciptakan beberapa superkomputer generasi berikut, yang dirancang untuk mencapai kecepatan operasi petaflop (1 peta = 10 pangkat 15), dan pada 2005 telah mencapai kecepatan lebih dari 100 teraflop (1 tera = 10 pangkat 12). Blue Gene merupakan proyek antara Departemen Energi Amerika Serikat (yang membiayai projek ini), industri (terutama IBM), dan kalangan akademi. Ada lima projek Blue Gene dalam pengembangan saat ini, di antaranya adalah Blue Gene/L, Blue Gene/C, dan Blue Gene/P.
Komputer pertama dalam seri Blue Gene. Blue Gene/L dikembangkan melalui sebuah “partnership” dengan Lawrence Livermore National Laboratory menghabiskan biaya AS$100 juta dan direncanakan dapat mencapai kecepatan ratusan TFLOPS, dengan kecepatan puncak teoritis 360 TFLOPS. Ini hampir sepuluh kali lebih cepat dari Earth Simulator, superkomputer tercepat di dunia sebelum Blue Gene. Pada Juni 2004, dua prototipe Blue Gene/L masuk dalam peringkat 500 besar superkomputer berada dalam posisi ke-4 dan ke-8.
Pada 29 September 2004 IBM mengumumkan bahwa sebuah prototipe Blue Gene/L di IBM Rochester (Minnesota) telah menyusul Earth Simulator NEC sebagai komputer tercepat di dunia, dengan kecepatan 36,01 TFLOPS, mengalahkan Earth Simulator yang memiliki kecepatan 35,86 TFLOPS. Mesin ini kemudian mencapai kecepatan 70,72.
Pada 24 Maret 2005, Departemen Energi AS mengumumkan bahwa Blue Gene/L memecahkan rekor komputer tercepat mencapai 135,5 TFLOPS. Hal ini dimungkinkan karena menambah jumlah rak menjadi 32 dengan setiap rak berisi 1.024 node komputasi. Ini masih merupakan setengah dari konfigurasi final yang direncanakan mencapai 65.536 node.
Pada 27 Oktober, 2005, Lawrence Livermore National Laboratory dan IBM mengumumkan bahwa Blue Gene/L sekali lagi telah menciptakan rekor dengan mengalahkan rekornya sendiri setelah mencapai kecepatan 280.6 TFLOPS.
C.    MODEL-MODEL KOMPUTASI ARSITEKTUR KOMPUTER
1.      SISD
Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
2.      SIMD
Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU
3.      MISD
Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
4.      MIMD
Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
f
Singkatnya untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini:
Gambar 1 : Penyelesaian Sebuah Masalah pada Komputasi Tunggal
Gambar 2: Penyelesaian Sebuah Masalah pada Komputasi Paralel
Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal.
Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.

Senin, 06 Oktober 2014

Etika Menulis Di Internet (tugas softskill 1)

Etika menulis di internet merupakan pendapat atau opini pribadi seseorang mengenai aturan atau sopan santun menulis di dalam dunia maya. Aturan–aturan tersebut harus dapat dipahami oleh setiap individu. Tetapi, masih banyak kita temukan mereka yang menulis tanpa menggunakan aturan atau sopan santun yang semestinya. Mereka abai dan tidak ambil pusing dalam mempublikasikan sesuatu, seperti gambar, video, atau mengirimkan pesan melalui email, tanpa memerhatikan kode etik yang semestinya berlaku.
Padahal, semua orang dapat membaca artikel tersebut. Tentu saja, jika ada artikel yang berisi pesan yang bersifat negatif, dan berdampak merugikan bagi banyak orang, maka secara tidak langsung, pesan tersebut akan mengarahkan para pembaca pada sesuatu yang tidak baik juga. Seperti yang kita ketahui, pola pikir setiap manusia memang berbeda–beda, mengenai batasan-batasan baik ataupun yang buruk terhadap suatu artikel. Tidak ada salahnya, jika ada pembatasan secara umum mengenai etika berbahasa yang dapat digunakan dalam penulisan artikel, dengan tujuan agar dapat dipahami oleh banyak orang.
Ada beberapa etika yang perlu kita ketahui dalam menulis/memposting tulisan kita di internet :
·         jangan pernah menggunakan kalimat-kalimat yang kasar.
·         gunakan kata-kata yang sopan
·         tidak mengandung unsur SARA
·         jangan mengundang pertengkaran , maksudnya tulisan tersebut bersifat fitnah/tidak benar,    sehingga pembaca mempersoalkan tulisan tersebut, dan pembaca bisa saja membawa penulis pada tuntutan hukum
·         berbagilah pengetahuan yang berharga
·         hindarkan informasi yang bersifat negatif
·         tidak melanggar hukum hak cipta
·         tulisan yang dibuat bukan hasil “plagiat”
·         gunakan kalimat yang sederhana, sehingga pembaca mudah memahami tulisan tersebut
·         tulisan berupa fakta bukan bohongan
·         berilah informasi yang berguna bagi pembaca
·         jangan menggunakan kata yang berulang-ulang
·         tidak memanipulasi data
·         selalu menyertakan sumber ketika mengambil tuliasan dari web lain.
 Sebaiknya  yang harus kita lakukan ketika menulis di internet adalah meningkatkan kewaspadaan kita dan berpedoman pada etika. Artinya, kita harus memikirkan terlebih dahulu terhadap apa yang akan kita tulis, apakah akan membawa dampak positif ataupun negatif. Dan, apa yang kita tulis harus memiliki tujuan yang jelas, agar tidak merugikan diri sendiri maupun orang lain.
Pada era reformasi ini, kita dapat bebas memberikan pendapat, namun kita tetap harus menyadari pendapat atau pesan yang akan kita sampaikan dan publikasikan melalui internet, karena semuanya akan memberikan pengaruh bagi mereka yang membaca tulisan tersebut. Kita mempunyai kebebasan berpendapat, namun kebebasan tersebut haruslah kebebasan yang bertanggung jawab. Jadi, pesan apapun yang ingin disampaikan akan mendapatkan respons dan selama pendapat ataupun pesan tersebut tidak mengandung hal negatif, namun bermanfaat, kita tidak perlu takut untuk menulis dan memublikasikannya





  http://riamande7jelita.blogspot.com/2012/10/etika-menulis-di-internet_3.html

Jumat, 27 Juni 2014

AN-0191 Sistem Alarm Rumah berbasis MMS dilengkapi dengan Camera Interface



Pada diagram alir tersebut terdapat dua aliran, yang pertama adalah program utama yang bekerja mendeteksi kondisi-kondisi sensor. Saat salah satu sensor mendeteksi ada obyek atau kebakaran maka program akan langsung mengirimkan foto dalam bentuk MMS beserta teks yang menunjukkan informasi sensor apa yang aktif sehingga pengguna dapat mengetahui jenis sensor yang aktif dari MMS yang diterima di HP.
Diagram alir kedua adalah interupsi serial yang mendeteksi pesan SMS yang dikirim oleh pengguna melalui HP dan diterima oleh SIM5216. Pesan ini diteruskan ke DST-51 dan apabila pesan tersebut berisi SMS “ambilfoto” maka DST-51 akan memerintahkan SIM5216 untuk mengirimkan foto. Bagian ini digunakan apabila pengguna ingin melihat kondisi melalui camera setiap saat.
Agar sistem yang dirangkai dapat bekerja sesuai diagram alir tersebut maka program atau source code perlu diisikan ke dalam DST-51 terlebih dahulu.
Lebih detail mengenai cara untuk download program ke DST-51 dapat dilihat di AN0160.

LISTING PROGRAM

$MOD51
        CSEG

DeviceID    EQU    057h        ;ID Telemeter

PowerKey    Bit    P1.0
CTS        Bit    P1.2
RTS        Bit    P1.3

SIMVDD        Bit    P3.7        ;belum tahu
Indicator    Bit    P1.7

SensorSmoke        Bit    P2.2
SensorInfra1        Bit    P2.3
SensorInfra2        Bit    P2.4
SensorInfra3        Bit    P2.5
SensorSonar        Bit    P2.6

SetPointSensorSuhu    EQU    80h

        DSEG
    Org    36H

PTR:     Ds      2
PTR2:    Ds      2
PTR3:    Ds      2

RAM_ID:          Ds      1
RAM_HPServer:    Ds      15
RAM_OperatorNumber:      Ds      10
TF0Counter:      Ds      1
IndexSMS:        Ds      1
IndexPerintah:   Ds      1
CheckSum:        Ds      1
PrescaleTimer:   Ds      1
CounterHP:       Ds      1
                    ;
Flag3:           Ds      1               ;Flag Serba guna
BufferSensTemp:  Ds      5
BufferSensor:    Ds      5
Status:          Ds      1               ;Bit 0 = Flag Sensor Infra 1
                    ;Bit 1 = Flag Sensor Infra 2
                    ;Bit 2 = Flag Sensor Infra 3
                    ;Bit 3 = Flag Sensor Smoke
                    ;Bit 4 = Flag Sensor sonar
                    ;Bit 5 = Flag Sensor suhu
                    ;Bit 6 = Flag Sensor Infra 1 diproses
                    ;Bit 7 = Flag Sensor Infra 2 diproses
Status2:         Ds      1               ;Bit 0 = Flag Sensor Infra 3 diproses
                    ;Bit 1 = Flag Sensor Smoke diproses
                    ;Bit 2 = Flag Sensor Sonar diproses
                    ;Bit 3 = Flag Sensor Suhu diproses
                  


        CSEG
    Org    000H
    Ljmp    Start
    Org    003H
    ljmp    intr0
    Org    00Bh
    Ljmp    Timer0Interrupt
    Org    013H
    Ljmp    INTR1
    Org    023h
    LJmp    SerialInterrupt



Intr0:

    Reti  

INTR1:
    Reti

;============================================
; Kalau Call Ready = GSM On
; Kalau 's' = koneksi dengan PC



PBDone:
    DB    'PB DONE',0

TurnONGSM:

    Clr    PowerKey
    Mov    R7,#100
    Lcall    Delayx10mS
    Setb    PowerKey

TungguCommandBerikut:
    Lcall    TungguCommand
    Mov    DPTR,#PBDone
    Mov    R0,#BufferPerintah
    Lcall    CompareRAMnTabel
    Jc    TungguCommandBerikut

    Ljmp    GSMSudahON                ;



TurnONGSM2:
    LJmp    TurnONGSM


CompareRAMnTabel:
    Mov    B,@R0
    Inc    R0
    Mov    A,#00
    Movc    A,@A+DPTR
    Jz    RAMdanTabelCocok
    Inc    DPTR
    Clr    C
    Subb    A,B
    Jnz    RAMTidakCocok
    Ljmp    CompareRAMnTabel

RAMdanTabelCocok:
    Clr    C
    Ret

RAMTidakCocok:
    Setb    C
    Ret



Start:
    Lcall    Init_Serial
    Mov    Status,#0FFh

    Mov    Flag3,#0FFh
    Mov    DPTR,#ID
    Lcall    DPTRSEE16bit

    Cjne    A,#DeviceID,SetDef
    Ljmp    NoDefault


SetDef:
    Lcall    SetDefault

NoDefault:

    Lcall    Init_Serial            ;Inisial Serial 11.5200
    Clr    RI
    Clr    TI
    Jnb    SIMVDD,TurnONGSM2        ;Cek GSM aktif?

GSMSudahON:

    Mov    R7,#100
    Lcall    Delayx10mS

    Lcall    ClearBufferPerintah        ;Hapus data di buffer perintah

    Lcall    InitTimer            ;Aktifkan Interupsi Timer
    Mov    PreScaleTimer,#200
   
    Mov    TF0Counter,#00            ;Set Prescaler
    Setb    EA
    Setb    ET0

    Lcall    InitGSM
    Lcall    DeleteAllSMS            ;Hapus Semua SMS

    Setb    TR0
    Clr    RI
    Clr    TI

    Ljmp    $








;================================================================================
; END OF MAIN PROGRAM

Selasa, 10 Juni 2014

PERANCANGAN PENGENDALIAN PERALATAN LAMPU LISTRIK JARAK JAUH MENGGUNAKAN TELEPON SELULER (tugas 3)






Alur program yang diberikan ke HP yang pertama adalah pengaturan mode stanby. Dengan mode ini, HP akan secara otomatis memberikan pemberiahuan ke mikrokontroler jika ada SMS masuk. Dengan adanya mode ini, mikrokontroler memantau adanya pemberitahuan dari HP jika ada SMS masuk. Mode stand-by diberikan dengan perintah AT+CNMI=1,1. Dengan perintah ini secara otomatis HP akan diset pada posisi stand-by. Setelah perintah ini HP diberi perintah AT+CMGD=1. Perintah ini digunakan untuk menghapus inbox pada index memory pertama. Jika index pertama kosong, maka secara otomatis jika ada SMS masuk akan masuk ke lokasi index pertama.
Jika ada SMS masuk, mikrokontroler akan memberikan perintah untuk membaca isi inbox. Perintah yang diberikan adalah AT+CMGR=1. Angka 1 menunjukkan lokasi inbox yang akan dibaca. Setelah perintah ini diberikan HP akan memberikan data-data PDU yang merupakan isi dari SMS.
Isi SMS akan dikomparasi dengan kata kunci yang ada. Jika sesuai maka mikrokontroler akan mengeksekusi perintah tersebut. Namun jika isi SMS tidak dikenali, maka mikrokontroler akan memberikan pesan error. Dan tidak akan mengeksekusi perintah tersebut. Jika perintah sesuai kata kunci mikrokontroler akan mengeksekusi perintah tersebut. Kemudian memantau kondisi sensor dan memberikan SMS balasan.

Listing program pascal
TUNGGU KARAKTER BALASAN '"'

ADA_SMS:      CLR             RI                   ;
            JNB             RI,CEKS1
            jmp            star

CEKS1:            JB            SAKLAR_1,CEKS
            JNB            SAKLAR_1,$
            CPL             LAMPU1
            CALL             TUNDA_LONG
            SJMP             GO

CEKS:            JNB             RI,CEKS2
            jmp            star

CEKS2:            JB            SAKLAR_2,GO
            JNB            SAKLAR_2,$
            CPL             LAMPU2
            CALL             TUNDA_LONG
            SJMP             GO

GO:            JNB             RI,CEKS1
star:            MOV            A,SBUF                  ;TUNGGU ADA SMS MASUK
            INC            R0
            CJNE            A,#'"',ADA_SMS
            MOV            R0,#7                  ;AMBIL 7 KARAKTER BERIKUTNYA
            CALL            AMBIL_SERIAL
            CALL            BACA_SMS            ;BACA DAN SIMPAN NO HP
            MOV            R0,#18                  ;AMBIL 18 KARAKTER BERIKUTNYA
            CALL            AMBIL_SERIAL            ;
            MOV            R1,#45H                  ;SIMPAN ISI INBOX MULAI ALAMAT 45H
            MOV            R0,#00                  ;CLEAR COUNTER
            CALL            SIMPAN_KATA2
            SJMP            BANDING

BANDING:      MOV            DPTR,#L1ON            ;AMBIL CODE PDU 'LAMPU 1 ON'
            MOV            R0,#12                  ;BANDNGKAN 20X
            CALL            BANDING_KATA     
            JB            flag_sms,DATA_BEDA2            ;JIKA BEDA LOMPAT KE LABEL
            MOV            21H,#1                 
            SETB            LAMPU1                 
            setb            memori_relai.0
           
            CALL            TUNDA_LONG
            JMP            SEND_SMS

DATA_BEDA2:      MOV            DPTR,#L2ON           
            MOV            R0,#12                 
            CALL            BANDING_KATA
            JB            flag_sms,DATA_BEDA3
            MOV            21H,#2                 
            SETB            LAMPU2                 
            setb            memori_relai.1
           
            CALL            TUNDA_LONG
            JMP            SEND_SMS

DATA_BEDA3:      MOV            DPTR,#L1OFF           
            MOV            R0,#14                 
            CALL            BANDING_KATA
            JB            flag_sms,DATA_BEDA4
            MOV            21H,#9                 
            CLR            LAMPU1           
            clr            memori_relai.0
           
            CALL            TUNDA_LONG
            JMP            SEND_SMS

DATA_BEDA4:      MOV            DPTR,#L2OFF           
            MOV            R0,#14                 
            CALL            BANDING_KATA
            JB            flag_sms,DATA_BEDA5
            MOV            21H,#10                 
            CLR            LAMPU2                       
            clr            memori_relai.1
           
            CALL            TUNDA_LONG
            JMP            SEND_SMS
DATA_BEDA5:      MOV             DPTR,#STAT1            
            MOV             R0,#14                 
            CALL             BANDING_KATA
            JB             flag_sms,DATA_BEDA6
            MOV             21H,#17            
            CALL            TUNDA_LONG
            JMP            SEND_SMS

DATA_BEDA6:      MOV             DPTR,#STAT2            
            MOV             R0,#14           
            CALL             BANDING_KATA
            JB             flag_sms,DATA_BEDA7
            MOV             21H,#18             
            CALL            TUNDA_LONG           
            JMP            SEND_SMS
DATA_BEDA7:      MOV            21H,#25
            CALL            TUNDA_LONG
            JMP            SEND_SMS
           
;>>>>>>>>>>>>>>>>>>>>>>>>RUTIN PENGIRIMAN SMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Isi_2:            djnz            r4,TUNGGU2
            JMP            MULAI

SEND_SMS:      MOV            DPTR,#SMSSEND            ;BACA SMS           
            CALL            KIRIM_DATA            ;KIRIM PERINTAH
            mov            r4,#1
            sjmp            TUNGGU2

TUNGGU2:      CALL            TERIMA_DATA
            CJNE            A,#'>',Isi_2            ;TUNGGU KARAKTER >

            MOV            DPTR,#SMS_CENTER      ;KIRIM NO SMS CENTER           
            MOV            R0,#6
BERULANG1A:      CLR            A
            MOVC            A,@A+DPTR
            CALL            KIRIM_SERIAL
            INC            DPTR
            DJNZ            R0,BERULANG1A
            MOV            R0,70H                  ;JUMLAH NO HP
            MOV            A,R0
            ADD            A,#2
            MOV            R0,A
            MOV            R1,#30H                  ;ALAMAT AWAL NO HP
BERULANG2A:      CLR            A
            MOV            A,@R1
            CALL            KIRIM_SERIAL
            INC            R1
            DJNZ            R0,BERULANG2A

            MOV            DPTR,#REF_SMS            ;KIRIM NO REFFERENSI SMSM           
            MOV            R0,#6                  ;'000000'
BERULANG3A:      CLR            A
            MOVC            A,@A+DPTR
            CALL            KIRIM_SERIAL
            INC            DPTR
            DJNZ            R0,BERULANG3A

            clr            a
            MOV            A,21H
            CJNE            A,#1,CEK_FLAG2
            CALL            ISI_L1ON
            JMP            DONE

CEK_FLAG2:      CJNE            A,#2,CEK_FLAG3
            CALL            ISI_L2ON
            JMP            DONE

CEK_FLAG3:      CJNE            A,#9,CEK_FLAG4
            CALL            ISI_L1OFF
            JMP            DONE

CEK_FLAG4:      CJNE            A,#10,CEK_FLAG5
            CALL            ISI_L2OFF
            JMP            DONE
CEK_FLAG5:      CJNE             A,#17,CEK_FLAG6
            jmp            Cek_1
Cek_1:            JB             LAMPU1,CEK_SEN1
            CALL             ISI_L1Off
            JMP             DONE
CEK_SEN1:      JNB             LAMPU1,CEK_FLAG7
            CALL             ISI_L1On
            JMP             DONE

CEK_FLAG6:      CJNE             A,#18,CEK_FLAG7
            jmp            Cek_2
cek_2:            JB             LAMPU2,CEK_SEN2
            CALL             ISI_L2Off
            JMP             DONE
CEK_SEN2:      JNB             LAMPU2,CEK_FLAG7
            CALL             ISI_L2On
            JMP             DONE
CEK_FLAG7:      CALL            ISI_UNKNOW
            JMP            DONE

DONE:            MOV            A,#1AH                  ;DONE
            CALL            KIRIM_SERIAL
            mov            r4,#5
tunggu:            CALL            TERIMA_DATA
            CJNE            A,#'K',Isi_1
            CALL            HAPUS_INBOX
            CALL            MODE_STANBY
            JMP            ADA_SMS
            JMP            $

Isi_1:            djnz            r4,tunggu
            JMP            MULAI

;>>>>>>>>>>>>>>>>>>>SUB RUTIN PENGISIAN KATA SMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ISI_L1ON:      MOV            DPTR,#REPORT1           
            MOV            R0,#30
BERULANG1:      CLR            A
            MOVC            A,@A+DPTR
            CALL            KIRIM_SERIAL
            INC            DPTR
            DJNZ            R0,BERULANG1
            RET

ISI_L2ON:      MOV            DPTR,#REPORT2           
            MOV            R0,#30
BERULANG2:      CLR            A
            MOVC            A,@A+DPTR
            CALL            KIRIM_SERIAL
            INC            DPTR
            DJNZ            R0,BERULANG2
            RET

ISI_L1OFF:      MOV            DPTR,#REPORT3            ;AMBIL DATA TABEL
            MOV            R0,#30
BERULANG9:      CLR            A
            MOVC            A,@A+DPTR
            CALL            KIRIM_SERIAL
            INC            DPTR
            DJNZ            R0,BERULANG9
            RET

ISI_L2OFF:      MOV            DPTR,#REPORT4            ;AMBIL DATA TABEL
            MOV            R0,#30
BERULANG10:      CLR            A
            MOVC            A,@A+DPTR
            CALL            KIRIM_SERIAL
            INC            DPTR
            DJNZ            R0,BERULANG10
            RET

ISI_UNKNOW:      MOV            DPTR,#UNKNOW           
            MOV            R0,#30
BERULANG40:      CLR            A
            MOVC            A,@A+DPTR
            CALL            KIRIM_SERIAL
            INC            DPTR
            DJNZ            R0,BERULANG40
            RET

;>>>>>>>>>>>>>>>>>>>>>INISIALISASI BAUT RATE 19200>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
INITIAL:      MOV            SCON,#50H            ;INISIALISASI BAUD RATE 19200
            MOV            TMOD,#20H
            Mov            87h,#80h
            MOV            TH1,#0FdH
            SETB            TR1
            RET

;>>>>>>>>>>>>>>>>>>>>HAPUS SMS DI LOKASI INBOX INDEX 1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
HAPUS_INBOX:      MOV            DPTR,#HAPUS            ;KIRIM PRINTAH 'AT+CMGD=1'
LAGI1:                                          ;HAPUS INBOX
            CLR            A                  ;KOSONGKAN ACC
            MOVC            A,@A+DPTR            ;AMBIL DATA TABEL YANG DITUNJUK DPTR
            CLR            TI                  ;AKTIVASI KIRIM SERIAL
            MOV            SBUF,A                  ;KIRIMKAN DATA
            JNB            TI,$                  ;TUNGGU SELESAI DIKIRIM
            INC            DPTR                  ;NAIKKAN PENUNJUK TABEL
            CJNE            A,#00,LAGI1            ;TUNGGU SEMUA KARAKTER DIKIRIM     

TUNGGU_A:      CLR            RI                  ;AKTIVASI TERIMA SERIAL
            JNB            RI,$                  ;TUNGGU TERIMA KARAKTER
            MOV            A,SBUF                  ;AMBIL DATA SERIAL KE ACC
            CJNE            A,#10,tunggu_a            ;TUNGGU HINGGA BALASAN '10'
            RET     

;>>>>>>>>>>>>>>>>>>>>>>>>>>>AKTIVASI MODE STANBY>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MODE_STANBY:      MOV            DPTR,#PESAN            ;KIRIM PERINTAH 'AT+CNMI=1,1'
LAGI2:            CLR            A                  ;RESET ACC
            MOVC            A,@A+DPTR            ;AMBIL KARAKTER DARI TABEL
            CLR            TI                  ;AKTIVASI KIRIM SERIAL
            MOV            SBUF,A                  ;KELUARKAN DATA DARI ACC KE BUFFER
            JNB            TI,$                  ;KIRIM SERIAL
            INC            DPTR                  ;NAIKKAN PENUNJUK TABEL
            CJNE            A,#00,LAGI2            ;TUNGGU SEMUA KARAKTER SELESAI
            RET

TERIMA_DATA:      mov            r4,#255                  ;RUTIN TERIMA DATA 1 BYTE
            mov            r5,#255
            mov            r6,#100
            CLR            RI                  ;DATA DISIMPAN DI ACC
tunggu_3:      JNB            RI,isi_3
            MOV            A,SBUF                 
            RET

Isi_3:            djnz            r4,tunggu_3
            djnz            r5,tunggu_3
            djnz            r6,tunggu_3
            JMP            MULAI

;>>>>>>>>>>>>>>>>>RUTIN KIRIM DATA DARI TABEL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
KIRIM_DATA:      mov            r4,#255                  ;RUTIN KIRIM DATA 1 BYTE
            mov            r5,#255
            mov            r6,#5
            CLR            A                  ;RESET ACC
            MOVC            A,@A+DPTR            ;AMBIL KARAKTER DARI TABEL
            CLR            TI                  ;AKTIVASI KIRIM SERIAL
            MOV            SBUF,A                  ;KELUARKAN DATA DARI ACC KE BUFFER
tunggu_6:      JNB            TI,isi_6            ;KIRIM SERIAL
            INC            DPTR                  ;NAIKKAN PENUNJUK TABEL
                                          ;RUTIN KIRIM DATA 1 BYTE
            CJNE            A,#00,KIRIM_DATA      ;TUNGGU SEMUA KARAKTER SELESAI
            RET     

Isi_6:            djnz            r4,tunggu_6
            djnz            r5,tunggu_6
            djnz            r6,tunggu_6
            JMP            MULAI

;>>>>>>>>>>>>>>>SUB RUTIN KIRIM DATA SERIAL 1 BYTE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
KIRIM_SERIAL:      mov            r4,#255                  ;RUTIN KIRIM serial 1 BYTE
            mov            r5,#255
            mov            r6,#5
            CLR            TI
            MOV            SBUF,A
tunggu_4:      JNB            TI,Isi_4
            RET

Isi_4:            djnz            r4,tunggu_4
            djnz            r5,tunggu_4
            djnz            r6,tunggu_4
            JMP            MULAI

;>>>>>>>>>>>>>>>>>>>>>>>>>SUB RUTIN KIRIM DATA SERIAL DGN>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>JUMLAH BYTE TERGANTUNG R0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
KIRIM_COUNT:      mov            r4,#255                 
            mov            r5,#255
            mov            r6,#5
            CLR            A
            CLR            TI
            MOV            A,@R1
            MOV            SBUF,A

tunggu_5:      JNB            TI,Isi_5
            INC            R1
            DJNZ            R0,KIRIM_SERIAL
            RET

Isi_5:            djnz            r4,tunggu_5
            djnz            r5,tunggu_5
            djnz            r6,tunggu_5
            JMP            MULAI

;>>>>>>>>>>>>>>>>>>>>SUB RUTIN TERIMA DATA SERIAL DGN>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>JUMLAH BYTE TERGANTUNG R0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
AMBIL_SERIAL:      CLR            RI                  ;TUNGGU KARAKTER BALASAN ','
            JNB            RI,$
            MOV            A,SBUF                  ;TUNGGU ADA SMS MASUK
            DJNZ            R0,AMBIL_SERIAL
            RET

;>>>>>>>>>>>>>>>SUB RUTIN KONVERSI CODE ASCII KE HEXA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ASCII_HEX:      PUSH            ACC
            MOV            A,B
            ANL            A,#0F0H                  ; AMBIL HIGH NIBLE
            CJNE            A,#30H,BUKAN_ANGKA
ANGKA:            MOV            A,B
            ANL            A,#0FH                  ; AMBIL LOW NIBLE
            MOV            B,A
            POP            ACC
            RET

BUKAN_ANGKA:      MOV            A,B
            ANL            A,#0FH
            ADD            A,#9
            MOV            B,A
            POP            ACC
            RET

;>>>>>>>>>>>>>>>>>>>>>>>>SUB RUTIN BACA SMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BACA_SMS:      MOV            DPTR,#SMSREAD            ;BACA SMS           
            CALL            KIRIM_DATA            ;KIRIM PERINTAH 'AT+CMGR=1'

BACA:            CALL            TERIMA_DATA            ;AMBIL DATA BALASAN
            CJNE            A,#',',BACA            ;TUNGGU KARAKTER ','
            sJMP            BACA1

BACA1:            CALL            TERIMA_DATA            ;AMBIL DATA BALASAN
            CJNE            A,#0AH,BACA1            ;TUNGGU KARAKTER STOP BYTE
            MOV            R0,#2
            CALL            AMBIL_SERIAL            ;AMBIL JUMLAH PAKET DATA SMSC
            MOV            B,A
            CALL            ASCII_HEX            ;KONVERSI DATA ASCII KE HEX
            MOV            A,B
            MOV            B,#2
            MUL            AB                  ;KALIKAN 2
            MOV            R0,A                  ;JADIKAN COUNTER
            CALL            AMBIL_SERIAL
            MOV            R0,#2
            CALL            AMBIL_SERIAL            ;AMBIL JUMLAH PAKET DATA SMSC
            MOV            R0,#2                  ;2 KARAKTER BERIKUTNYA
            CALL            AMBIL_SERIAL            ;AMBIL NO HP
            CJNE            A,#'B',CEK_DIGIT1      ;NO HP 10 DIGIT
            MOV            R0,#14
            MOV            70H,R0                  ;JUMLAH NO HP DISIMPAN DI R2
            JMP            COUNT_LAGI1

CEK_DIGIT1:      CJNE            A,#'C',CEK_DIGIT2
            MOV            R0,#14                  ;NO HP 11 DIGIT
            MOV            70H,R0                  ;JUMLAH NO HP DISIMPAN DI R2
            JMP            COUNT_LAGI2

CEK_DIGIT2:      CJNE            A,#'D',EXITZ            ;NO HP 12 DIGIT
            MOV            R0,#16
            MOV            70H,R0                  ;JUMLAH NO HP DISIMPAN DI R2
            JMP            COUNT_LAGI3
EXITZ:            JMP            MULAI

COUNT_LAGI1:      MOV            30H,#'0'
            MOV            31H,#'B'
            MOV            R1,#32H
COUNT1:            CLR            RI                  ;AMBIL DATA NO HP     
            JNB            RI,$
            MOV            A,SBUF     
            MOV            @R1,A
            INC            R1                             
            DJNZ            R0,COUNT1     
            JMP            NEXT

COUNT_LAGI2:      MOV            30H,#'0'
            MOV            31H,#'C'
            MOV            R1,#32H
COUNT2:            CLR            RI                  ;AMBIL DATA NO HP     
            JNB            RI,$
            MOV            A,SBUF     
            MOV            @R1,A
            INC            R1                             
            DJNZ            R0,COUNT2     
            JMP            NEXT

COUNT_LAGI3:      MOV            30H,#'0'
            MOV            31H,#'D'
            MOV            R1,#32H
COUNT3:            CLR            RI                  ;AMBIL DATA NO HP     
            JNB            RI,$     
            MOV            A,SBUF     
            MOV            @R1,A
            INC            R1                             
            DJNZ            R0,COUNT3
            JMP            NEXT

NEXT:            RET

;>>>>>>>>>>>>>>>>>>SUB RUTIN PENYIMPANAN KODE PDU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SIMPAN_KATA:      CLR            A
            CALL            TERIMA_DATA
            MOV            @R1,A
            INC            R1
            DJNZ            R0,SIMPAN_KATA            ;SIMPAN PDU KE BUFFER MULAI 45H
            RET


;>>>>>>>>>>>>>>>>>>>SUB RUTIN PENYIMPANAN KODE PDU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SIMPAN_KATA1:      CLR            A
            CALL            TERIMA_DATA
            MOV            @R1,A
            INC            R1
            CJNE            A,#0DH,SIMPAN_KATA1      ;SIMPAN PDU KE BUFFER MULAI 45H
            RET


;>>>>>>>>>>>>>>>>>>>>>>>SUB RUTIN PENYIMPANAN KODE PDU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SIMPAN_KATA2:      CLR            A
            CALL            TERIMA_DATA
            MOV            @R1,A
            INC            R1
            INC            R0
            CJNE            R0,#30,TRS
            JMP            TRS1
TRS:            CJNE            A,#0DH,SIMPAN_KATA1      ;SIMPAN PDU KE BUFFER MULAI 45H
TRS1:            RET

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TUNDA WAKTU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TUNDA_LONG:      MOV            R5,#010H
JJz:            CALL            TUNDA
            DJNZ            R5,JJz
            RET     
TUNDA:            MOV            R7,#100
LD1:            DJNZ            R6,$
            DJNZ            R7,LD1
            RET

;>>>>>>>>>>>>>>>>>>>>>>>>>>SUB RUTIN BANDING BUFFER DGN TABEL>>>>>>>>>>>>>>>>>>>>>>>>>>
BANDING_KATA:      MOV            R1,#45H

ULANG_BANDING:      CLR            A
            MOVC            A,@A+DPTR
            XRL            A,@R1
            JZ            SAMA
            SETB            flag_sms
            RET

SAMA:       INC            DPTR
            INC            R1
            DJNZ           R0,ULANG_BANDING
            CLR            flag_sms
            RET

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Data PDU SMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
UNKNOW:
      DB      '0FD0B23CEDA687D1A069981D468300'            ;Perintah Salah
      DB      0


L1ON:
      DB      '05CC18E8ED06'                              ;L1 on
L2ON:
      DB      '054C19E8ED06'                              ;L2 on

L1OFF:
      DB      '06CC18E86D3603'                        ;L1 off
L2OFF:
      DB      '064C19E86D3603'                        ;L2 off

STAT1:
      DB      '06C3F21AC48C01'                        ;Cek L1
STAT2:
      DB      '06C3F21AC49401'                        ;Cek L2


REPORT1:
      DB      '0FCF350BC40CB7E175500CF4748300'            ;Ok, Lampu 1 On
REPORT2:                 
      DB      '0FCF350BC40CB7E175900CF4748300'            ;Ok, Lampu 2 On
REPORT3:
      DB      '0FCF350BC40CB7E175500CF4349B01'            ;Ok, Lampu 1 Off
REPORT4:
      DB      '0FCF350BC40CB7E175900CF4349B01'            ;Ok, Lampu 2 Off

SMSSEND:
      DB      'AT+CMGS=29',13,10
      DB      0


REF_SMS:
      DB      '000000'
      DB      0


SMS_CENTER:
      DB      '001100'
      DB      0

SMSREAD:
      DB      'AT+CMGR=1',13,10
      DB      0


PESAN:     
      DB      'AT+CNMI=1,1',13,10
      DB      0


HAPUS:      DB      'AT+CMGD=1',13,10
      DB      0

END