Iseng iseng saja membuat sebuah rancangan dasar untuk MCS51 di proteus. Board untuk lampu misalkan lampu lalu lintas harganya kurang dari 100 rb.
(http://farabidatacenter.url.ph/MainSystem/MainData/Design.png)
Saya merancang desain untuk mengunakan sebuah LCD untuk tampilannya, proyek ini sebetulnya untuk kunci motor menggunakan sidik jari tapi saya mentok. Ini datasheetnya
(http://farabidatacenter.url.ph/MainSystem/MainData/Desain2.png)
Dan ini adalah source codenya.
;====================================================================
; Main.asm file generated by New Project wizard
;
; Created: Wed Aug 20 2014
; Processor: AT89C1051
; Compiler: ASEM-51 (Proteus)
;====================================================================
$NOMOD51
$INCLUDE (89C1051.MCU)
;====================================================================
; DEFINITIONS
;====================================================================
;====================================================================
; VARIABLES
;====================================================================
;====================================================================
; RESET and INTERRUPT VECTORS
;====================================================================
; Reset Vector
org 0000h
jmp Start
;====================================================================
; CODE SEGMENT
;====================================================================
org 0100h
Start:
; Write your code here
CLR P1.0
CLR P1.1
CLR P1.2
CLR P1.3
CLR P1.4
CLR P1.5
CLR P1.6
CLR P1.7
clr p3.0
clr p3.1
clr p3.2
Call Delay
CLR P1.0
CLR P1.1
SETB P1.2
SETB P1.3
SETB P1.4
CLR P1.5
CLR P1.6
CLR P1.7
Call Delay
SETB p3.0
CLR p3.0
Call Delay
CLR P1.0
CLR P1.1
CLR P1.2
CLR P1.3
SETB P1.4
CLR P1.5
CLR P1.6
CLR P1.7
Call Delay
SETB p3.0
CLR p3.0
Call Delay
Loop:
jmp Loop
ret
Delay:
mov R0,#128
DJNZ R0, $
ret
;====================================================================
END
Saya sudah memasukkan "magic byte" nya yaitu 0011100 dalam bit dan 0000100 dalam bit untuk mematikan display. Tapi display tidak mati dan sepertinya saya membuat kesalahan disuatu tempat, ada yang bisa membantu?
Ah berhasil nih
;====================================================================
; Main.asm file generated by New Project wizard
;
; Created: Wed Aug 20 2014
; Processor: AT89C1051
; Compiler: ASEM-51 (Proteus)
;====================================================================
$NOMOD51
$INCLUDE (89C1051.MCU)
;====================================================================
; DEFINITIONS
;====================================================================
;====================================================================
; VARIABLES
;====================================================================
;====================================================================
; RESET and INTERRUPT VECTORS
;====================================================================
; Reset Vector
org 0000h
jmp Start
;====================================================================
; CODE SEGMENT
;====================================================================
org 0100h
Start:
; Write your code here
Call Delay
mov P1,#38H
clr P3.2
clr P3.1
setb p3.0
clr p3.0
call Delay
mov P1,#0FH
clr P3.2
clr P3.1
setb p3.0
clr p3.0
call Delay
mov P1,#01H
clr P3.2
clr P3.1
setb p3.0
clr p3.0
call Delay
mov P1,#06H
clr P3.2
clr P3.1
setb p3.0
clr p3.0
call Delay
Loop:
jmp Loop
ret
Delay:
mov R0,#128
DJNZ R0, $
ret
;====================================================================
END
(http://farabidatacenter.url.ph/MainSystem/MainData/desain3.png)
Berhasil nih, ini kode lengkapnya
;====================================================================
; Main.asm file generated by New Project wizard
;
; Created: Wed Aug 20 2014
; Processor: AT89C1051
; Compiler: ASEM-51 (Proteus)
;====================================================================
$NOMOD51
$INCLUDE (89C1051.MCU)
;====================================================================
; DEFINITIONS
;====================================================================
;====================================================================
; VARIABLES
;====================================================================
;====================================================================
; RESET and INTERRUPT VECTORS
;====================================================================
; Reset Vector
org 0000h
jmp Start
;====================================================================
; CODE SEGMENT
;====================================================================
org 0100h
Start:
; Write your code here
Call Delay
mov R1,#38H
call LCD_Command_Init
mov R1,#0FH
call LCD_Command_Init
mov R1,#01H
call LCD_Command_Init
mov R1,#06H
call LCD_Command_Init
mov R1,#83H
call LCD_Command
mov dptr,#MyString
call SendString
Loop:
jmp Loop
ret
LCD_Command_Init:
mov P1,R1
clr P3.2
clr P3.1
setb p3.0
clr p3.0
call Delay
ret
LCD_Command:
mov P1,R1
setb P3.2
clr P3.1
setb p3.0
clr p3.0
call Delay
ret
SendString:
clr a
movc a,@a+dptr
jz exit
mov R1,a
call LCD_Command
inc dptr
sjmp SendString
exit:
ret
Delay:
mov R0,#128
DJNZ R0, $
ret
MyString:
db "Farabi OS 1.0",00h
;====================================================================
END
Ini desain dengan menggunakan 80C58. Mikrokontroler ini mempunyai 32 jalur port yang bisa digunakan. Karena menggunakan port ini secara paralel hanya ada maksimal 3 buah hardware yang bisa digunakan dengan desain yang bisa dibilang rumit, tapi kalau secara serial, bisa ada 24 alat yang bisa anda gunakan ,tapi saya tidak tahu apakah hal tersebut memungkinkan atau tidak. Kalau saya liat port P0 hanya berfungsi sebagai input, sedangkan ketiga sisanya berfungsi sebagai output, tidak ada yang bisa berfungsi sebagai Input/Output seperti pada ARM, sehingga sukar untuk memasukkan hardware tambahan misalkan sensor suhu. Tapi dibandingkan dengan ARM, mikrokontroler ini adalah yang termurah, harganya hanya 12 rb saja perkeping, dan anda tidak membutuhkan sebuah motherboard seperti prosesor intel karena mikrokontroler sudah mempunyai RAM dan Harddisk sendiri biarpun skalanya sangat kecil. Ini biasanya disebut sebagai System on Chip. Sebuah komputer jadi dalam ukuran kecil
(http://farabidatacenter.url.ph/MainSystem/MainData/desain4.png)
Pemasangan pin port masih sama bedanya hanya terletak pada mikrokontrolernya saja yang mempunyai pin port lebih banyak. Jadi kode kode yang sebelumnya masih berfungsi.