Tutorial MCS-51 Pemrograman Port I/O

Sasaran

Setelah anda menamatkan bab ini , diharapkan anda dapat :
ð          Menjelaskan kegunaan setiap pin pada mikrokontroler 8051.
ð          Menjelaskan 4 port dari 8051.
ð          Menerangkan dua kegunaan dari port 0 untuk digunakan sebagai Data dan juga sebagai Alamat.

ð          Membuat program dgn bahasa Assembly dan menggunakan port sebagai Input maupun sebagai Output.
ð          Menerangkan kegunaan port 3 sebagai sinyal interupsi.
ð          Membuat program dengan instruksi penanganan I/O dalam 8051.
ð          Membuat program dengan instruksi manipulasi-Bit dalam 8051.


Bab ini akan menjelaskan pin-pin dalam 8051 dan kemudian menunjukkan pemrograman port I/O pada 8051 dengan beberapa contoh.




SubBAB 4.1 : Penjelasan Pin dalam 8051

Beberapa anggota keluarga 8051 (seperti 8751, 89C51, DS5000) hadir dalam berbagai kemasan, contohnya DIP(dual in-line package), QFP (quad flat package), dan LLC (leadless chip carrier), mereka semua memiliki 40 pin yang kesemuanya memiliki fungsi tersendiri, misalnya sebagai I/O, ‘RD, ‘WR, alamat, data, dan Interupsi. Namun beberapa pabrik membuat versi 20-pin dari 8051 dengan tujuan mengurangi jumlah port I/O untuk digunakan dalam aplikasi yang tidak terlalu membutuhkan banyak pin. Namun bagaimanapun juga kebanyakan pabrik membuatnya dengan kemasan 40-pin. Nah kita akan lebih berkonsentrasi pada yang satu itu.

Gambar 4-1 Diagram pin-pin dalam 8051

Dari gambar di atas kita dapat lihat, itu adalah diagram untuk kemasan 40-pin. Adapun fungsi pin dalam kemasan yang lain  misalnya kemasan 20-pin adalah merujuk pada kemasan 40-pin tersebut. Sehingga bahasan di bawah ini juga dapat digunakan untuk versi 20-pin.
Lihat sebenarnya dari ke 40 pin tersebut kita mendapatkan 32 pin yang bisa digunakan untuk Input/Output. Dibagi menjadi 4 buah port yakni P0, P1, P2, dan P3. Masing-masing port memiliki 8 pin, yang membuatnya juga disebut sebagai port 8-bit. Sedang pin yang lain digunakan untuk Vcc, Gnd, Xtal1, Xtal2, RST, ‘EA, ALE, ‘PSEN. Pin-pin terakhir itu yakni Vcc, Gnd, Xtal1, Xtal2, RST, dan ‘EA, selalu ada dalam semua versi 8051. Dengan kata lain pin-pin terakhir itu harus dihubungkan pada system untuk dapat bekerja, untuk versi-versi dari 8051. Sedang ke dua pin lainnya yakni ALE dan ‘PSEN digunakan terutama pada system yang berbasis 8031, yakni versi 8051 yang di dalam chip-nya sama sekali tidak memiliki ROM untuk kode program, sehingga membutuhkan ROM eksternal untuk dapat bekerja. Dalam rangka penggunaan Memory Eksternal tersebut, pin ALE dan ‘PSEN menjadi sangat penting. Kesemuanya akan kita bahas lebih mendalam pada bagian lain dalam bab ini.

Vcc
Pin 40 adalah digunakan sebagai sumber daya bagi 8051. Umumnya diberikan dengan tegangan +5V. Walaupun ada yang cukup diberi tegangan setinggi +3,3 Volts.

GND
Pin untuk Ground. Biasanya terhubung dengan Gnd catu daya.

XTAL1 dan XTAL2
8051 memiliki unit pembangkitan frekuensi atau oscilator mandiri di dalam chipnya. Satu-satunya yang dibutuhkan oleh unit ini adalah sebuah vibrator frekuensi atau resonator atau lebih populer disebut dengan Kristal Osilator. Sembarang kristal osilator dapat digunakan dengan jangkauan yang tidak melebihi kemampuan chip (misalnya max 24MHz untuk AT89C51). Kristal dapat langsung dihubungkan pada pin-18 dan pin-19. Namun dalam beberapa petunjuk mengenai osilator, menghubungkan dua kapasitor kecil sekitar 30PF pada kedua pin dan Ground dapat meningkatkan stabilitas frekuensi.
8051 dapat pula dihubungkan dengan sebuah pembangkit frekuensi external, sehingga unit pembangkit internal tidak digunakan. Yakni dengan menghubungkan keluaran pembangkit frekuensi eksternal tersebut pada pin XTAL1, dan pin XTAL2 dibiarkan tidak terhubung.

