| 27 komentar ]

Kita akan mempelajari CDI programmable..

CDI
mari kita lihat dulu dari fungsi CDI itu sendiri, mungkin bagi anak2 otomotif sudah tahu, bagi yang belum, neh Q kasi tau.. CDI(Capasitive Discharge Ignition) adalh rangkain elektronika pada Motor yang berfungsi untuk mengatur perapian(ignition) dengan prinsip Capasitive discharge (pengosongan kapasitor).

Keuntungan
Keuntungan dari CDI yang tepat pengapiannya adalah:

  1. meningkatkan tenaga,
  2. Effisiensi BBM sehingga lebih irit,
  3. Tegangan keluaran sama dengan muatan dari kapasitor penyimpanya
Kapasitif Discharge
nah dari namanya sudah kelihatan kan? yang dimaksud disini pengosongan kapasitor(Capasitive discharge) disini adalh bahwa Pengapian terjadi ketika pengosongan kapasitor, bukan pada pengisianya.
lebih jelasnya lihat gambar ini!

Dari gambar terlihat bahwa kapastor di isi oleh muatan listrik dari spull (Atas). nah ketika pulsa dari pulser(Bawah) High"1" maka akan meng-Short Circuit-kan Kapasitor, sehingga kapasitor akan dikosongkan(Discharge). nah proses pengosongan ini menyebabkan busi (spark) mengeluarkan api, karena memang proses pengosongan ini melewati spark.

Map (Peta) Pengapian
Yang dimaksud map disini buka peta(Globe) tapi Curva (grafik) waktu pengapian terhadap kecepatan putaran mesin(RPM). berdasarkan kenyataan bahwa pengapian pada kecepatan rendah harus lah pada sudut BTDC sekecil mungkin, agar bahan bakar terbakar keseluruhan dan terkompresi(tekan) semaksimal mungkin. tetapi dalam keadaan motor berkecepatan tinggi, maka pengapian sebaiknya dilakukan pada suatu sudut tertentu sebelum TMA, nah ini karena adanya momentum dari gerakan mesin yang semakin besar dan juga periode perambatan Api itu sendiri.. artinya pada sudut kecil, motor akan menghasilkan gaya yang lebih karena kompresi yang lebih pula serta pembakaran yang maksimal, pada keadaan RMP tinggi, sudut dinaikan agar tidak meleset pengapiannya, sehingga bahan bakar tidak terbuang sia2.
Lihat gambar!
Keterangan:
  1. Pengambilan BBM yang sudah berbentuk uap, dari karburator
  2. Kompresi (tekanan) Uap BBM
  3. Pembakaran Uap BBM yang sudah termampatkan (tertekan)
  4. Pembuangan gas hasil pembakaran
Titik hitam adalah titik puncak piston
Lekukan segitiga adalah Titip pickup pulser

Program

Nah program ini sendiri berfungsi untuk mengatur sudut pengapian, yang dimaksud programmable disini adalah bahwa timing pengapian dapat diatursesuai kehendak pembuat, sehingga bisa disesuaikan dengan kendaraan yang dimiliki.
Curva pengapianya saya buat sbg berikut


program ini saya kutip dari Transmic.net tentu dengan beberapa modifikasi. rangkain ini menggunakan microcontroler keluarga 8051 yaitu AT89c2051 karena harga yang murah dan system sudah mencukupi untuk rangkaian ini.. program ini Q sesuaikan dengan data dari file Excel yang saya buat untuk perhitungan tabel. bagi yang menginginkan data selengkapnya silakan Contact saya! aku akan sangat senang jika bisa membantu.....

Schema Rangkaian CDI Programmable AT89c2051


;~~~~~~~ Program CDI Programmable AT89c2051 Oleh SiSUnar~~~~~~~

;Programm at89c2051 sebagai pengendali pengapian Motor
;Penting!!!!! Chrystal 24MHz !!!!!!!!!!!!!
;pemicu by input Comparator pada pulsa negative(P3.6)
;Output SCR pada P3.5 pin 9 active rendah Untuk transistor PNP
;dengan perhitungan Peta pengapian
;pengukuran RPM pada 400µs steps, penghitung delay pada 50µs
;dimodifikasi oleh: si sunar www.azwraith.tk mail to:portalforfuture@yahoo.c
o.id

