BASCOM上的简单计算器

时间:2018-12-05 10:44:05

标签: avr basic micro

我正在尝试mega16BASCOM上运行一个简单的计算器。因此我编写了以下代码,并在Proteus

上进行了尝试
$regfile = "m16def.dat"
$crystal = 1000000
Config Kbd = Portd , Debounce = 30
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.3 , E = Portb.2
Dim Digit As Byte
Dim Num As Byte
Dim Keypad As Byte
Dim Lable As Byte
Dim Result As Byte

Digit = 0
Num = 0
Result = 0

Scan:
Waitms 200
Keypad = Getkbd()
If Keypad > 15 Then Goto Scan
Lable = Lookup(keypad , Data_caculatorkeypad)
If Lable < 10 Then
Digit = Lable
Num = Num * 10
Num = Num + Lable
Lcd Digit
End If

If Lable = 15 Then
Result = Result + Num
Num = 0
Cls
Lcd Result ; "+"
End If

If Lable = 12 Then
Result = Result - Num
Num = 0
Cls
Lcd Result ; "-"
End If

If Lable = 11 Then
Result = Result * Digit
Num = 0
Cls
Lcd Result ; "*"
End If

If Lable = 10 Then
Result = Result / Digit
Num = 0
Cls
Lcd Result ; "/"
End If

If Lable = 13 Then
Num = 0
Result = 0
Cls
Lcd "simple calc"
Waitms 500
Cls
End If


Goto Scan

Data_caculatorkeypad:
   Data 7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 13 , 0 , 14 , 15

在Proteus上运行时,我看到了这个结果

enter image description here 我不知道为什么它不能正常工作,我还读过this code关于Proteus上键盘的另一个问题,然后我使用了电阻,但是它也不起作用,我认为我不需要电阻,因为我在我的代码中使用了Debounce = 30this code和我的(计算器或Data_caculatorkeypad的数据)还有另外一个区别,我认为此data:7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 13 , 0 , 14 , 15的键盘从左上角开始工作,它也用在此example上。 任何帮助将不胜感激。

0 个答案:

没有答案