Gambar 4.2 (a)Koneksi X-tal dan (b)koneksi dengan sumber clock eksternal.

RST
Pin-9 ini disebut dengan pin RESET. Fungsinya sangat penting saat kita menginginkan untuk me-reset system. Pin tersebut normalnya adalah rendah, dengan memberikan pulsa tinggi maka membuat 8051 dalam keadaan reset dan kerja dimulai dari awal.
Ada dua jenis reset yang kita ketahui. Pertama adalah reset power-on, yakni kondisi reset saat system pertama dinyalakan. Hal ini sangat penting agar system dapat bekerja benar-benar dimulai dari awal, sesaat setelah semua tegangan catu daya dalam system telah sempurna. Tentu saja agar tidak terjadi logika palsu karena system kekurangan daya saat system mulai bekerja. Reset power-on ini dapat diselenggarakan dengan hanya menambahkan sedikit komponen, yakni sebuah resistor dan sebuah kapasitor.

Gambar 4-3 Contoh Power On Reset (a) dan Manual Reset (b)

Sedang reset yang lain adalah reset saat system sudah bekerja namun user (kita) menginginkan 8051 berhenti dan mengulang tugas-tugasnya mulai dari awal seperti hal dengan power-on reset. Hal tersebut biasanya digunakan 8051 nantinya untuk keluar dari dalam keadaan tidak menentu, yang biasanya disebut dengan "Hang". Reset semacam ini biasanya juga disebut sebagai "Hot Reset". Yakni menggunakan komponen PowerOn Reset ditambah sebuah saklar yang menghubug singkatkan Condensator 10uF.

‘EA
keluarga 8051 seperti 8751, 89C51, dan DS5000, semuanya hadir dengan ROM di dalam Chip itu sendiri. Namun dalam kasus yang lain, misalnya yang terjadi pada 8031 yang selalu membutuhkan ROM Eksternal. Pin ini menjadi sangat penting. Untuk 8031 pin tersebut harus dihubungkan pada Ground.
Sedang untuk Chip yang didalamnya memiliki ROM sendiri, status pin tersebut memiliki arti yang berbeda. Pastikan pin ini terhubung dengan VCC agar CPU menggunakan ROM internal sebagai ROM utama.

‘PSEN
Ini adalah pin output. ‘PSEN adalah kepanjangan dari "Program Store Enable". Pada system yang berbasis 8031 (atau lainnya) yang harus menggunakan memory / ROM eksternal, maka pin ini menjadi sangat penting. Pin yang aktif rendah ini, digunakan untuk membaca kode dari ROM, dan biasanya pin ini dihubungkan pada pin ‘OE pada ROM. Lihat bab 14 untuk lebih jelasnya.

ALE
Singkatan dari "Address Latch Enable". Ini adalah pin yang aktif high. Seperti halnya dengan ‘PSEN, pin ini hanya berguna untuk system yang berbasis 8031 (atau lainnya) yang harus menggunakan memory ROM eksternal. Pin ini biasanya dihubungkan dengan lacth semacam 74LS373 yang tujuan akhirnya adalah memisahkan P0 dari fungsinya sebagai port data dan port Alamat. Secara lebih jelas akan dijelaskan pada BAB 14.


Pin-pin Port I/O dan kegunaannya

Ada setidaknya 4 port P0, P1, P2, dan P3 yang masing-masing memiliki 8-pin, hingga kadang disebut sebagai port  8-bi . Semua port tersebut saat RESET diatur menjadi dalam keadaan tinggi, sehingga port tersetut langsung dapat digunakan sebagai port Input. Data bisa dibaca pada masing-masing port tersebut. Namun port juga bisa langsung digunakan sebagai port output. Status bisa pada port bisa langsung diubah-ubah. Namun saat menggunakan port sebagai input setelah port digunakan sebagai output, maka beberapa pertimbangan harus diambil. Hal itu akan dijelaskan kemudian.

Port 0