timer EQU 9ch ;isian awal timer interrupt(50µs@24MHz) rumus==>>timer=256-(1000*"
dasar timer"/(1000000000*(12/kristal))
SCR EQU P3.5 ;Pin 9, output that fires SCR, active LOW
magnet EQU P3.6 ;output comparator. Input pin 12 = +, pin 13 = -
test EQU P1.2 ;test untuk melihat output comparator

; R0 menghitung 10*50µs = 500µs SCR control
; R1 menghasilkan periode 8*50µs = 400µs
; R2 menghitung lebar revolution antara two interupsi pada tahap 400µs
; R3 Menghitung delay yang dibutuhkan (sinyal pickup untuk pengapian) pada tahap 50µs

ORG 0 ;menjalankan program pada alamat awal flash
AJMP start ;ke inisialisasi


org 00Bh ;alamat vektor interupsi timer0 8051
AJMP TIMER ;ke timer interpusi

;~~~~~~~~~~~~~Inisialisai~
~~~~~~~~~~~~~~~~~~~~~~~~~~~
start: ;Program dimulai
MOV SP, #45h ;menginisialisasi tempat stack (posisi pada Flash Memori)
MOV TH0, #timer ;inisialisasi timer0 50µs sesui dengan rumus==>>timer=256-(1000*"
dasar timer"/(1000000000*(12/kristal))
MOV TL0, #timer
MOV TMOD, #22h ;mode timer diseting ke "timer internal mode 2"
MOV IE, #82h ;Mengijinkan penggunaan interupsi timer0
SETB TR0 ;Memulai timer0
MOV DPTR, #TabelPetaPengapian ;memilih tabel "TabelPetaPengapian"


;~~~~~~~~~~~Seting Awal Variabel~~~~~~~~~~~~~
MOV R0, #01h ;menghitung 10*50µs = 500µs SCR control. R0 = 1 berarti scr mati
MOV R1, #08h ;menghasilkan periode 8*50µs = 400µs.
MOV R2, #FFh ;menghitung lebar revolution antara two interupsi pada tahap 400µs. mencegah pengapian yang tidak tepat saat memuali program
SETB PT1 ;prioritaskan interupsi timer0
SETB magnet ;seting awal magnet agar tidak dianggap sinyal dari Pickup

;~~~~~~~~~~~~~~~~~~~~~~~
~~~Loop Utama~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mainloop:
JB magnet, mainloop ;menunggu pulsa negative pada magnet
CLR test ;comparator 0, ini adalah pulsa negative pickup
MOV R3, #0 ;isian awal R3 = 0, akan berbeda nanti sesuai delay yang dibutuhkan
MOV A, R2 ;Isi R2 terdapat jumlah 400µs antara dua pulsa pickup
ADD A, #01h ;jika RPM > 588(R2 < r2 =" 255)" r2 =" 255">
;~~~~~~~~~~~~~~~~~jika
RPM diterima, perbolehkan pembakaran~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MOV A, #FFh ;Turunkan upside down (R2 = 255 reads first value, 254 second and so on)
CLR C ;Pengurtangan tanpa meminjam
SUBB A, R2 ;isi periode (jumlah 400µS)(R2) dari interrupt terakhir (selisih antara 2 putaran)
MOVC A, @A+DPTR ;Memilih data sesuai tabel
MOV R3, A ;kirim data ke penghitung delay, delays ignition R3*50µs
label6:
MOV R1, #08h ;8*50µs = 400µs, needed in interrupt
MOV R2, #0 ;for next period count, counts up every 400µs in interrupt
MOV TL0, #FEh ;make sure next interrupt comes soon
wait:
JNB magnet, wait ;wait until pickup pulse is over
SETB test ;comp output HIGH
MOV DPTR, #TabelPetaPengapian ;Data pointer to TabelPetaPengapian
AJMP mainloop

;~~~~~~~~~~~~~~~~~~~~~~~~~
~~~ Timer 0 Interrupt every 100µs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TIMER:
PUSH PSW
CPL P3.1 ;kedipkan Pin3 setiap 50µs, untuk mengetes jika µProsesr jalan dengan baik
DJNZ R1, label1 ;disini perulangan 8*50µs
MOV R1, #008h ;go through loop every 8*50µs (400µs)
CJNE R2, #0FFh, tambahR1 ;jika R2 = FF (periode maximum) jangan dinaikan lagi..
AJMP label1
tambahR1:
INC R2 ;dasar > 588/min (R2 < r3 =" 0" s =" 500µs" r0 =" 0">
;~~~~~~~~~~~~~~~~~~~~~~~~~
~~ Akhir Subrutin Interupsi timer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


;~~~~~~Data dibawah sesuai Tabel Peta pengapian, Harus diisi sesuai dengan data~~~~~~~~~~~~~

TabelPetaPengapian:
DB 139,138,138,137,137,136,13
6,135,134,134,133,133,132,131,131,130,130,129,129,128
DB 127,127,126,126,125,125,12
4,123,123,122,122,121,121,120,119,119,118,118,117,116
DB 116,115,115,114,114,113,11
2,112,111,111,110,110,109,108,108,107,107,106,105,105
DB 104,104,103,103,102,101,10
1,100,100,99,99,98,97,97,96,96,95,95,94,93
DB 93,92,92,91,90,90,89,89,88
,88,87,86,86,85,85,84,84,83,82,82
DB 81,81,80,79,79,78,78,77,77
,76,75,75,74,74,73,73,72,71,71,70
DB 70,69,69,68,67,67,66,66,65
,64,64,63,63,62,62,61,60,60,59,59
DB 58,58,57,56,56,55,55,54,53
,53,52,52,51,51,50,49,49,48,48,47
DB 47,46,45,45,44,44,43,43,42
,41,41,40,40,39,38,38,37,37,36,36
DB 35,34,34,33,33,32,32,31,30
,30,29,29,28,27,27,26,26,25,25,24
DB 23,23,22,22,21,21,20,19,19
,18,18,17,17,16,15,15,14,14,13,12
DB 12,11,11,10,10,9,8,8,7,7,6
,6,5,4,4,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

END

Post ini Hanya untuk Pembelajaran semata, saya berharap tidak ada budaya membajak dan apalagi menganggap ini suatu CopyRight... dan tolong dikembangkan, Dibenarkan jika ada yang salah, mungkin dari sisi otomotif saya yang kurang memadai karena saya ini anak Elektro. terimakasih!
pertama2 mohon maaf kepada Produsen2 CDI programable yang ada sekarang, bukan maksudQ untuk melukai hatimu(weleh) , karena rasanya sayang jika suatu hal kecil yang sangat berguna ini tidak ada yang mau mempublikasikan, Maaf

Read More......
| 0 komentar ]

Sudah Beberapa Bulan ini aku maen DotA Pake Lich Trussss
Ternyata Lich hero yang hebat, skillnya cukup keren, tapi cuma effectif Buat musuh yang sama tipenya, misalnya mele smua, ato range semua, itu agar chainya bisa kena beberapa kali..

Awalnya aku cuma maen Lich karena udaranya dingin aj,keknya pas tuh dingin2 pake lich, nah ternyata aku malah dewa, ampe godlike trus, stelah itu aku maenya sering pake hero2 Nukers(hero skill)..

neh ku kasi tau cara pake Lich..
pertama pastikan kamu pilih heronya akhir2 aj, biar musunya tidak memilih hero lawan lich kek si Sacred warrior(Huskar),leviatan(tidehunter)ma Lord of Avernus(abbadon). karena ga bkalan menang lawan dua hero itu.

usahain kamu maen di lane atas ato bwah, karena jika maen ditengah akan sulit menggunakan chain frostnya, kecuali kamu sudah pandai maen pancing supaya heronya mengejar kamu, tapi itu sulit, karena kamu harus punya sedikit nyawa..

pastikan kamu ambil skill frost nova & dark ritual, jika musuhnya melee ambil frost armor 1 level dlu aj!

beli Boot Of Speed dulu ama Ancient's Tango, itu saja sudah cukup, klo ada uang lagi beli Iron wood branch*(buat bikin mekansm)

oke sekarang maju!

gunakan frost nova untuk last hit creep gpp, kan ada Dark Ritual, jadi urusan mana santai aj!

Tekhnik menyerang!
usahakan kamu gunain frost nova ketika hero musuh dekat dengan creep yang kita mau last hit! setelah kena effet slownya, kamu pukul2 deh tuh hero, si hero pasti lari soalnya, nah kamu pasti akan dikejar creep karena kamu memulai memukul hero, usahain kamu ga kena pukulan creep tersebut dengan menghindar! baca keadaan musuh, ketika musunya cuma punya sedikit creep, dan kita punya banyak, kamu frost tuh hero supaya slow dan creep kita juga bisa melawannya, lalu kamu kejar juga pasti!
lakukan langkah ini berulang kali!

Teknik bertahan!
jika kamu ambil frost armornya, kamu pakai terus aj, supaya kalo ada hero mele yang mengejar kita akan kena slow, setelah mereka mengejar kita, mereka pasti akan mundur ketika kira2 kita dekat dengan tower, nah ini kesempatanmu gunaikan frost nova, trus serang dia pass dia mundur!

jika sudah cukup uangnya, kamu beli stout sheld(buat block damage creep ketika kita mengajar hero musuh). dan beli Blades of attack(buat bikin Phase boot)

perlu diingtat!, klo sudah hampir level 6, usahakan mengirit mana, ini akan digunakan untuk chain frost nya nanti.

chain frost lich sangat Efective jika jumlah creep musuh ckup sedikit, tapi jgn samapai tidak ada, 3 creep sudah sangat bagus. oke lakukan pembantaian! tunggu kira2 hero musuh ditengah-tengah creep musuh, atao dgn memancingnya klo sudah ditengah atau didepan juga gpp, langsung gunakan chain kamu, setelah itu frost nova! dan jagan lupa serang dia dengan serangan biasa! dapat dipastikan musuh akan sekarat, atau mungkin mati klo hp msuh dibawah 700/600.. tapi ingat! jgn menggunakan chain sembarangan jika hero musuh punya skill win Walk kek Gondar, Bone Clinkx, atao hero blink Kek antimage sama Queen Of Pain

Setelah kamu bisa bunuh hero, kmu usahain jgn balik kerumah(Funtain), beli saja Empty Bottle, ato ring of regeneration, ini agar level kamu selalu lebih tinggi dari msuh kamu. tapi coba ngirit mana dulu untuk mengantisipasi serangan musuh! kumpulin uang sebanyak2nya!

setelah uang terkumpul, kmu beli mekansm ato vanguard! jika musuh kamu hero skill lebih baik beli vanguard dolo, jika musuhny hero attack beli mekansm!

setelah itu bisa lanjutin beli soul booster untuk dijadikan aghainm ato Euls ato Guinzoo, tergantung musuhnya, klo musuhnya kira2 sulit kena chain(bisa blink ma Wind Walk) maka lebih baik beli Guinzoo aj, selain itu terserak kamu! kembangin sesukamu!

Jadikan Lich Kamu Bnar2 Frost Lord....


Read More......
| 1 komentar ]

