простой калькулятор на BASCOM - PullRequest
       22

простой калькулятор на BASCOM

0 голосов
/ 05 декабря 2018

Я пытаюсь запустить простой калькулятор на mega16 на BASCOM.поэтому я написал следующий код и попробуйте его на 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 Интересно, почему это не так?не работает правильно, я также прочитал этот код о другой проблеме с клавиатурой на Proteus, затем я использовал резисторы, но это не работает, и я думаю, что мне не нужны резисторы, потому что я использовал Debounce = 30в моем коде.есть еще одно отличие в этом коде и моем, данных калькулятора или Data_caculatorkeypad, я думаю, что клавиатура работает сверху слева с этим data:7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 13 , 0 , 14 , 15, который также используется в этом примере .любая помощь будет оценена.

...