Port 0 memiliki 8 pin, yang kita kenal sebagai pin 32 s/d 39. Sebagai port Input/Output pin-pin ini dapat digunakan sebagai input maupun output. Namun saat digunakan sebagai port I/O biasa, maka port ini harus dihubungkan dengan sebuah resistor external yang menghubungkan setiap pin kepada VCC. Nilainya berkisar 10 Kohms. Resistor ini disebut sebagai resistor Pull-Up. Struktur hardware dari port ini adalah seperti pada chip TTL yang memiliki output "Open Colektor". Namun untuk keluarga 8051 yang terbuat dari CMOS maka port tersebut bisa dinamakan dengan "Open Drain". Dengan kata lain agar Port 0 sama fungsi dengan dengan port yang lain , maka kita perlu untuk memasangkan resistor pull-up ini.
Di bawah ini adalah kode untuk melihat apakah koneksi port 0 dan pullup nya di dalam PCB sudah baik. Yakni port harus berlogika 0, 1, dan 0 lagi demikian seterusnya.

            MOV  A,#55h
ULANG:      MOV  P0,A
            CPL  A
            CALL DELAY
            SJMP ULANG

Port 0 digunakan sebagai Input

Port 0 dirancang untuk sebuah alasan tertentu adalah tidak dilengkapi dengan resistor pullup internal. Sehingga dalam tujuan untuk menggunakannnya sebagai sebagai port input biasa maupun output biasa maka resistor ini menjadi sangat penting. Lihat Gambar 4-4. Di bawah ini juga dicontohkan dengan program, yang menjadikan port 0  sebagai input. Dengan anggapan bahwa status port 0 sebelumnya tidak diketahui, dan bukan setelah RESET. Lalu membaca status dari port 0 dan menampilkan hasilnya pada Port 1, yang dilakukan secara terus menerus.


Gambar 4-4 Port 0 dengan resistor pullup

            MOV  A,#0FFh
            MOV  P0,A
ULANG:      MOV  A,P0
            MOV  P1,A
            SJMP ULANG

Dua keistimewaan pada Port 0

Port 0 dan Port 2 adalah pasangan port yang digunakan untuk keperluan menghubungkan CPU dengan memory exkternal. Seperti yang digambarkan pada gambar 4-1, port 0 juga memiliki nama sebagai AD0 – AD7, hal itu karena sebenarnya port-0 memiliki fungsi sebagai Port Data dan Port Address. Dalam semua desain keluarga 8051, saat chip dihubungkan dengan memory external, atau peralatan lain yang lokasinya ada dalam peta memory tersebut, ada parameter utama yang sangat penting. Yakni alamat-nya, dan data-nya. Chip memory memiliki pin untuk alamat dan data tersendiri. Namun untuk 8051 dengan tujuan menghemat jumlah pin yang memang sudah terlalu banyak untuk digunakan dalam sebuah chip. Akhirnya Intel menggabungkan alamat A0 s/d A7 dengan data D0 s/d D7, sehingga ke 16 fungsi tersebut dapat dihemat dengan menggunakan 8 pin saja. Sehingga kemudian pin ini dapat disebut sebagai pin AD0 s/d AD7. Hanya dengan pin ALE, kita dapat mengetahui apakah saat itu port-0, sedang berisi data atau alamat. Dan dengan menghubungkan ALE dengan sebuah Chip TTL seperti 74LS373 kita dapat benar-benar memisahkan AD0 s/d AD7 menjadi Data D0 s/d D7 dan kemudian Alamat A0 s/d A7. Saat port tersebut digunakan untuk menguhubungkan CPU dengan memory eksternal maka fungsi port standar I/O menjadi todak berlaku. Programmer saat itu sebaiknya tidak menggunakan port 0, Port 2, serta Port 3 (bit RD dan WR) untuk digunakan sbegaai port I/O biasa.

Port 1

Dalam 8051 hanya Port 1 inilah yang murni dapat digunakan sebagai port Input/Output stndar. Secara prinsip, port 1 adalah sama saja dengan port 0. Perbedaan yang mencolok dengan port 0 adalah port 0 yang membutuhkan resistor pull-up, sementara port 1 tidak karena ternyata sudah diperlengkapi dengan resistor pullup internal. Saat setelah RESET, port dalam logika tinggi, sehingga port dapat langsung digunakan sebagai input maupun output.
Di bawah ini kita akan belajar untuk membuat kode yang port memiliki status bolak-balik (flip-flop) dari nilai #55H menjadi #055h, kembalike 55h dan seterusnya.

            MOV  A,#55h
