Univ. of Brawijaya Change the World

Informatics Students Blog of Brawijaya University

EdSim51

EdSim51 merupakan sebuah software berbasis java yang berfungsi sebagai simulator microcontroller dari keluarga AVR, yaitu khusus pada seri AT89C51. Simulator ini juga digunakan untuk mengerjakan suatu list program yang ditus dengan menggunakan bahasa Assembly.

Berikut ini merupakan screen shot dari edsim51 :

Berikut ini adalah penjelasan dari gambar beserta fungsinya :

Sebuah screenshot dari panel mikrokontroler. Hal inilah yang dapat  memberikan akses pengguna ke semua register pada 8051 dan memori data. Pada kotak yang bewarna putih dapat diedit secara langsung.Seadngkan pada kotak  yang bewarna abu-abu tidak bisa. Sebagai contoh, port latch bit dapat diedit langsung oleh user, tetapi pin port dikendalikan oleh periferal eksternal dan port mengunci dan tidak dapat diedit. Selain itu, program counter tidak dapat diedit.
Bila pointer mouse kiri untuk mengarahkan kursor ke salah satu label register, alamat register yang muncul, sebagai berlawanan ditunjukkan untuk register PCON.

Sebuah program perakitan sederhana akan ditampilkan pada panel kode assembly ke kiri. Program ini berjalan dalam sebuah loop terus menerus, akan menampilkan angka 0 sampai 9 dan kembali ke 0 pada layar 7-segmen pertama. Potret pelaksanaannya akan ditampilkan ke kanan.

Programer dapat menulis kode programnya secara langsung di sini, atau dapat memuat program dari file menggunakan tombol Load. Ketika program sudah siap untuk dilakukan pengujian, pengguna bisa mengklik tombol step untuk mengeksekusi instruksi satu per satu, atau pada tombol Run untuk menjalankan program secara terus menerus. Kemudian, program yang pertama akan dirakit. Jika suatu kesalahan dalam kode programnya ditemukan, sebuah pesan akan ditampilkan dalam kotak pesan di atas kode assembly (dengan latar belakang merah) dan garis dengan kesalahan disorot dalam kode di merah. Jika kode assembly tidak erro maka backgroun teks akan berubah menjadi warna abu-abu dan kode tidak dapat diedit pada saat itu. Namun jika ingin kembali untuk mengedit kode yang telah dibuat cukup mengeklik tombol reset.

Gambar-gambar ini menunjukkan apa saja yang terhubung ke masing-masing 32 pin port. Gambar sebelah kiri merupakan layar 7-segmen aktif. Sedangkan gambar sebelah kanan merupakan modul LCD aktif.

Bagian-bagian dari peripheral adalah :

* ADC

* Comparator

* Four 7-segment LED Displays

* LCD Module

* UART

* Keypad

* LED Bank

* DC Bi-directional Motor

* Switch Bank

* DAC (output )

Ini merupakan diagram logika peripheral dari simulator edsim51 :

Modul DT-51 Trainer Kit

 

DT-51 Trainer Kit adalah satu set modul yang dapat digunakan sebagai sarana penunjang dalam mempelajari pemrograman MCS-51. DT-51 Trainer Kit terdiri dari DT-51 Trainer Board serta Panduan Dasar dan Panduan Praktikum Dasar Mikrokontroler Keluarga MCS-51.

Dengan adanya Panduan Dasar Mikrokontroler Keluarga MCS-51 maka dapat mempelajari arsitektur 89C51 dan instruksi-instruksi yang digunakan, disertai dengan panduan ringan tentang disain minimum system dan langkah-langkah pemrograman termasuk membahas tentang program Assembler ASM51.  Dengan Panduan Praktikum Dasar Mikrokontroler Keluarga MCS-51 maka akan dapat mempraktekkan beberapa pemrograman dasar meliputi penggunaan Input/Output, Interrupt, Timer/Counter, Serial Communication, serta penggunaan rutin LCD pada DT-51 MinSys dan teknik Scanning Keypad & Scanning Display dengan 7 Segment. Semua praktikum dan latihan dapat dikerjakan menggunakan DT-51 Trainer Board (kecuali praktikum LCD) yang kompatibel penuh dengan DT-51 Minimum System.

DT-51 Trainer Board dilengkapi dengan:

  • 8 LED Output
  • 8 Toggle Switch Input
  • 4 Tactile Switch Interrupt &am p; Counter
  • Pulse Generator: 1 Hz, 1 kHz, & 10 kHz
  • 4 Tactile Switch for Scanning Keypad
  • 2 Seven Segment for Scanning Display

