EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected]
____________________________________________________________________________________________
8051 BASED UP-DOWN COUNTER ____________________________________________________________________________________________
HTTP://WWW.NUBIELAB.COM ATTENTION!! 1. Newbie oriented. 2. Bacaan ringan. 3. Tulisan bukan EYD. 4. Belajar santai. 5. Ngaco. 6. Whatever lah.. ^.^” ____________________________________________________________________________________________
Hi.. Kali ini kita akan membuat suatu proyek sederhana yang kadang bisa bermanfaat pada kondisi tertentu. Misalnya untuk para juragan telur kecil2-an, kalo
mo
ngitung
jumlah
produksi
telurnya
(dalam
satuan
butir)/hari
(xixixixi…kurang kerjaan”^_^), kalo pake catetan tangan kan susah, apa lagi jumlah telurnya kan bisa ribuan” (ngitungnya kiloan mas”).. nah, kalo pake alat ini, anda bisa menghitung jumlah telur sampai dengan ribuan dengan hanya memencet tombol UP dan bila anda salah hitungan atau mencetnya kecepeten jadi dua kali pencet, anda bisa pake tombol DOWN untuk mengurangi jumlah hitungan.. ato kalo anda sudah selesai menghitung dan ingin merubah kondisi hitungan dari nol lagi, maka anda tinggal pencet tombol RESET dan hitungan mulai dari nol lagi.. bagaimana? Membantu ga? Xixixixixi ^o^” yah itung2 buat latihan .. Berikut adalah manfaat yang akan kita dapat dari latihan membuat proyek ini: 1. Iseng..daripada bengong, ngelamun yg aneh2 :). 2. Belajar driver seven segmen dengan sistem scanning (multiplex). 3. Belajar interrupt external. 4. Belajar rangkaian sistem minimum AT89SXX. 5. Belajar bounchless switch. Yups, bagaimanapun juga, untuk pemula seperti saya, belajar elektronika apalagi tentang pemrograman mikrokontroler akan lebih efektif bila sembari belajar, materi yang didapat segera dipraktekan dengan visualisasi nyata.
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] Karena untuk pemula, visualisasi adalah sesuatu yang bisa menimbulkan semangat belajar. Bila anda belum pernah membuat peralatan elektronika beneran, anda bisa menggunakan software simulator yang banyak sekali tersedia di internet. Dari simulator-simulator tersebut, menurut saya, yang lumayan paling mudah dipelajari, powerfull, terkenal dan sangat banyak digunakan
adalah
Proteus
VSM
dengan
ISIS
schematics
capture-nya.
keunggulan Proteus bila dibandingkan dengan simulator-simulator lain, adalah Proteus mampu melakukan simulasi pada rangkaian analog maupun digital ditambah dengan fasilitas simulasi dan debugger untuk beberapa keluarga mikrokontroler yang terkenal seperti ARM, AVR, 8051, PIC, dsPIC dll.
Untuk
masing-masing mikrokontroler Proteus support komunikasi RS232/485, SPI, I2C, USB, Ethernet..dll. untuk display Proteus juga support dengan LCD, Seven segment, Dot matrix, Alpha numeric dll.. Untuk advanced user juga bisa membuat komponen sendiri.. Karena saya adalah beginner, maka tinggal pake aja yah..dan ga usah repot2 buat hehe.. ntar kalo dah jadi advanced user, baru buat sendiri. Misalkan buat library dan model untuk asmirandah ^0^” ga da hubungannya ya? Kelemahan dari Proteus VSM cuma satu.. kalo kita ingin punya lisensi resmi harganya sangaat mahal dan kita dikenakan biaya untuk setiap plugin yang dipakai. Tetapi, sehubungan dengan kondisi kita yang masih belajar dan ingin memanfaatkan Proteus sebagai sarana belajar dan bukan untuk tujuan komersial, anda bisa memanfaatkan Proteus versi trial yang mempunyai banyak keterbatsan. Atau mungkin untuk alternatif lainnya bisa cari versi cr**-nya dan anda bisa mencarinya di situs2 kesayangan seperti rapidsh** dan 4sh** :) saya tidak mencantumkan link, silakan cari sendiri. Sedangkan untuk kompiler yang saya gunakan disini adalah kompiler µVision3 dari Keil, “An ARM Company”.
Dulu sebenarnya Keil adalah perusahaan independent dan akhirnya Keil dibeli oleh perusahaan ARM yang notabennya adalah sebuah perusahaan produsen http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] jenis keluarga mikrokontroler yang sangat terkenal untuk critical application yaitu adalah keluarga ARM (Advanced RISC Machines).
Kompiler ini support
dengan 8051 mikrokontroler dan turunannya sampai dengan model extended 8051. Keil µVision3 merupakan kompiler standard industri yang fasilitas dan kualitas kodenya tidak diragukan lagi. Dengan C51 kompiler kita bisa menulis program dengan bahasa C dan A51 untuk assemler. Saingan Keil yang terberat adalah EWB8051 dari IAR yang merupakan kompiler standard industri yang tidak kalah terkenalnya. Berikut adalah salah satu contoh gambar dari fasilitas yang dimiliki oleh Keil µVision yaitu logic analyzer.
Untuk belajar 8051 dengan Keil kompiler saya rekomendasikan beberapa buku: 1. The Final Word On The 8051 - Matthew Chapman 1994 2. Microcontroller Projects in C for the 8051 – Dogan Ibrahim 2000 3. Exploring C for Microcontrollers A Hands on Approach 4. Embedded C – Michael J. Pont 5. Programming Embedded System I 8051 – Michael J. Pont 6. Programming Embedded System II 8051 – Michael J. Pont 7. Patterns for Time-Triggered Embedded Systems – Michael J. Pont
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected]
Buku-buku
tersebut
sebagian
besar
materi
pembahasannya
dengan
menggunakan bahasa C dan memang fitur pada Keil yang menjadi unggulan adalah kualitas kompiler C-nya dengan C51. Buku nomer satu sampai dengan nomer empat adalah buku komersial sedangkan nomer lima dan nomer enam adalah materi seminar kursus dari University of Leicester dan untuk buku nomor tujuh, bisa di download secara gratis di situs resminya www.tte-systems.com. ^_^ dah cukup sedikit aja perkenalan dengan kompiler dan simulator. NB: Google™ adalah teman terbaik bagi saya ^0^” RANGKAIAN UPDOWN COUNTER Mikrokontroler yang akan digunakan adalah keluarga 8051 dari Atmel dengan AT89S51. Mungkin untuk aplikasi sesungguhnya agar konsumsi daya dan dimensi rangkaian yang bisa ditekan, bisa digunakan jenis mikrokontroler yang lebih kecil seperti AT89XX051 dan bisa dilakukan dengan hanya merubah konfigurasi input/output pada program. Mungkin ada yang bertanya : mengapa kok masih pake keluarga 8051 AT89XXXX @~@”#@%$!*#$% kuno tau!!. Jawabanya adalah: Saya rasa untuk permulaan, dan media belajar, serta untuk mendalami komposisi kode dari mikro prosesor Intel derrivative, keluarga 8051 sangat cocok karena merupakan salah satu arsitektur Intel yang sudah bertahan selama 30tahunan dan juga masih banyak yang membutuhkan artikel tentang 8051 karena dibeberapa sekolah dan universitas masih sangat banyak yang diberikan materi tentang mikrokontroler keluarga 8051. So.. it’s doesn’t matter. Kapan-kapan saya tulis proyek dengan AVR, PIC atau ARM ^.^’. Bagi yang belon tau, 8051 masih sangat bisa untuk mendatangkan rupiah kok :) Rangkaian ini terdiri dari beberapa komponen utama yaitu mikrokontroler AT89X51 dari atmel yang berfungsi sebagai otak dari rangkaian. Saya jadi inget kata-kata
dosen
mikrokontroler
itu
saya
dulu..
didapat
“mikrokontroler
secara
berbanding
itu
bodoh!!
kecerdasan
lurus
dengan
kecerdasan
programmernya” ^_^. Xixixixi.. betul sih, dan menurut saya, sebenarnya nilai http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] esential dari pemrograman mikrokontroler adalah tepat guna, tepat sasaran dan optimal. Apalagi sekarang banyak tersedia library yang didalamnya sudah terdapat banyak sekali fungsi dan kita hanya tinggal memanggil .. nah sekarang yang cerdas yang bikin library ato yang tinggal make? @~@” kedua-duanya bisa dibilang cerdas karena yang make juga bisa dengan cerdas* memanfaatkan hal tersebut untuk nilai essential dari suatu proyek “tepat waktu”. 1.Rangkaian Sistem Minimum
Sistem minimum mikrokontroler AT89S51 membutuhkan catu daya 5V (4,55,5V). Sistem ini terdiri dari sebuah kristal 11,0592 MHz dan dua buah kapasitor 33pF untuk mendukung rangkaian osilator external. Sistem minimum ini juga
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] dilengkapi dengan rangkaian power on reset supaya terjadi reset sistem pada saat mikrokontroler ini dihidupkan. Rangkaian power on reset terdiri atas sebuah resistor 10 kΩ dan sebuah elektrolit kondensator 10µF/16V. Untuk nilai kristal pada aplikasi ini bukanlah sesuatu yang kritikal sehingga nilai kristal bisa diganti dengan nilai kesayangan misalnya 10 ato 12MHz ato yll” yll? Yang lainlainya ^_^..
2. Rangkaian Display Seven Segment
Rangkaian display seven segment terdiri dari 4buah seven segment common anoda (anoda jadi satu), 7buah resistor 330Ω, 4buah resistor 10KΩ dan transistor BC559 atau bisa tipe TUP (Transistor Universal PNP) dari masingmasing komponen yang dirangkai menjadi satu tersebut, penjelasan cara kerja secara singkatnya adalah sebagai berikut: Seven segment mempunyai 7ruas LED ditambah satu titik (dot) dalam aplikasi ini ruas titik tidak dipakai. Untuk menghasilkan tampilan angka tertentu, LED pada seven segment harus dinyalakan dengan kombinasi tertentu. Misalnya untuk angka 1 (satu) berarti LED yang dinyalakan adalah ruas b dan ruas c. sedangkan untuk angka dua misalnya, LED yang dinyalakan adalah ruas a, b, d, e, dan ruas g. Mungkin ada yang belum tahu ruas seven segment kombinasinya seperti apa? Baiklah karena artikel ini dari newbie dan untuk newbies maka saya akan lampirkan referensi konfigurasi pada masing-masing ruas pada seven segment seperti pada gambar berikut (nemu di internet): http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected]
Untuk rangkaian asli didalam package tersebut adalah sebagai berikut (common anoda).
Bisa dilihat bahwa kutub anoda dari led array tersebut tergabung menjadi satu sedangkan kutub katoda berkebalikan atau mempunyai konfigurasi terpisah. Dengan kondisi rangkaian tersebut, untuk menyalakan LED harus diberi logika 0 ato 1? Yups.. LED harus diberi logika 0 atau untuk standard level TTL (Transistor Transistor Lgic) berupa tegangan 0Volt. Apakah untuk menyalakan tiap satu LED tersebut bisa langsung dihubungkan dengan logic satu atau pada TTL sebesar 5V? Jawabannya adalah bisa.. TAPI!! LED standard tidak akan bertahan lama paling hanya akan bertahan beberapa menit atau bahkan detik. Mengapa? Karena LED standard mempunyai arus kerja normal dari 10mA sampai dengan 20mA. Jadi, dari tegangan 5Volt untuk mendapatkan arus 15mA (diambil pada tengah
arus
kerja
LED)
bisa
di
gunakan
hukum
ohm
biasa
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
(tanpa
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] memperhitungkan tahanan internal LED dan drop voltage pada LED (hitungan kasar)) 15mA=5V/R R=5V/15mA ingat satuan Volt dan mA jadi hasil akhirnya = 333.333Ω nah ini hasil akhir hitungan kasar tersebut, dan dipasaran untuk nilai R seperti hasil perhitungan diatas tidak akan kita dapatkan secara persis dan solusinya bisa diambil nilai yang teredekat yang beredar dipasaran yaitu 330Ω atau mungkin ada yang mau repot-repot ngitung seri paralelnya ^_^ ingat.. didunia elektronika praktis, tidak ada yang sempurna dan 100% bahkan kadang harus didapat dengan trial dan error. Nah, sekarang kita sudah tahu fungsi dari ketujuh buah resistor yang dipasang pada masing-masing ruas seven segment tersebut. Mungkin ada yang bertanya mengapa seven segment-nya ada 4 kok resistornya cuma ada 7? Sip.. betul sekalii, bahwa dari ke-empat seven segment tersebut cuma dibutuhkan 7buah resistor pembatas arus. Kenapa? Karena bisa dilihati bahwa antara ke-empat input seven segment digabungkan menjadi satu dan yang terpisah adalah pada masing-masing pin common-nya saja. Bagi yang belum tahu, ini disebut dengan teknik scanning multiplex. Inti dari teknik tersebut adalah adanya device atau peralatan yang jumlahnya lebih dari satu, dan ada saklar (address) dari masingmasing peralatan (device) untuk memilih (select). Pada aplikasi ini yaitu dengan cara menghidupkan dan mematikan masing-masing seven segment tersebut (dengan menyambung dan memutus cartu daya) secara bergantian. Walaupun input katoda pada masing-masing seven segment digabung menjadi satu, tetapi penyalaan masing-masing seven segment dilakukan secara bergantian dengan kecepatan diatas rata-rata kecepatan frame mata manusia (20Hz+). Bila pergantian penyalaan seven segment dilakukan dengan timing yang lambat, maka proses pergantian akan terlihat oleh mata manusia dan tampilan seven segment akan keliatan berkedip (flicker). Tapi perlu di ingat bahwa secepat apapun pergantian itu, kalo SuperMAN yang liat pasti juga keliatan berkedip @~@” xixixixi ^_^.. kalo belajar terlalu serius ntar bikin pusing,” harus banyak bercandanya.. learning by joking” iyo to gan?
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] Ke-empat
transistor
BC559
berfungsi
sebagai
saklar
elektronik
dengan
mengaplikasikan fungsi transistor sebagai saklar. Kenapa harus pake transistor? Kok ga langsung aja? Yups, coba bayangkan… sulit ga? ^_^ mengingat common harus dihubungkan dengan current source dan mikrokontroler mempunyai resource beban total sebesar 76mA (semua pin) dan satu pin sebesar 36mA dan kebutuhan satu seven segment dengan konsumsi daya terbesar (angka 8) sebesar kira2 15mA*7 = 105mA kesimpulannya ga cukup! Kalo cuma satu led untuk current source masih memenuhi, tapi alangkah bijaksananya bila tidak membebani mikrokontroler sebagai current source, karena bisa mempengaruhi kestabilan mikrokontroler tersebut. Transistor BC559 difungsikan sebagai saklar, berarti hanya dua keadaan dari transistor ini yang dipakai yaitu keadaan saturasi dan cut-off. Mengingat transistor BC559 merupakan jenis transistor PNP, maka untuk mengkondisikan transistor kedalam kondisi cut-off bisa dilakukan dengan cara memberikan logika 1 atau VCC (5V). Kalo dalam design ini dibiarkan mengambang (floating) cuman dapet dari port switch. Dalam praktek bisa, tetapi bila ingin menambahkan R pull-up dari basis ke VCC 5V bisa aja.. dan untuk ukuran R tersebut = 10*Rb disini nilai Rb 10K jadi nilai R pull-up = 100K.
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] 3. Pogram Program pada proyek kali ini akan menggunakan bahasa assembler, sehingga bagi yang tidak mempunyai kompiler C seperti Keil masih tetap bisa melakukan compile pada program ini. Saya sendiri tetap menggunakan Keil yang bisa digunakan baik untuk pemrograman dengan bahasa assembly maupun C. updown.uV2 adalah file project untuk Keil, sedangkan updown.asm adalah file code program ini yang akan di bahas disini. Kalo tidak punya keil uvision3 program updown.asm bisa di compile dengan: ASEM-51 (Versi IDE..MIDE)..opcube.com Reads’51 dari RIGEL ..rigel.com
gratis
gratis dll..
Konfigurasi program adalah sbb: Tombol UP dihubungkan pada pin interrupt external 0 (p3.2) sedangkan tombol DOWN dihubungkan pada interrupt external 1 (p3.3). Tampilan seven segment sebanyak 4 digit dengan sistem multiplex dengan data pada port0. Port untuk select pada multiplexing terdapat pada port 2.0-2.3 (digit1-digit4). Port0 tidak perlu diberi / dikondisikan high (pull up) karena port0 akan digunakan sebagai current shink bukan current source, sehingga dengan konfigurasi open drain (FET di dalam port0) yang tanpa di hubungkan dengan resistor pullup sudah bisa digunakan sebagai saklar (current sink) untuk menyalakan seven segment (common anoda). Kelemahan dengan menggunakan interrupt yaitu tombol yang digunakan harus (bounchless) - ga mantul2* xixixi ^_^" atau tombol dengan kualitas baik. Karena bila menggunakan tombol dengan kualitas jelek, saat tombol ditekan satu kali, tombol akan memberikan beberapa logika :) ato solusi yang lain
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] adalah dengan menggunakan rangkaian de-bouncing circuits yang bisa dibuat dari rangkaian RC (sebagai penunda external) untuk yang lebih baik lagi bisa ditambah
schmitt
multivibrator..
kita
trigger bisa
atau lihat
bisa pada
juga
dengan
gambar
rangkaian
dibawah
ini
monostabil
(dicomot
dari
www.ikalogic.com) males mo gambar ndiri :)
Rangkaian
diatas
adalah
rangkaian
standar
sebuah
saklar
yang
akan
dihubungkan ke mikrokontroler sebagai masukan logika. Sedangkan gambar disampingnya adalah gambar logika yang diterima mikrokontroler sewaktu dan setelah saklar ditekan. Bisa dilihat bahwa terjadi beberapa kali error logika yang diterima oleh mikrokontroler (lebih dari satu). Sedangkan gambar rangkaian saklar yang diberi RC penunda adalah sebagai berikut:
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected]
Silakan diamati perbedaan dengan rangkaian pertama. Bisa dilihat bahwa pada rangkaian kedua ditambah dengan capasitor sehingga setelah saklar ditekan ada waktu jeda antara kondisi logika high ke kondisi low dan sebaliknya tetapi untuk perubahan kondisi dari high ke low lebih singkat dari perubahan kondisi low ke high. Kenapa? Karena pengosongan kapasitor pada kondisi ini akan lebih cepat dari proses pengisian kapasitor sehingga terjadi delay dalam waktu tertentu tergantung dari besar R dan C. Buka-buka lagi buku elektronika analognya ato vademekum elektronikanya ..^_^”. Walaupun tidak terjadi beberapa kondisi logika
yang
tidak
seharusnya,
tetapi
masih
ada
satu
kondisi
yang
memungkinkan terjadinya error yaitu kondisi ambang yang pada gambar ditandai dengan warna kuning. Nah, walaupun rangkaian diatas bisa juga daripada ga dikasih sama sekali, tetapi ada satu rangkaian yang lebih baik yaitu ditambah dengan schmitt trigger.. rangkaiannya bisa dilihat pada gambar dibawah ini:
Schmitt trigger berfungsi untuk mencegah logika error saat kondisi ambang karena dengan schmitt trigger maka rangkaian saklar hanya akan memicu mikrokontroler dengan dua kondisi yaitu kondisi high dan low tanpa kondisi atau logika ambang. Sebenarnya banyak sekali cara untuk mengakali kondisi bouncing saklar dan diantaranya seperti yang saya sebutkan sebelumnya.. tambahan satu lagi ^.^” pake monostabil multivibrator juga bisa.
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected]
3. Penjelasan Pogram Baiklah, sekarang pembahasan menuju ke penjelasan program yang bisa di lihat pada file updown.asm. Program tersebut ditulis dengan menggunakan bahasa assembly dan bukan bahasa C karena menurut saya program ini masih terlalu pendek dan sangat simpel sehingga bisa diselesaikan dengan bahasa assembly dengan mudah. Selain itu untuk permulaan, bahasa assembly sangatlah cocok karena
bahasa
assembly
langsung
berhubungan
dengan
arsitektur
mikrokontroler yang digunakan sehingga waktu memprogram tanpa sadar atau dengan sadar kita juga sedang belajar arsitektur mikrokontroler. Yah, mari kita simak programnya bersama2 : ;#include <sfr51.inc> ;deklarasi SFR untuk compiler Reads'51 ;$mod51 ;deklarasi SFR untuk compiler ASEM-51
Kedua baris diatas digunakan untuk deklarasi SFR untuk kedua kompiler Reads'51 dan ASEM-51 sedangkan bila menggunakan Keil tidak perlu karena sudah otomatis pada setingan project (pemilihan mikrokontroler) tetapi hal ini tidak berlaku untuk penggunaan bahasa C pada keil. reset_ intX0_ intX1_ prog_ PortSeven temporaryL temporaryH
equ equ equ equ equ equ equ
0x0000 0x0003 0x0013 0x0030 p0 23h 24h
;Power ON reset reset vektor pada 0000h ;vektor interrupt external 0 ;vektor interrupt external 1 ;alokasi memori program mulai 30h ;port 0 sebagai output data untuk seven segment ;register temporary (LSB) untuk nilai updown ;register temporary (MSB) untuk nilai updown
tujuh baris diatas adalah equasi nama atau persamaan pemanggilan agar mudah bila ingin mengganti nilai dan mempercepat proses maintenance program (tidak menambah pemakaian memori karena hanya digunakan oleh kompiler). org ajmp org ajmp org ajmp org
reset_ main intX0_ count_up intX1_ count_down prog_
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] tujuh baris diatas berfungsi untuk inisialisasi alokasi memori pada masingmasing even. org reset_ (00h) berfungsi untuk inisialisasi sewaktu program pertama kali dijalankan atau sewaktu terjadi reset pada sistem dan program akan melompat ke label main. Org intX0_ (03h) berfungsi untuk inisialisasi alamat vektor interrupt external 0 dan bila terjadi interrupt pada external 0 maka program akan melompat pada label count_up. Proses ini sama dengan org intX1_ (13h) untuk interrupt external 1 dan akan melompat pada label count_down. Sedangkan untuk org prog_ (30h) berfungsi untuk inisialisasi rutin
program utama (mulai alamat 30h). main: setb ex0 setb ex1 setb ea setb it0 setb it1 mov temporaryL,#0 mov temporaryH,#0 loop: jb p1.7,looping mov temporaryH,#0 mov temporaryL,#0 looping: acall hexbcd acall sevensegment sjmp loop
;aktifkan interrupt eksternal dengan cara perbit ;biar mudah dipahami atau bisa juga dengan mov PCON,# ;aktifkan master interrupt enable ;set interrupt pada falling edge atau proses ;perubahan dari kondisi high ke low ;berikan nilai 0 pada MSB maupun LSB untuk perhitungan ;nilai updown pada power on / reset. ;pin untuk reset ke nilai0 (nilai awal) aktif low. ;jika tombol reset ditekan maka berikan nilai 0 pada ;MSB dan LSB nilai perhitungan ;pada kondisi endless loop masukkan proses utama yaitu ;rutin konversi hex to BCD dan penyalaan seven segment ;endless loop mubeng nganti mumet (^_^)”
Main adalah rutin utama program. Didalam rutin main terdapat proses inisialisasi interrupt external untuk input saklar (up dan down). Sedangkan rutin loop adalah rutin utama yang akan dikerjakan secara terus menerus oleh mikrokontroler. Sebagian besar alokasi CPU dan waktu dihabiskan disini dengan aktifitas ”endless loop” atau ”infinite loop” sembari melakukan pemanggilan pada subrutin pendukung sistem seperti rutin untuk perhitungan konversi nilai hex ke nilai BCD dengan label hexbcd dan rutin untuk menyalakan seven segment dengan label sevensegment. Nah, untuk keterangan rutin yang lainnya silahkan pelajari sendiri... ato kalo bingung silahkan ungkapkan kebingungannya pada kolom komentar at www.nubielab.com pada postingan ini. Jika anda hanya dapat single file updown_counter.pdf ini, silahkan kunjungi www.nubielab.com untuk mendapatkan program dan schematics komplitnya..
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] Extract Prog(KEIL)+SIM(ISIS_Proteus)_.rar untuk program lengkap dan schematics.
File
updowncounter.dsn
adalah
file
ISIS
PROTEUS
SIMULATION dan bukan merefleksikan rangkaian sesungguhnya (hanya untuk simulasi program). Sedangkan schematic real tersedia dalam format JPG. Project ini masih belum sempurna karena hanya sebagai media latihan.. Contoh: karakter ”0” pada ribuan ratusan dan puluhan masih belum dihilangkan bila nilai satuan yang ditampilkan. silahkan sempurnakan sendiri sembari mengasah kemampuan temen-temen dalam pemrograman mikrokontroler dan disain hardware. Happy programming ☺ Regards, Herlambang Aribowo
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.
EleCTRONICs&MCU_PROJECTS(@.^)”SERIES_ CP :
[email protected] Lampiran: 1. Schematics komplit
2. Proteus ISIS capture
http://www.nubielab.com Tempat untuk berbagi, berdiskusi dan belajar bersama.