Hi Henrik,
How does this look? I went for the 'select case' in the end, I had to think for a while (nothing new there) but got there in the end.
Code:
ANSEL = %00000000 'Disable analog select so ports work as digital i/o.
CMCON0 = %00000111 'Disable analog comparators.
TRISA = %00000000 'Set PORTA as OUTPUT.
PORTA = %00000000 'Set PORTA pins all low.
TRISC = %00000000 'Set PORTC as OUTPUT.
PORTC = %00000000 'Set PORTC pins all low.
DEFINE OSC 4
NUM1 VAR BYTE
OP VAR BYTE
NUM2 VAR BYTE
TOTAL VAR BYTE
MAIN:
PAUSE 7000
SEROUT2 PORTC.3, 16780, ["Please send NUM1", 10, 13]
PAUSE 500
HIGH PORTA.5 'Shows data sent
PAUSE 1000
LOW PORTA.5
PAUSE 250
SERIN2 PORTC.5, 16780, [DEC NUM1]'MODE 16780 = 2400 BAUD INVERTED
PAUSE 500
HIGH PORTA.5 'Shows data arrived
PAUSE 1000
LOW PORTA.5
PAUSE 250
SEROUT2 PORTC.3, 16780, ["Please send Operator + - * /", 10, 13]
PAUSE 500
HIGH PORTA.5 'Shows data sent
PAUSE 1000
LOW PORTA.5
PAUSE 250
SERIN2 PORTC.5, 16780, [OP] 'MODE 16780 = 2400 BAUD INVERTED
PAUSE 500
HIGH PORTA.5 'Shows data arrived
PAUSE 1000
LOW PORTA.5
PAUSE 250
SEROUT2 PORTC.3, 16780, ["Please send NUM2", 10, 13]
PAUSE 500
HIGH PORTA.5 'Shows data sent
PAUSE 1000
LOW PORTA.5
PAUSE 250
SERIN2 PORTC.5, 16780, [DEC NUM2]'MODE 16780 = 2400 BAUD INVERTED
PAUSE 500
HIGH PORTA.5 'Shows data arrived
PAUSE 1000
LOW PORTA.5
Select case OP
CASE "+"
TOTAL = NUM1 + NUM2
CASE "-"
TOTAL = NUM1 - NUM2
CASE "*"
TOTAL = NUM1 * NUM2
CASE "/"
TOTAL = NUM1 / NUM2
END SELECT
pause 250
SEROUT2 PORTC.3, 16780, [DEC TOTAL, 10,13]
PAUSE 250
GOTO MAIN
I did another version using IF-THEN as you showed me.
Code:
PAUSE 250
IF OP = "+" Then
Total = Num1 + Num2
PAUSE 250
IF OP = "+" Then
Total = Num1 + Num2
ENDIF
PAUSE 250
IF OP = "-" Then
Total = Num1 - Num2
ENDIF
PAUSE 250
IF OP = "*" Then
Total = Num1 * Num2
ENDIF
PAUSE 250
IF OP = "/" Then
Total = Num1 / Num2
ENDIF
Bookmarks