Oke Pren, kali ne, kita akan membahas tentang Komponen Elektronika..

Bagi Yang dah tau ga perlu baca deh keknya, jdi Posting yang satu neh buat yang belon tau aj..
Didalam alat2 elektronika pasti ada yang Namanya Komponen Elektronika(namanya aj komponen)..

Mari kita sebutkan satu demi semuanya:

Ada komponen 2 tipe menurut kegunaanya, yaitu Aktif dan Pasif.
Komponen Aktif
itu yang tugasnya untuk menggerakkan komponen2 Laen dalam suatu rangkaian. yang tergolong dari komponen ini adalah: Transistor(FET), SCR(Switch controlled Rectifier), IC(integrated Circuit)
Komponen Pasif itu adalah yang digerkakan oleh komponen aktif tadi, yang tergolong adalah: Capasitor(Condensator), Berbagai macam kumparan(kek relay, Bla bla bla), Resistor(Tahanan, bukan napi lho!@!! wkwkkwkwkw), dioda(rectifier/Perata), trus kek lampu, trafo, dll

oke kita bahas satu demi banyak, tapi tidak semuanya, soalnya bnyak banget coy....

Transistor. nah, komponen yang satu ne adalah komponen aktif paling simple bro, cra kerjanay seh ckup mudah, tapi maaf, klo dijelaskan dsni pasi bisa nyampe 5 page lebih. si Transistor adalah komponen dari bahan semikonduktor kek SILICON, GERMANIUM dll, tapi kebanyakan sih dari SILICON. (bahan yang bisa jadi konduktor, bisa jadi isolator, tergantung keadaan pada salah satu elektrondanya(Kutub)). nah, jadi komponen inilah yang jadi dasar IC2 Komplex, yah karena sifatnya yang plin-plan tadi. bahkan sampai ke Prosessor jaman sekarang pun tersusun dari ini lhoh, tapi Ber Triliun2, klo ditulis bisa banyak bgt nol-nya(wow), bneran, tanya aj ma pembuatnya!!. transistor ini ada dua jenis, NPN dan PNP, lhoh kok bsa? yah ini karena perbedaan penyusunan bhan semi konduktornya tadi, NPN adalah klo bahannya yang banyak terdiri dari semikonduktro Tipe N(negatif)(bahan semi konduktor yang kelebihan beberapa elektron, weit ga sah dibahas ya? rumit neh, nanti pusing lhoh?). Klo tipe PNP, berarti tersusun dari dua bahan tipe P/postitf(bahan semikonduktor yang kekurangan elektron)

