Академический Документы
Профессиональный Документы
Культура Документы
'* Name : CALCULATOR BERBASIS MIKROKONTROLLER DENGAN PIC 18F452.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 12/4/2010 *
'* Version : 1.0 *
'* Notes : HERY & YENNY *
'* : *
'****************************************************************
Define OSC 4
define loader_used 1
Define LCD_DREG PORTD
Define LCD_DBIT 4
Define LCD_RSREG PORTE
Define LCD_RSBIT 0
Define LCD_EREG PORTE
Define LCD_EBIT 1
col var byte
row var byte
key var byte
value VAR BYTE
value1 var byte
value2 var byte
value3 var byte
value4 var byte
value5 var byte
value6 var byte
value7 var byte
value8 var byte
a VAR BYTE
b VAR BYTE
c VAR word
d VAR BYTE
j VAR BYTE
f VAR BYTE
g VAR BYTE
y var byte
value1=0
value2=0
value3=0
value4=0
value5=0
value6=0
value7=0
value8=0
a=0
b=0
c=0
d=0
j=0
f=0
g=1
y=0
INTCON2.7 = 0
ADCON1 = 7
Low PORTE.2
lcdout $fe, 1, " CALCULATOR"
lcdout $fe, $c0, " HERY & YENNY"
pause 1000
menuutama:
lcdout $fe, 1, "maksimal angka 255"
lcdout $fe, $c0,"Maksimal 3 Digit"
pause 1000
mulai:
lcdout $fe, 1, "0"
langkah1:
value1=0
value2=0
value3=0
value4=0
value5=0
value6=0
value7=0
value8=0
getkey:
Pause 100
getkeyu:
PORTB = 0
TRISB = $f0
If ((PORTB >> 4) != $f) Then getkeyu
Pause 50
getkeyp:
For col = 0 to 3
PORTB = 0
TRISB = (dcd col) ^ $ff
row = PORTB >> 4
If row != $f Then gotkey
Next col
Goto getkeyp
gotkey:
key = (col * 4) + (ncd (row ^ $f))
if key == 16 then write 0, 1
if key == 15 then write 0, 2
if key == 14 then write 0, 3
if key == 13 then write 0, "+"
if key == 12 then write 0, 4
if key == 11 then write 0, 5
if key == 10 then write 0, 6
if key == 9 then write 0, "x"
if key == 8 then write 0, 7
if key == 7 then write 0, 8
if key == 6 then write 0, 9
if key == 5 then write 0, "R"
if key == 4 then write 0, "A"
if key == 3 then write 0, 0
if key == 2 then write 0, "="
if key == 1 then write 0, "M"
READ 0, value1
'write 9,value1
if value1 = "+" then jumlah
if value1 = "x" then kali
if value1 = "R" then simpan
if value1 = "A" then restart
if value1 = "=" then hasil
if value1 = "M" then tampil
if value1 = 0 then kesini
if value1 = 1 then kesini
if value1 = 2 then kesini
if value1 = 3 then kesini
if value1 = 4 then kesini
if value1 = 5 then kesini
if value1 = 6 then kesini
if value1 = 7 then kesini
if value1 = 8 then kesini
if value1 = 9 then kesini
kesini:
Lcdout $fe, 1
lcdout $fe, $80, #value1
write 2, value1
goto langkah2
langkah2:
getkey2:
Pause 100
getkeyu2:
PORTB = 0
TRISB = $f0
If ((PORTB >> 4) != $f) Then getkeyu2
Pause 50
getkeyp2:
For col = 0 to 3
PORTB = 0
TRISB = (dcd col) ^ $ff
row = PORTB >> 4
If row != $f Then gotkey2
Next col
Goto getkeyp2
gotkey2:
key = (col * 4) + (ncd (row ^ $f))
if key == 16 then write 0, 1
if key == 15 then write 0, 2
if key == 14 then write 0, 3
if key == 13 then write 0, "+"
if key == 12 then write 0, 4
if key == 11 then write 0, 5
if key == 10 then write 0, 6
if key == 9 then write 0, "x"
if key == 8 then write 0, 7
if key == 7 then write 0, 8
if key == 6 then write 0, 9
if key == 5 then write 0, "R"
if key == 4 then write 0, "A"
if key == 3 then write 0, 0
if key == 2 then write 0, "="
if key == 1 then write 0, "M"
READ 0, value2
'write 10,value2
if value2 = "+" then jumlah
if value2 = "x" then kali
if value2 = "R" then simpan
if value2 = "A" then restart
if value2 = "=" then hasil
if value2 = "M" then tampil
if value2 = 0 then kesini2
if value2 = 1 then kesini2
if value2 = 2 then kesini2
if value2 = 3 then kesini2
if value2 = 4 then kesini2
if value2 = 5 then kesini2
if value2 = 6 then kesini2
if value2 = 7 then kesini2
if value2 = 8 then kesini2
if value2 = 9 then kesini2
kesini2:
write 1, value2
Lcdout $fe, $80+1, #value2
goto langkah3
langkah3:
getkey3:
Pause 100
getkeyu3:
PORTB = 0
TRISB = $f0
If ((PORTB >> 4) != $f) Then getkeyu3
Pause 50
getkeyp3:
For col = 0 to 3
PORTB = 0
TRISB = (dcd col) ^ $ff
row = PORTB >> 4
If row != $f Then gotkey3
Next col
Goto getkeyp3
gotkey3:
key = (col * 4) + (ncd (row ^ $f))
if key == 16 then write 0, 1
if key == 15 then write 0, 2
if key == 14 then write 0, 3
if key == 13 then write 0, "+"
if key == 12 then write 0, 4
if key == 11 then write 0, 5
if key == 10 then write 0, 6
if key == 9 then write 0, "x"
if key == 8 then write 0, 7
if key == 7 then write 0, 8
if key == 6 then write 0, 9
if key == 5 then write 0, "R"
if key == 4 then write 0, "A"
if key == 3 then write 0, 0
if key == 2 then write 0, "="
if key == 1 then write 0, "M"
READ 0, value3
'write 11, value3
if value3 = "+" then jumlah
if value3 = "x" then kali
if value3 = "R" then simpan
if value3 = "A" then restart
if value3 = "=" then hasil
if value3 = "M" then tampil
if value3 = 0 then kesini3
if value3 = 1 then kesini3
if value3 = 2 then kesini3
if value3 = 3 then kesini3
if value3 = 4 then kesini3
if value3 = 5 then kesini3
if value3 = 6 then kesini3
if value3 = 7 then kesini3
if value3 = 8 then kesini3
if value3 = 9 then kesini3
kesini3:
write 0, value3
Lcdout $fe, $80+2, #value3
goto langkah4
langkah4:
getkey4:
Pause 100
getkeyu4:
PORTB = 0
TRISB = $f0
If ((PORTB >> 4) != $f) Then getkeyu4
Pause 50
getkeyp4:
For col = 0 to 3
PORTB = 0
TRISB = (dcd col) ^ $ff
row = PORTB >> 4
If row != $f Then gotkey4
Next col
Goto getkeyp4
gotkey4:
key = (col * 4) + (ncd (row ^ $f))
if key == 16 then write 0, 1
if key == 15 then write 0, 2
if key == 14 then write 0, 3
if key == 13 then write 0, "+"
if key == 12 then write 0, 4
if key == 11 then write 0, 5
if key == 10 then write 0, 6
if key == 9 then write 0, "x"
if key == 8 then write 0, 7
if key == 7 then write 0, 8
if key == 6 then write 0, 9
if key == 5 then write 0, "R"
if key == 4 then write 0, "A"
if key == 3 then write 0, 0
if key == 2 then write 0, "="
if key == 1 then write 0, "M"
READ 0, value4
'write 12, value4
if value4 = "+" then jumlah
if value4 = "x" then kali
if value4 = "R" then simpan
if value4 = "A" then restart
if value4 = "=" then hasil
if value4 = "M" then tampil
if value4 = 0 then kesini4
if value4 = 1 then kesini4
if value4 = 2 then kesini4
if value4 = 3 then kesini4
if value4 = 4 then kesini4
if value4 = 5 then kesini4
if value4 = 6 then kesini4
if value4 = 7 then kesini4
if value4 = 8 then kesini4
if value4 = 9 then kesini4
kesini4:
write 1, value4
Lcdout $fe, 1,"Maksimal 3 Digit"
pause 1000
goto menuutama
jumlah:
write 9,"+"
read 9, j
if value3>9 then
value3=0
value1= value1*10
value2=value2*1
endif
if value3=0 and value2>9 then
value1=value1*1
value2=0
value3=0
endif
if value3>0 then
value1=value1*100
value2=value2*10
value3=value3*1
ENDIF
if value3=0 and value2=0 and value1>9 then
value1=0
value2=0
value3=0
endif
a=value1+value2+value3
lcdout ,$fe,1, #a
goto langkah1
kali:
write 9,"*"
read 9, j
if value3>9 then
value3=0
value1= value1*10
value2=value2*1
endif
if value3=0 and value2>9 then
value1=value1*1
value2=0
value3=0
endif
if value3>0 then
value1=value1*100
value2=value2*10
value3=value3*1
ENDIF
if value3=0 and value2=0 and value1>9 then
value1=0
value2=0
value3=0
endif
a=value1+value2+value3
lcdout ,$fe,1, #a
goto langkah1
restart:
lcdout $fe, 1, "0"
goto menuutama
simpan:
read c,y
lcdout $fe, 1, #y
pause 1000
goto langkah1
tampil:
write f,y
write g,y
lcdout $fe, 1, #f
goto langkah1
hasil:
if value3>9 then
value3=0
value1=value1*10
value2=value2*1
endif
if value3=0 and value2>9 then
value1=value1
value2=0
value3=0
endif
if value3>0 then
value1=value1*100
value2=value2*10
value3=value3
endif
if value3=0 and value2=0 and value1>9 then
value1=0
value2=0
value3=0
endif
b=value1+value2+value3
if j="+" then
c=a+b+f
Lcdout $fe, 1, #c
endif
if j="*" then
c=a*b*g
Lcdout $fe,1,#c
endif
pause 1000
goto langkah1
end