سلام
من پروژه ماشین حساب توی همین سایت را بستم ولی توی عمل به هیچ وجه سطر 3 کار نمیداد .
یک برنامه از توی سایت rir-micro برداشتم ولی وقتی کامپاسل میکنم . هر دفعه یک error مسخره میده
میشه یکی تست کنه Micro code stdio plus
DEFINE lcd_dreg portb
DEFINE lcd_dbit 4
DEFINE lcd_bite 4
DEFINE lcd_rsreg portb
DEFINE lcd_rsbit 0
DEFINE lcd_ereg portb
DEFINE lcd_ebit 1
DEFINE lcd_lines 2
DEFINE lcd_commandus 200
DEFINE lcd_dataus 50
DEFINE OSC 1
TRISA = 0
TRISB = 0
TRISC = %11110000
oldkey VAR byte
keypress VAR byte
flag VAR bit
LCDOUT $fe,$80," CATCULATOR "
PAUSE 250
LCDOUT $fe,$0d
LCDOUT $fe,$1
m VAR word : a VAR byte
f VAR word : b VAR byte
ans VAR word : c VAR byte : j VAR byte
r VAR byte : d VAR byte : ans2 VAR word
ans1 VAR word : e VAR byte : i VAR byte
CLEAR
main:
portc = %1000
GOSUB column
IF flag = 1 THEN result
Portc = %0100
GOSUB column
IF flag=1 THEN result1
Portc = %0010
GOSUB column
IF flag=1 THEN result2
Portc = %0001
GOSUB column
IF flag=1 THEN result3
GOTO main
result:
LOOKUP keypress,[7,4,1,33],oldkey
IF oldkey=33 THEN
m=0 : f=0 : ans=0 : ans1=0 : r=0 : e=0 : a=0 : b=0 : c=0 : d=0 : i=0
LCDOUT $fe,1
PAUSE 50
ELSE
e = oldkey
GOSUB readkey
LCDOUT #e
PAUSE 50
ENDIF
GOTO main
result1:
LOOKUP keypress,[8,5,2,0],oldkey
e = oldkey
GOSUB readkey
LCDOUT #e
PAUSE 50
GOTO main
result2:
LOOKUP keypress,[9,6,3,61],oldkey
IF oldkey=61 THEN answer
e = oldkey
GOSUB readkey
LCDOUT #e
PAUSE 50
GOTO main
result3:
LOOKUP keypress,[47,42,45,43],oldkey
LCDOUT oldkey
PAUSE 50
IF oldkey=47 THEN divide
IF oldkey=42 THEN mul
IF oldkey=45 THEN sub
IF oldkey=43 THEN add
GOTO main
add:
GOSUB creat
m = f
IF ans<>0 THEN
m = ans
ENDIF
a = 0 : b = 0 : c = 0 : d = 0 : I = 0 : f = 0 : r = 1
GOTO main
sub:
GOSUB creat
m = f
IF ans<>0 THEN
m = ans
ENDIF
a = 0 : b = 0 : c = 0 : d = 0 : I = 0 : f = 0 : r = 2
GOTO main
divide:
GOSUB creat
m = f
IF ans<>0 THEN
m = ans
ENDIF
a = 0 : b = 0 : c = 0 : d = 0 : I = 0 : f = 0 : r = 3
GOTO main
mul:
GOSUB creat
m = f
IF ans<>0 THEN
m = ans
ENDIF
a = 0 : b = 0 : c = 0 : d = 0 : i = 0 : f = 0 : r = 4
GOTO main
answer:
GOSUB creat
LCDOUT $fe,$c0
IF r=1 THEN
Ans = m + f
LCDOUT $fe,$c0,#ans
PAUSE 50
GOTO main
ENDIF
IF r=2 THEN
IF m>f THEN
ans = m - f
LCDOUT #ans
PAUSE 50
ELSE
Ans = f - m
LCDOUT $fe,$c0,"-",#ans
PAUSE 50
ENDIF
ENDIF
IF r=3 THEN
ans = m / f
ans1 = m // f
LCDOUT #ans,"."
FOR j=1 TO 6
ans1 = ans1 * 10
ans = ans1 / f
LCDOUT #ans
ans1 = ans1 // f
NEXT j
PAUSE 50
ENDIF
IF r=4 THEN
ans = m * f
ans2 = m ** f
IF ans2<>0 THEN jump
LCDOUT #ans
PAUSE 50
ENDIF
GOTO main
column:
flag = 1
keypress = 0
IF portc.7=1 THEN findcolumn
Keypress = keypress + 1
IF portc.6=1 THEN findcolumn
Keypress = keypress + 1
IF portc.5=1 THEN findcolumn
Keypress = keypress + 1
IF portc.4=1 THEN findcolumn
Keypress = keypress + 1
flag = 0
findcolumn:
RETURN
readkey:
i=i+1
IF i=1 THEN a=e
IF i=2 THEN b=e
IF i=3 THEN c=e
IF i=4 THEN d=e
IF i>=6 THEN jump
RETURN
jump:
LCDOUT $fe,1
LCDOUT $fe,$80,"overload"
PAUSE 30
GOTO main
creat:
IF i=1 THEN f=a
IF i=2 THEN f= (a * 10) + b
IF i=3 THEN f=(a*100)+(b*10)+c
IF i=4 THEN f=(a*1000)+(b*100)+(c*10)+d
RETURN
reset:
END
من پروژه ماشین حساب توی همین سایت را بستم ولی توی عمل به هیچ وجه سطر 3 کار نمیداد .
یک برنامه از توی سایت rir-micro برداشتم ولی وقتی کامپاسل میکنم . هر دفعه یک error مسخره میده
میشه یکی تست کنه Micro code stdio plus
DEFINE lcd_dreg portb
DEFINE lcd_dbit 4
DEFINE lcd_bite 4
DEFINE lcd_rsreg portb
DEFINE lcd_rsbit 0
DEFINE lcd_ereg portb
DEFINE lcd_ebit 1
DEFINE lcd_lines 2
DEFINE lcd_commandus 200
DEFINE lcd_dataus 50
DEFINE OSC 1
TRISA = 0
TRISB = 0
TRISC = %11110000
oldkey VAR byte
keypress VAR byte
flag VAR bit
LCDOUT $fe,$80," CATCULATOR "
PAUSE 250
LCDOUT $fe,$0d
LCDOUT $fe,$1
m VAR word : a VAR byte
f VAR word : b VAR byte
ans VAR word : c VAR byte : j VAR byte
r VAR byte : d VAR byte : ans2 VAR word
ans1 VAR word : e VAR byte : i VAR byte
CLEAR
main:
portc = %1000
GOSUB column
IF flag = 1 THEN result
Portc = %0100
GOSUB column
IF flag=1 THEN result1
Portc = %0010
GOSUB column
IF flag=1 THEN result2
Portc = %0001
GOSUB column
IF flag=1 THEN result3
GOTO main
result:
LOOKUP keypress,[7,4,1,33],oldkey
IF oldkey=33 THEN
m=0 : f=0 : ans=0 : ans1=0 : r=0 : e=0 : a=0 : b=0 : c=0 : d=0 : i=0
LCDOUT $fe,1
PAUSE 50
ELSE
e = oldkey
GOSUB readkey
LCDOUT #e
PAUSE 50
ENDIF
GOTO main
result1:
LOOKUP keypress,[8,5,2,0],oldkey
e = oldkey
GOSUB readkey
LCDOUT #e
PAUSE 50
GOTO main
result2:
LOOKUP keypress,[9,6,3,61],oldkey
IF oldkey=61 THEN answer
e = oldkey
GOSUB readkey
LCDOUT #e
PAUSE 50
GOTO main
result3:
LOOKUP keypress,[47,42,45,43],oldkey
LCDOUT oldkey
PAUSE 50
IF oldkey=47 THEN divide
IF oldkey=42 THEN mul
IF oldkey=45 THEN sub
IF oldkey=43 THEN add
GOTO main
add:
GOSUB creat
m = f
IF ans<>0 THEN
m = ans
ENDIF
a = 0 : b = 0 : c = 0 : d = 0 : I = 0 : f = 0 : r = 1
GOTO main
sub:
GOSUB creat
m = f
IF ans<>0 THEN
m = ans
ENDIF
a = 0 : b = 0 : c = 0 : d = 0 : I = 0 : f = 0 : r = 2
GOTO main
divide:
GOSUB creat
m = f
IF ans<>0 THEN
m = ans
ENDIF
a = 0 : b = 0 : c = 0 : d = 0 : I = 0 : f = 0 : r = 3
GOTO main
mul:
GOSUB creat
m = f
IF ans<>0 THEN
m = ans
ENDIF
a = 0 : b = 0 : c = 0 : d = 0 : i = 0 : f = 0 : r = 4
GOTO main
answer:
GOSUB creat
LCDOUT $fe,$c0
IF r=1 THEN
Ans = m + f
LCDOUT $fe,$c0,#ans
PAUSE 50
GOTO main
ENDIF
IF r=2 THEN
IF m>f THEN
ans = m - f
LCDOUT #ans
PAUSE 50
ELSE
Ans = f - m
LCDOUT $fe,$c0,"-",#ans
PAUSE 50
ENDIF
ENDIF
IF r=3 THEN
ans = m / f
ans1 = m // f
LCDOUT #ans,"."
FOR j=1 TO 6
ans1 = ans1 * 10
ans = ans1 / f
LCDOUT #ans
ans1 = ans1 // f
NEXT j
PAUSE 50
ENDIF
IF r=4 THEN
ans = m * f
ans2 = m ** f
IF ans2<>0 THEN jump
LCDOUT #ans
PAUSE 50
ENDIF
GOTO main
column:
flag = 1
keypress = 0
IF portc.7=1 THEN findcolumn
Keypress = keypress + 1
IF portc.6=1 THEN findcolumn
Keypress = keypress + 1
IF portc.5=1 THEN findcolumn
Keypress = keypress + 1
IF portc.4=1 THEN findcolumn
Keypress = keypress + 1
flag = 0
findcolumn:
RETURN
readkey:
i=i+1
IF i=1 THEN a=e
IF i=2 THEN b=e
IF i=3 THEN c=e
IF i=4 THEN d=e
IF i>=6 THEN jump
RETURN
jump:
LCDOUT $fe,1
LCDOUT $fe,$80,"overload"
PAUSE 30
GOTO main
creat:
IF i=1 THEN f=a
IF i=2 THEN f= (a * 10) + b
IF i=3 THEN f=(a*100)+(b*10)+c
IF i=4 THEN f=(a*1000)+(b*100)+(c*10)+d
RETURN
reset:
END
دیدگاه