ULANG:      MOC  P1,A
            CALL DELAY
            CPL  A
            SJMP ULANG


Port 1 digunakan sebagai Input

Untuk membuat port 1 sebagai input , maka port ini harus diprogram sebelumnya dengan membuatnya menjadi 1′s, persis yang dilalukannya saat RESET. Untuk hal ini, akan dijelaskan secara lengkap pada Lampiran C-2. Kode program berikut ini adalah mula-mula port 1 dikonfigurasi menjadi input port dengan menulisnya menjadi 1′s, dan kemudian data dibaca dari port, dan disimpan pada register R7, R6, dan R5.

            MOV  A,#0FFh      ;A = FF hex
            MOV  P1,A         ;buat P1 sebagai input port
                              ; dgn menulis semua portnya jd 1′s
            MOV  A,P1         ;ambil data dari P1
            MOV  R7,A         ;simpan pada register R7
            CALL DELAY        ;tunggu sejenak
            MOV  A,P1         ;ambil data dari P1
            MOV  R6,A         ;simpan pada register R6
            CALL DELAY        ;tunggu sejenak
            MOV  A,P1         ;ambil data dari P1
            MOV  R5,A         ;simpan pada register R5
           

Port 2

Port 2 juga memiliki total 8 buah pin, yakni mulai dari pin 21 s/d 28. Masing-masing portnya juga dapat digunakan sebagai port Input dan Output. Seperti juga dengan port 1, port ini tidak membutuhkan  resistor pull-up ekternal seperti port 0, karena port ini sudah diperlengkapi dengan resistor pullup tersebut secara internal. Setelah RESET, port sudah ditulis dalam keadaan tinggi, sehingga port dapat langsung digunakan sebagai input maupun output. Namun jika hendak digunakan sebagai input setelah menggunakannya sebagai output, maka port harus dipastikan telah diatur menjadi tinggi sebelum digunakan sebagai input.

Port 2 digunakan sebagai Input

Untuk menjadikan port 2 ini sebagai input, maka kita harus memastikan bahww port harus sudah diprogram menjadi 1′s. Seperti yang didapatnya setelah RESET. Dibawah ini adalah contoh untuk menerima data dari P2, dan mengirimkan hasilnya pada P1 secara berulang-ulang.

            MOV  A,#0FFh      ;isi A dengan FFh
            MOV  P2,A         ;buat P2 sebagai input
ULANG:      MOV  A,P2         ;Baca data P2, dan tempatkan pada A
            MOV  P1,A         ;Kirim hasil pada P1
            SJMP ULANG        ;Ulang

Dua keistimewaan pada Port 2

Sebagaimana yang kita tahu bahwa Port 2 dan Port 0 adalah pasangan port yang nantinya bisa digunakan oleh CPU untuk berhubungan dnegan memory eksternal. Dalam prosesnya, biasanya memory ekternal membutuhkan semua pin pada port 0 dan Port 2 serta pin Rd dan WR dari port 3. Dalam proses ini. programer (kita) sebaiknya tidak menggunakan port-port yang sudah terpakai tersebut untuk digunkan sbegai port I/O biasa.
Dalam proses ini pula port 2 adalah bertindak sebagai pemberi alamat  A8 s/d A15. Berbeda dengan Port 0 yang menrtindak sebagai pemberi alamat sekaligus data, AD0 s/d AD7. Hal ini biasanya digunakan untuk system yang berbasiskan 8031 dan bukan untuk system yang memiliki ROM internal seperti AT89C51, kecuali anda menganggap memory internal yang ada tersebut masih kurang.
Namun jika hubungan seperti diatas tidak digunakan oleh CPU (misalnya untuk system AT89C51), maka port 2 (dan Port 0) ini bisa digunakan sebagai port I/O biasa sebagaimana port 1 dan yang lain.

Port 3

Seperti juga dengan port-port yang lain, port 3 ini memiliki 8 pin. Port ini juga bisa digunakan sebagai port input/output biasa. Port sudah diperlengkapi dengan pullup internal. Dan setelah dalam keadaan RESET, port sudah diprogram dalam status tinggi. Sehingga langsung dapat digunakan sebagai input maupun output. Namun jika digunakan sebagai input setelah digunakan sebagai output, maka programmer harus memastikan bahwa port harus diprogram tinggi sebelum digunakan sebagai input.
Pin-pin dalam Port 3 ini memilik fungsi-fungsi khusus, yang sangat penting. Misalnya ntuk membangkitkan timer / Counter, interupsi, komunikasi serial, dan pengatur baca tulis pada memory eksternal. Lihat gamnbar 4-2 penjelsan dari port 3 ini.