SCR(switch Controlled Rectifier). nah, dari namanya ketaHuan kan? ini seh seperti saklar bro, tapi tidak dipencet pake tangan, tapi pake aliran listrik pada salah satu kakinya. yang tau kan prinsip kerja saklar? kek gitu lah kurang lebih.. komponen ini dibuat dari semikonduktor juga lhoh.

IC(integrated Circuit).

Read More......
| 0 komentar ]

Bagi anak2 TI ma Elektro Pasti tau yang satu ne.
gni neh Q jlasin, µController Itu semacam Komputer (Wow), tp jgn salah Anggapan! µController cuma hampir sama aj, tapi klo Komputer tentu lebih lengkap, tapi bisa dikatakan Microcontroller adalah cpu yang kecil..
dengan microcontroller kita bisa buat yang otomatis2 g2 (tergantung Otak lo dalam biki programnya yang jelas) kek robot(wow), mobil jalan ndiri(asik), alaram bla bla bla(wuih), Kunci2 digital, (Fuh bnyk bngt).. tergantung kreasi kakak aj!

Micro controller tuh Suatu Chip IC (integrated Circuit) yang didalamnya udah complit (jamu X). Yah Kek komputer Gitu, ada apaan dlam CPU? coba tbak! heheh

yang pasti ada Processor, Memori(RAM), Hardisk(Storage), Dan IO (input output). huih... Ckup dngn Mereka aj udah bisa dianggap CPU. Di µController juga sama, ada Processor, Input output, Memori, Flash(penyimpan Program), tapi uda dibungkus(nasi) dalam 1 chip IC (Serangga, ewe emang tampangnya kek serangga, banyak kakinya kok)...

