Вы находитесь на странице: 1из 17

'**************************************************************** 

'*  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 

Вам также может понравиться