P3.0 dan P3,1 digunakan sbegai pin RxD dan TxD untuk komunikasi serial. Lihat BAB 10 untuk penjelasan mengenai komunikasi serial. Sedangkan pin P3.2 dan P3.3 digunakan untuk pembangkit interupsi eksternal. Lihat bab 11 untuk penjelasan tentang Interupsi eksternal. Sedang pin 3.4 dan pin P3.5, masing-masing digunakan untuk Timer/Counter 0 dan Timer/Counter 1 yang akan kita bahasa pada bab 9. Sedang yang terakhir adalah P3.6 dan pin P3.7, adalah ‘WR dan ‘RD yang digunakan untuk membaca dan menulis  memory eksternal seperti yang akan kita bahas pada bab 14.

Seperti pada pin pada port yang lain, jika pin-pin pada Port 3 tidak digunakan sebagai fungsi khususnya, maka pin tersebut dapat kita gunakan sebagai port input ouput biasa.

Table 4-2 fungsi lain dari port3
Bit Port 3    fungsi        pin
P3.0          RxD           10
P3.1          TxD           11
P3.2          ‘INT0         12
P3.3          ‘INT1         13
P3.4          T0            14
P3.5          T1            15
P3.6          ‘WR           16
P3.7          ‘RD           17
                          




SubBAB 4-2 : Pemrograman I/O dengan manipulasi bit

Pada subBAB ini kita akan membahas instruksi-instruksi pada 8051 yang berhubungan dengan manipulasi I/O.  Kita tahu bahwa 8051 memiliki  mesin manipulasi bit yang sangat hebat, termasuk juga untuk manipulasi bit pada Port I/O. Penjelasan lebih menyeluruh akan dijelaskan pada Lampiran C-2.

Berbagai cara dalam mengakses ke-8-bit port

Di bawah ini contoh program dari contoh-contoh sebelumnya, yakni untuk mengakses semua bit dalam port 1.

ULANG:      MOV  A,#55h
            MOV  P1,A
            CALL DELAY
            MOV  A,#0AAh
            MOV  P1,A
            CALL DELAY
            SJMP ULANG

Program di atas adalah meng-flip-flop setiap bit dalam Port 1. Hal ini biasanya dilakukan saat menguji system dalam rangkaian, apakah jalur-jalur PCB sudah dibuat dengan baik dan benar. Namun tentu saja ada banyak jalan untuk melakukannya dengan singkat. Misalnya adalah program ke dua di bawah ini.

ULANG:      MOV  P1,#55h
            CALL DELAY
            MOV  P1,#55h
            CALL DELAY
            SJMP ULANG

Atau yang lebih sigkat seperti ini ..

            MOV  A,#55h
ULANG:      MOV  P1,A
            CALL DELAY
            CPL  A
            SJMP ULANG

Atau juga menggunakan fitur Read-Modify-Write seperti yang dijelaskan berikut ini.

Fitur Read-Modify-Write

Port dalam 8051 dapat diakses dengan metoda Read-Modify-Write. Fitur ini sangat menyingkat kode yang harus kita buat dalam hubungannya dengan port. Cukup menggunakan 1 buah instruksi untuk 3 proses berbeda, (a) baca port, (b) modifikasi port, dan (c) tulis kembali pada port. Contoh berikut ini adaalah menulis 01010101b (biner) ke dalam port 1. Selanjutnya menggunakan instruksi "XLR P1,#0FFh" untuk melakukan komplement, atau membalik status dari masing-masing bit pada port (flip-flop). Sehingga nantinya port akan ditulis menjadi 10101010b. Dan seterusnya.

            MOV  P1,#55h
ULANG:      XRL  P1,#0FFh     ;XOR FFh sama dengan CPL
            CALL DELAY
            SJMP ULANG

Kita tahu bahwa dengan meng-XOR nilai 55h dengan FFh akan meghasilkan AAh. Sebaliknya meng-XOR-kan AAh dengan FFh akan menghasilkan 55h. Instruksi-instruksi logika semacam ini akan dibahas lebih lengkap pada bab 7.