ada banyak sih macam2 µController (agak Lupa).. yang membedakan adalh Programnya, cara flashnya dan entah apa lagi ya? oh ya, tau ga Flash itu apa? Flash itu gula campur kelapa itu loh(geplak).. Bukan lah,

FLASH adalah hardisk tapi bukan Disc(itulah bedanya Flash ma Disc) Flash itu terbuat dari rangkain digital aj, klo disc ada Piringanya Buat menyimpan, yah kek kaset g2,. trus flash disc paan? nah itu dah yanga tidak abis pikir, flash disc yang biasanya kita liat tuh harusnya kasi nama flash memori aj, soalnya kan ga ada piringnya. data pada Flash bibuat agar Read Only, ROM(read Only Memori), yah biar programnya ga mudah hilang gitu, byangin aj klo Programnya ilang saat Lagi digunakan misalnya pada robot, matet dunk nanti? nah lhoh. trus cara programinya gmn dunk? Ada bnyk cara ch, tergantung tipenya, tapi intinya Setiap mcrocontroller punya Tanda Tangan(wow, kek manusia j ya?). ini dugunakan agar tidak salah memrogramnya. trus punya cara sendiri2 caranya rumit, ada sarat2 yang ruwet agar microcontroller ini bisa diprogram (Protection). lenX ku jelaskan deh.

