@ device pic16F877, pwrt_on, protect_off, wdt_on, HS_OSC ' program to turn on/off outputs using midi commands ' channel 1 midi, midi notes 60 to 83 ' output is inverted for turn on solid state relays INCLUDE "modedefs.bas" DEFINE OSC 20 TRISA = %00000000 TRISB = %00000000 TRISC = %10000001 TRISD = %00000000 byte1 VAR BYTE byte2 VAR BYTE byte3 VAR BYTE linkon VAR PORTC.0 alloff: 'turn off all ports High PORTC.4 High PORTD.7 High PORTD.6 High PORTD.5 High PORTD.4 High PORTD.3 High PORTD.2 High PORTD.1 High PORTD.0 High PORTB.7 High PORTB.6 High PORTB.5 High PORTB.4 High PORTB.3 High PORTB.2 High PORTB.1 High PORTB.0 High PORTE.2 High PORTE.1 High PORTE.0 High PORTA.5 High PORTA.3 High PORTA.2 High PORTA.1 High PORTA.0 loop: SerIn2 PORTC.7,12,[byte1,byte2,byte3] Toggle PORTC.4 SerOut PORTC.5,N9600,[#byte1," ",#byte2," ",#byte3,10,13] makemidi: IF byte1 = 144 Then turnon IF byte1 = 128 Then turnoff turnoff: IF byte2 = 60 Then High PORTD.7 IF byte2 = 61 Then High PORTD.6 IF byte2 = 62 Then High PORTD.5 IF byte2 = 63 Then High PORTD.4 IF byte2 = 64 Then High PORTD.3 IF byte2 = 65 Then High PORTD.2 IF byte2 = 66 Then High PORTD.1 IF byte2 = 67 Then High PORTD.0 IF byte2 = 68 Then High PORTB.7 IF byte2 = 69 Then High PORTB.6 IF byte2 = 70 Then High PORTB.5 IF byte2 = 71 Then High PORTB.4 IF byte2 = 72 Then High PORTB.3 IF byte2 = 73 Then High PORTB.2 IF byte2 = 74 Then High PORTB.1 IF byte2 = 75 Then High PORTB.0 IF byte2 = 76 Then High PORTE.2 IF byte2 = 77 Then High PORTE.1 IF byte2 = 78 Then High PORTE.0 IF byte2 = 79 Then High PORTA.5 IF byte2 = 80 Then High PORTA.3 IF byte2 = 81 Then High PORTA.2 IF byte2 = 82 Then High PORTA.1 IF byte2 = 83 Then High PORTA.0 GoTo loop turnon: IF byte2 = 60 Then Low PORTD.7 IF byte2 = 61 Then Low PORTD.6 IF byte2 = 62 Then Low PORTD.5 IF byte2 = 63 Then Low PORTD.4 IF byte2 = 64 Then Low PORTD.3 IF byte2 = 65 Then Low PORTD.2 IF byte2 = 66 Then Low PORTD.1 IF byte2 = 67 Then Low PORTD.0 IF byte2 = 68 Then Low PORTB.7 IF byte2 = 69 Then Low PORTB.6 IF byte2 = 70 Then Low PORTB.5 IF byte2 = 71 Then Low PORTB.4 IF byte2 = 72 Then Low PORTB.3 IF byte2 = 73 Then Low PORTB.2 IF byte2 = 74 Then Low PORTB.1 IF byte2 = 75 Then Low PORTB.0 IF byte2 = 76 Then Low PORTE.2 IF byte2 = 77 Then Low PORTE.1 IF byte2 = 78 Then Low PORTE.0 IF byte2 = 79 Then Low PORTA.5 IF byte2 = 80 Then Low PORTA.3 IF byte2 = 81 Then Low PORTA.2 IF byte2 = 82 Then Low PORTA.1 IF byte2 = 83 Then Low PORTA.0 GoTo loop End