bool tacho_stop( uint8_t port ) { uint8_t lmc[] = { opOUTPUT_STOP, LC0( 0 ), LC0( port ),LC0( 0 ) }; int n = ev3_tcp_direct( 0, 0, lmc, sizeof( lmc ), DIRECT_COMMAND_NO_REPLY ); if ( n == EOF ) return ( false ); return ( false ); }
bool tacho_start( uint8_t port, uint8_t val ) { uint8_t lmc[] = { opOUTPUT_POWER, LC0( 0 ), LC0( port ), LC0( val ), opOUTPUT_START, LC0( 0 ), LC0( port ) }; int n = ev3_tcp_direct( 0, 0, lmc, sizeof( lmc ), DIRECT_COMMAND_NO_REPLY ); if ( n == EOF ) return ( false ); return ( false ); }
bool sensor_value( uint8_t port, void *buf ) { size_t globals = 1; uint8_t lmc[] = { opINPUT_READ, LC0( 0 ), LC0( port ), LC0( 0 ), LC0( 0 ), GV0( 0 ) }; int n = ev3_tcp_direct( 1, 0, lmc, sizeof( lmc ), DIRECT_COMMAND_REPLY ); if ( n == EOF ) return ( false ); sleep_msec( 100 ); return ( ev3_tcp_direct_reply( n, buf, &globals ) == DIRECT_REPLY ); }
UBYTE prg[] = { // p2 // IMAGE header PROGRAMHeader(0,1,0), // VersionInfo,NumberOfObjects,GlobalBytes VMTHREADHeader(28,0), // OffsetToInstructions,LocalBytes // // VMTHREAD1 // { opUI_WRITE,LC0(PUT_STRING),LCS, // UI_WRITE(STRING," Make 10 pulses\r\n") ' ',' ',' ',' ', // 'M','a','k','e',' ','1','0',' ', // 'p','u','l','s','e','s', // '\r','\n',0, // // opUI_FLUSH, // UI_FLUSH opOUTPUT_SPEED,LC0(0),LC0(1),LC1(50), // OUTPUT_SPEED(0,1,50) opOUTPUT_SPEED,LC0(0),LC0(1),LC0(0), // OUTPUT_SPEED(0,1,0) opOUTPUT_SPEED,LC0(0),LC0(1),LC1(50), // OUTPUT_SPEED(0,1,50) opOUTPUT_SPEED,LC0(0),LC0(1),LC0(0), // OUTPUT_SPEED(0,1,0) opOUTPUT_SPEED,LC0(0),LC0(1),LC1(50), // OUTPUT_SPEED(0,1,50) opOUTPUT_SPEED,LC0(0),LC0(1),LC0(0), // OUTPUT_SPEED(0,1,0) opOUTPUT_SPEED,LC0(0),LC0(1),LC1(50), // OUTPUT_SPEED(0,1,50) opOUTPUT_SPEED,LC0(0),LC0(1),LC0(0), // OUTPUT_SPEED(0,1,0) opOUTPUT_SPEED,LC0(0),LC0(1),LC1(50), // OUTPUT_SPEED(0,1,50) opOUTPUT_SPEED,LC0(0),LC0(1),LC0(0), // OUTPUT_SPEED(0,1,0) opOUTPUT_SPEED,LC0(0),LC0(1),LC1(50), // OUTPUT_SPEED(0,1,50) opOUTPUT_SPEED,LC0(0),LC0(1),LC0(0), // OUTPUT_SPEED(0,1,0) opOUTPUT_SPEED,LC0(0),LC0(1),LC1(50), // OUTPUT_SPEED(0,1,50) opOUTPUT_SPEED,LC0(0),LC0(1),LC0(0), // OUTPUT_SPEED(0,1,0) opOUTPUT_SPEED,LC0(0),LC0(1),LC1(50), // OUTPUT_SPEED(0,1,50) opOUTPUT_SPEED,LC0(0),LC0(1),LC0(0), // OUTPUT_SPEED(0,1,0)
//**************************************************************************** // Disassembler Listing //**************************************************************************** UBYTE prg[] = { /* 0 */ PROGRAMHeader(0.46,2,8), /* 16 */ VMTHREADHeader(40,5), // Object 1 /* 28 */ BLOCKHeader(65,1,1), // Object 2 /* Object 1 (VMTHREAD) [40..65] */ /* 40 */ opMOVE32_32,LC0(0),LV0(0), /* 43 */ opCP_EQ32,LC4(100000),LV0(0),LV0(4), /* 51 */ opOBJECT_TRIG,LC0(2), /* 53 */ opOBJECT_WAIT,LC0(2), /* 55 */ opJR_TRUE,LV0(4),LC0(6), /* 58 */ opADD32,LV0(0),LC0(1),LV0(0), /* 62 */ opJR,LC0(-21), /* 64 */ opOBJECT_END, /* Object 2 (BLOCK) [65..67] */ /* 65 */ opNOP, /* 66 */ opOBJECT_END, }; //****************************************************************************
UBYTE prg[] = { // p3 // IMAGE header PROGRAMHeader(0,1,0), // VersionInfo,NumberOfObjects,GlobalBytes VMTHREADHeader(28,4), // OffsetToInstructions,LocalBytes // // VMTHREAD1 // { opUI_WRITE,LC0(PUT_STRING),LCS, // UI_WRITE(STRING," Print input changes\r\n") ' ',' ',' ',' ', // 'P','r','i','n','t',' ', // 'i','n','p','u','t',' ', // 'c','h','a','n','g','e','s', // '\r','\n',0, // opUI_FLUSH, // UI_FLUSH // opINPUT_READ,LC0(0),LC0(0),LC0(0), // INPUT_READ(0,0,0,0,LV0) LC0(0),LV0(0), // // do // { // do // { opINPUT_READ,LC0(0),LC0(0),LC0(0), // INPUT_READ(0,0,0,0,LV1) LC0(0),LV0(1), // // } opJR_EQ8,LV0(0),LV0(1),LC0(-10), // while (LV0 == LV1) // opMOVE8_8,LV0(1),LV0(0), // LV0 = LV1 // opUI_WRITE,LC0(VALUE8),LV0(1), // UI_WRITE(VALUE8,LV1) opUI_WRITE,LC0(PUT_STRING),LCS,'\r', // UI_WRITE(PUT_STRING,"\r\n")
// \ `----------------------' // \ // (VMTHREAD2--WRITE(One)--DELAY(1)--LOOP10)-----) // ^ | // | | // `----------------------' // UBYTE prg[] = // p12.c { // PROGRAMHeader(0,2,0), // VersionInfo,NumberOfObjects,GlobalBytes VMTHREADHeader(40,5), // OffsetToInstructions,LocalBytes VMTHREADHeader(106,5), // OffsetToInstructions,LocalBytes // // VMTHREAD1 // { opUI_WRITE,LC0(PUT_STRING),LCS,' ',' ',' ',' ','P', // UI_WRITE(STRING," Parallel programming\r\n"); 'a','r','a','l','l','e','l',' ','p','r','o', // 'g','r','a','m','m','i','n','g','\r','\n',0, // opUI_FLUSH, // UI_FLUSH opOBJECT_START,LC0(2), // START_OBJECT(2) // opMOVE8_8,LC0(10),LV0(4), // LV4 = 10 // do // { opUI_WRITE,LC0(PUT_STRING),LCS,' ',' ',' ',' ','O', // UI_WRITE(STRING," One\r\n"); 'n','e','\r','\n',0, // opUI_FLUSH, // UI_FLUSH opTIMER_WAIT,LC2(1000),LV0(0), // DELAY(1) opTIMER_READY,LV0(0), // // } opSUB8,LV0(4),LC0(1),LV0(4), // while(--LV4)
UBYTE prg[] = { // p0 // IMAGE header PROGRAMHeader(0,1,0), // VersionInfo,NumberOfObjects,GlobalBytes VMTHREADHeader(0,0), // OffsetToInstructions,LocalBytes // // VMTHREAD1 // { opUI_WRITE,LC0(PUT_STRING),LCS, // UI_WRITE(STRING," Do nops\r\n") ' ',' ',' ',' ', // 'D','o',' ','n','o','p','s', // '\r','\n',0, // opUI_FLUSH, // UI_FLUSH // do // { opNOP, // nop opNOP, // nop opNOP, // nop opNOP, // nop opNOP, // nop opNOP, // nop opNOP, // nop opNOP, // nop opNOP, // nop opNOP, // nop // } opJR,LC0(-12), // while (TRUE) // opOBJECT_END // } };
UBYTE prg[] = { // p9 // IMAGE header PROGRAMHeader(0,1,2), // VersionInfo,NumberOfObjects,GlobalBytes VMTHREADHeader(28,0), // OffsetToInstructions,LocalBytes // // VMTHREAD1 // { opUI_WRITE,LC0(PUT_STRING),LCS, // UI_WRITE(STRING," DATA8 multiply\r\n") ' ',' ',' ',' ', // 'D','A','T','A','8',' ', // 'm','u','l','t','i','p','l','y', // '\r','\n',0, // opUI_FLUSH, // UI_FLUSH // do // { opMOVE8_8,LC0(3),GV0(0), // GV0 = 3 opMOVE8_8,LC0(7),GV0(1), // GV1 = 7 // opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 opMUL8,GV0(0),GV0(1),GV0(0), // GV0 = GV0 * GV1 // } opJR,LC1(-43), // while (TRUE)
/*! \page programexample1 Line Follower * * Example program * * <hr size="1"/> * \verbatim */ UBYTE prg[] = // p5.c { // PROGRAMHeader(0,1,0), // 0 VersionInfo,NumberOfObjects,GlobalBytes VMTHREADHeader(0,3), // 12 OffsetToInstructions,LocalBytes // // 24 VMTHREAD1 // { opUI_WRITE,LC0(PUT_STRING),LCS, // UI_WRITE(STRING," LineFollower\r\n") ' ',' ',' ',' ', // 'L','i','n','e','F','o','l', // 'l','o','w','e','r', // '\r','\n',0, // opUI_FLUSH, // UI_FLUSH // opINPUT_READ,LC0(0),LC0(1), // INPUT_READ(0,0,2,LV0) // Read light sensor LC1(2),LC0(1),LV0(0), // opDIV8,LV0(0),LC0(2),LV0(0), // LV0 /= 2 opADD8,LV0(0),LC0(15),LV0(0), // LV0 += 15 // // do // { opINPUT_READ,LC0(0),LC0(1), // INPUT_READ(0,0,2) // Read light sensor LC1(2),LC0(1),LV0(1), // opSUB8,LV0(1),LV0(0),LV0(1), // LV1 -= LV0