MEMORI(RAM) itu tempat menyimpan sementara aj selama proses berjalan. Asumsinya gni, kita kan punya tepung, keju, ma Coklat di lemari, nah klo kita mau olah kan kita harus keluarin kan? ya kan? masa kita mau masak dalam lemari? sama kek DATA, dimasukin diRAM dlu biar bisa diubah2, tapi data yang diperlukan aj, tidak semuanya. soalnya klo didlam FLASH kan permanen, jadi ga bisa dihapus, ditmbahi, ato yang laen, nah makanya kita btuh RAM.

PROSESOR, nah ini yang paling penting dia lah yang memroses Data2 yang ada diRAM tadi, tentunya sesuai dengan PROGRAMNYA, paan sih program? Program tuh kode yang digunakan untuk memerintah CPU, misalnya kita suruh CPU menghitung, Pause, Mati Dll. Perlu Diingat!!! beda arsitektur(jenis) beda pula bahasa programnya. asumsinya Pada arsitektur MCS51 Untuk menyuruh CPU membaca data pada Input adalah "Baca" dan tulisan baca itu udah jelas tertulis di FLASH pastinya soalnya SI Processor kan patuh ma Flash. nah, laen halnya dengan Jenis AVR(Advance RISC), atau Mega, (halah banyak bgt tipenya kakak), di AVR mungkin bukan "baca" perintahnya, tapi "WOCO", nah beda kan? klo MCS51 dikasi perintah "WOCO" dia bingung, begitu pula sebaliknya.

Input Output (PIO pin Input Output). yah hampir sama kek RAM, artinya klo prosesor mengirim data "hush" kek Pin IO nya, maka akan terus mengeluarkan data"hush" pada kaki IOnya sampai da perintah mengelurkan data lain ke IO tersebut, atau µControlnya dimatiin, soalnya kan datanya disimpan DI RAM IO tersebut. IO neh Bisa dihubungin langsung Keluar, misalnya dalam IO ada data "Veno", maka Maka Pin (Kaki IC) Outputnya juga Berlogika "VENO". artinya jika 2(dua) µController Dihubungin IOnya Yang satu Disuruh Ngeluarin kata "bobo" ma Programnya, dan yang satu disuruh baca data Yang ada Di kaki IOnya, maka µController yang satunya neh akan dapet data "bobo", selanjutnya mau disimpan, diproses, di keluarin lagi ke Pin IO yang lain(dalam 1 µController biasanya ada lebih dari satu IO), atau diapain kek terserah Program dari ic yang satu tersebut.

Read More......
| 2 komentar ]