Kemampuan port untuk bisa dialamati secara bit

Ada kalanya kita menginginkan mengakses hanya satu bit dalam port. Sementara bit yang lain kita biarkan tidak terpengaruh. Hal ini adalah keistimewaan 8051 yang jarang dimiliki oleh chip-chip lain. Yakni kita dapat memodifikasi hanya 1 bit pot tanpa menganggi bit-bit yang lain dalam port yang sama. Misalya adalah kode berikut ini an akan men-toggle (bolak-balik/flip-flop) bit P2.1 secara terus menerus.

ULANG:      SetB P1.2         ;P1.2 = high
            CALL DELAY
            Clr  P1.2         ;P1.2 = low
            CALL DELAY
            SJMP ULANG

Atau contoh kode ynag lebih singkat adalah semacam ini ..

ULANG:      CPL  P1.2         ;komplement khusus P1.2
            CALL DELAY
            SJMP ULANG

Table 4-3 Alamat-alamat bit dalam port

P0      P1      P2      P3       Port Bit    |
P0.0    P1.0    P2.0    P3.0     D0          |
P0.1    P1.1    P2.1    P3.1     D1          |
P0.2    P1.2    P2.2    P3.2     D2          |
P0.3    P1.3    P2.3    P3.3     D3          |
P0.4    P1.4    P2.4    P3.4     D4          |
P0.5    P1.5    P2.5    P3.5     D5          |
P0.6    P1.6    P2.6    P3.6     D6          |
P0.7    P1.7    P2.7    P3.7     D7          |


Perhatikan bahwa P1.2 adalah bit ke 3 dari P1. Yakni setelah P1.0 dan P1.1, baru P1.2, dan seterusnya. Tabel 4-3 menjelaskan hal ini. Sedang contoh 4-2 penggunaannya baik model pengaksesan port sebagai data 8-bit dan pengaksesan port sebegai bit tunggal.

Contoh 4-2

Tulis program untuk melakukan hal sebagai berikut ijni.
(a)    Terus memonitir status  daro bit P1.2 sammpai tinggi
(b)    Saat P1.2 tinggi maka tulisnilai 45h pada port 0, dan
(c)    Kirim pulsa tinggi ke rendah (H-L) pada P2.3

Jawaban:

            SetB P1.2         ;buat P1.2 sebagai input
            MOV  A,#45h       ;A = 45h
ULANG:      JNB P1.2,ULANG    ;tunggi di sini smp P1.2 = tinggi
            MOV  P0,A         ;P0 = 45h
            SetB P2.3         ;sekarang P2.3 tinggi
            Clr  P2.3         ;sekarang P2.3 rendah
           
Dalam program ini, intruksi "JNB P1.2,ULANG" (JNB artinya lompat jika bit yang dimakses rendah), akan menempatkan program terus menerus dalam loop "ULANG" selama P1.2 dalam keadaan rendah. Namun saat P1.2 menjadi tinggi, maka program akan keluar dari loop dan melanjutkan menjalankan uiisntruksi di bawah "JNB".. Yakni mengri\imkan nilai 45h pada P0  dan membuat pulsa H-L pada P2.3 dengan urutaninstruksi "SetB" dan "Clr".





RINGKASAN

BAB ini dimulai dari penjelasan tentang fungsi-fungsi dari setiap pin pada port milik 8051,yakni P0, P1, P2, dan P3. Yang masing-masing memiliki 8 buah pin, dan membuat mereka juga disebut sebagai port 8-bit. Masing-masing port tersebut dapat kita gunakan sebagai port input maupun output. Sedang port 3 dapat pula digunakan sebagai pembangkit interupsi, komunikasi serial, dll. Instruksi-instruksi pada 8051 mengenai port juga kita jelaskan, termasuk juga diberikan beberapa contoh di dalamnya.

0 Response to " Tutorial MCS-51 Pemrograman Port I/O "

Welcome In Kode Blogger

Contoh Sliding Login Dengan JQuery

Disamping ini adalah contoh Sliding Login menggunakan JQuery. Login Form Disamping hanya Contoh dan tidak dapat digunakan layaknya Login Form FB, Karena Blog ini terbuka untuk umum tanpa perlu mendaftar menjadi Member

Tutorial Blog

Untuk membuatnya Silahkan : Klik Disini

Member Login

Lost your password?

Not a member yet? Sign Up!