-kesalahan sepele yg sulit dicari dari lookup
kadang terjadi kesalahan program yg sulit dicari berjam jam belum ketemu padahal semua serasa sudah benar , hal ini dapat disebabkan karena kurang teliti dalam penulisan kode dalam lookup yaitu menulis string dan kode hexa
misalkan sbb:
STR1:
DB ‘abcde’;
KODE: (benar bagi compiler , salah bagi programer)
DB ‘001H,002H,003H’;
perhatikan pada contoh diatas pada label STR1 adalah benar , sedangkan pada label KODE adalah salah , sedangkan compiler asm51 tidak menganggap itu salah tetapi menganggap itu adalah string, sedangkan yg kita maksudkan adalah membuat kode hexa, jadi yg benar adalah pada label kode tidak boleh menggunakan tanda petik tunggal (‘) sbb:
STR1:
DB ‘abcde’;
KODE: (benar bagi compiler , benar bagi programer)
DB 001H,002H,003H;
-perbandingan nilai lebih besar atau sama dengan
seringkali kita membuat perbandingan dengan menggunakan perintah CJNE , tetapi perintah ini memliki kelemahan yaitu jika data yg dibandingkan tidak benar2 sama maka akan ditolak sedangkan yg kita butuhkan adalah nilai dalam suatu range data, misal kan jika sebuah data memiliki nilai 0-5 maka data tersebut dianggap tidak valid maka solusinya gunakan perintah SUBB A kemudian cek status C
contoh lebih besar atau sama dengan:
MOV A,ALAMATX ; isi A dengan nilai dari suatu alamat X
SUBB A,#5
JNC DATA_VALID
;berarti nilai dari ALAMATX < 5
...
DATA_VALID:
;berarti nilai dari ALAMATX >= 5
...
-teknik mengisi TMOD
dalam microcontroller (AT89s51) terdapat 2 timer yaitu timer 0 dan timer 1 yg pengaturan menjadi satu dalam satu register TMOD, agar pengaturan masing2 tidak saling mempengaruhi gunakan teknik berikut:
MOV A,TMOD
ORL A,#00000001B ; membuat timer 0 mode 1 tanpa mempengaruhi timer 0
MOV TMOD,A
-hati hati dengan loop DJNZ
jika membuat looping dengan menggunakan DJNZ pastikan jumlah nilai maksimal dalam hitungan benar yaitu nol tidak termasuk dihitung , karena saat hitungan sudah mencapai nilai nol maka proses loop akan berhenti dan melanjutkan instruksi selanjutnya