;-----------bagian deklarasi----------------------
; bagian ini berfunggsi untuk mengganti bilangan
; dengan nama yang lebih mudah diingat
kiri equ 8
kanan equ 9
depan equ 10
kiri45 equ 11
kanan45 equ 12
kiri135 equ 13
kanan135 equ 14
waktu equ 0
waktu2 equ 0
isi equ 255
;-----------PROGRAM UTAMA-------------------------
jmp start
;-----------subrutines----------------------------
org 0003h
mov p2,#11111111b ;henti
acall procedure_tengok ;simpan data halangan
acall check ;check halangan
reti
;---------------delays--------------------------------
delay_belok:
mov r5,waktu
l1: mov r6,#isi
l2: mov r7,#isi
l3: djnz r7,l3
djnz r6,l2
djnz r5,l1
ret
delay_50ms:
mov th0,#01000110b ;delay 50ms
setb tr0
jnb tf0,$ ;tunggu limpahan timer flag 0
clr tf0 ;clearkan timer flag
clr tr0 ;matikan timer (timer run diclear)
ret
henti:
mov th0,#00 ;delay beberapa saat
setb tr0
jnb tf0,$
clr tf0
clr tr0
ret
;-----------------subrutin belok-------------------------
procedure_belok_kanan:
mov p2,#11111010b ;motor kiri maju, motor kanan mundur
acall delay_belok
ret
procedure_belok_kiri:
mov p2,#11110101b ;motor kiri mundur, motor kanan maju
acall delay_belok
ret
;-----------subrutin tengok-----------------
procedure_tengok_kiri_45:
mov r1,#7
mov p2,#10001111b
acall delay_50ms
mov p2,#01001111b
acall delay_50ms
mov p2,#00101111b
acall delay_50ms
mov p2,#00011111b
acall delay_50ms
djnz r1,$
ret
procedure_tengok_kanan_45:
mov r1,#7
mov P2,#00011111B
acall delay_50ms
mov P2,#00101111B
acall delay_50ms
mov P2,#01001111B
acall delay_50ms
mov P2,#10001111B
acall delay_50ms
djnz R1,$
ret
procedure_tengok:
acall procedure_tengok_kiri_45
acall henti
mov kiri45,p0
acall procedure_tengok_kiri_45
acall henti
mov kiri,p0
acall procedure_tengok_kiri_45
acall henti
mov kiri135,p0
acall procedure_tengok_kanan_45
acall procedure_tengok_kanan_45
acall procedure_tengok_kanan_45
acall procedure_tengok_kanan_45
acall henti
mov kanan45,p0
acall procedure_tengok_kanan_45
acall henti
mov kanan,p0
acall procedure_tengok_kanan_45
acall henti
mov kanan135,p0
acall procedure_tengok_kanan_45
acall procedure_tengok_kanan_45
acall procedure_tengok_kanan_45
ret
;------------------------subrutin check------------------------------------
check:
jb p0.0,limit_kiri ;check limit switch kanan
acall procedure_belok_kiri
sjmp akhir
limit_kiri:
jb p0.1,depan1 ;check limit switch kiri
acall procedure_belok_kanan
sjmp akhir
depan1: mov a,depan ;check halangan depan
jnb acc.2,kanan1
sjmp akhir
kanan1: mov a,kanan45 ;check halangan kanan 45 derajat
jnb acc.2,kanan2
acall procedure_belok_kiri
sjmp akhir
kanan2: mov a,kanan
jnb acc.2,kanan3
acall procedure_belok_kiri
sjmp akhir
kanan3: mov a,kanan135
jnb acc.2,kiri1
kiri1: mov a,kiri45 ;check halangan kiri
jnb acc.2,kiri2
acall procedure_belok_kanan
sjmp akhir
kiri2: mov a,kiri
jnb acc.2,kiri3
acall procedure_belok_kanan
sjmp akhir
kiri3: mov a,kiri135
jnb acc.2,putar
acall procedure_belok_kanan
sjmp akhir
putar: mov r5,waktu2
call procedure_belok_kanan
akhir: ret
;-----------------------main program---------------------------
start:
Inisialisasi:
mov sp,#0020h
mov tmod,#00000001b ;timer0 mode 1
mov ie,#00 ;inisialisasi interupsi
setb ex0 ;enable interupsi external 0
setb ea ;aktifkan interupsi
procedure_maju:
mov p1,#11111111b ;enable H (cepat)
mov p2,#11111001b ;motor1 maju motor2 maju
sjmp procedure_maju
;---------------------------akhir---------------------------------------
end

Read More......