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.
I did another version using IF-THEN as you showed me.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
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