Dengan dimensi sebagai berikut 19,5 cm (P) x 12,4 cm (L) x 3,4 cm (T)

Perlengkapan DT-51 Trainer Kit:

  • 1 bh Board DT-51 Trainer Board
  • 1 set Kabel Trainer
  • 1 lbr Layout DT-51 Trainer Board
  • 1 lbr Skema DT-51 Trainer Board
  • 1 bh Panduan Dasar Mikrokontroler Keluarga MCS-51
  • 1 bh Panduan Praktikum Dasar Mikrokontroler Keluarga MCS-51
  • 1 bh CD dan semuanya itu dikemas dalam kotak yang menarik

Hasil pengamatan pada EDSIM51 untuk ScanKeypad.asm

Source Code dan Penjelasan

; This program scans the keypad.

; While no key is pressed the program

; scans row0, row1, row2, row3 and back to

; row0, continuously.

; When a key is pressed the key number

; is placed in R0.

; For this program, the keys are numbered

; as:

; +—-+—-+—-+

; | 11 | 10 | 9 | row3

; +—-+—-+—-+

; | 8 | 7 | 6 | row2

; +—-+—-|—-+

; | 5 | 4 | 3 | row1

; +—-+—-+—-+

; | 2 | 1 | 0 | row0

; +—-+—-+—-+

;  col2 col1 col0

; The pressed key number will be stored in

; R0. Therefore, R0 is initially cleared.

; Each key is scanned, and if it is not

; pressed R0 is incremented. In that way,

; when the pressed key is found, R0 will

; contain the key’s number.

; The general purpose flag, F0, is used

; by the column-scan subroutine to indicate

; whether or not a pressed key was found

; in that column.

; If, after returning from colScan, F0 is

; set, this means the key was found.

start:

MOV R0, #0 ; clear R0 – the first key is key0

; scan row0

SETB P0.3 ; set row3

CLR P0.0 ; clear row0

CALL colScan ; call column-scan subroutine

JB F0, finish ; | if F0 is set, jump to end of program

; | (because the pressed key was found and its number is in R0)

; scan row1

SETB P0.0 ; set row0

CLR P0.1 ; clear row1

CALL colScan ; call column-scan subroutine

JB F0, finish ; | if F0 is set, jump to end of program

; | (because the pressed key was found and its number is in R0)

; scan row2

SETB P0.1 ; set row1

CLR P0.2 ; clear row2

CALL colScan ; call column-scan subroutine

JB F0, finish ; | if F0 is set, jump to end of program

; | (because the pressed key was found and its number is in R0)

; scan row3

SETB P0.2 ; set row2

CLR P0.3 ; clear row3

CALL colScan ; call column-scan subroutine

JB F0, finish ; | if F0 is set, jump to end of program

; | (because the pressed key was found and its number is in R0)

JMP start ; | go back to scan row 0

; | (this is why row3 is set at the start of the program

; | – when the program jumps back to start, row3 has just been scanned)

finish:

JMP $ ; program execution arrives here when key is found – do nothing

; column-scan subroutine

colScan:

JNB P0.4, gotKey ; if col0 is cleared – key found

INC R0 ; otherwise move to next key

JNB P0.5, gotKey ; if col1 is cleared – key found

INC R0 ; otherwise move to next key

JNB P0.6, gotKey ; if col2 is cleared – key found

INC R0 ; otherwise move to next key

RET ; return from subroutine – key not found

gotKey:

SETB F0 ; key found – set F0

RET ; and return from subroutine

Hasil Pengamatan Program ScanKeypad.asm

Source code ini adalah program assembly dimana bila kita memasukkan suatu nilai melalui keypad maka nilai tersebut akan tersimpan dalam Register 0 (R0) dimana nilai disimpan dalam tipe data heksa.Misalkan saat kita menekan tombol 10 pada keypad maka pada R0 terlihat nilai 0x0A dalam heksa yang berarti 10 dalam decimal. Untuk model dari keypadnya sebagai berikut :
; +—-+—-+—-+
; | 11 | 10  | 9      |  ROW3
; +—-+—-+—-+
; | 8     | 7   | 6     |  ROW2
; +—-+—- |—-+
; | 5     | 4    | 3    |   ROW1
; +—-+—- +—-+
; | 2     | 1    | 0     |  ROW0
; +—-+—- +—-+
; Col1 col2 col0

Jadi, dapat disimpulkan bahwa program ini adalah program pemindai inputan dari tombol keypad

 

Both comments and pings are currently closed.