Difference between revisions of "Exercise - Inserting Code Into Flowcode"

From Flowcode Help
Jump to navigationJump to search
Line 65: Line 65:
 
::* a Code icon [[File:Btn C Code.gif|30px]]- details given below;
 
::* a Code icon [[File:Btn C Code.gif|30px]]- details given below;
 
::* a delay icon configured to give a two second delay.
 
::* a delay icon configured to give a two second delay.
 +
 +
  
  
Line 79: Line 81:
 
Configure the Code icon by typing in the following code, exactly as written here:
 
Configure the Code icon by typing in the following code, exactly as written here:
  
  trisb = 0;                        //Set all of Port B to output<br />
+
  trisb = 0;                        //Set all of Port B to output <br />
  portb = FCV_VAR1;                  //Output the value of var1 to port B<br />
+
  portb = FCV_VAR1;                  //Output the value of var1 to port B <br />
  trisa = 1;                        //Convert port A bit 0 to input<br />
+
  trisa = 1;                        //Convert port A bit 0 to input <br />
  if (test_bit(porta,0))            //Check to see if A0 is high<br />
+
  if (test_bit(porta,0))            //Check to see if A0 is high <br />
  (<br />
+
  ( <br />
  portb = FCV_VAR1 + FCV_ADD;        //If so, portb = 2 + 3 = 5 (0101 in binary)<br />
+
  portb = FCV_VAR1 + FCV_ADD;        //If so, portb = 2 + 3 = 5 (0101 in binary) <br />
  )<br />
+
  ) <br />
  else<br />
+
  else <br />
  (<br />
+
  ( <br />
  portb = FCV_VAR1;                //Otherwise portb = 2<br />
+
  portb = FCV_VAR1;                //Otherwise portb = 2 <br />
  )<br />
+
  ) <br />
 +
 
  
 
'''Some notes on this code:'''
 
'''Some notes on this code:'''
 +
 
* The ports on the PIC chip are bi-directional - they can act as either input or output.
 
* The ports on the PIC chip are bi-directional - they can act as either input or output.
 
* Their behaviour is controlled by the contents of two more registers - TRISA (for Port A) and TRISB (for Port B.)
 
* Their behaviour is controlled by the contents of two more registers - TRISA (for Port A) and TRISB (for Port B.)

Revision as of 20:33, 18 August 2013

<sidebar>Sidebar: What Is a Macro?</sidebar> C code is a high-level programming language widely used in industry.
It has spawned a number of other programming languages, such as C#, C++, Java and Python.

Flowcode programs are first compiled into C before being crunched down eventually into hex code.

There are two mechanisms for adding your own C code to a Flowcode flowchart:

Exercise InsCode C suppcode.jpg
  • using the 'C Code' icon Btn C Code.gif ;
  • using the 'Use supplementary code' facility within 'Project Options', shown opposite:



Why would you want to?

  • Flowcode programs are compiled to 'C', but produce many lines of code.
They do so because they must be able to cope with any function or structure that the designer wishes to use.
Experienced C programmers may wish to use code more efficiently, and so insert a few lines of code to replace many lines which Flowcode would generate. (This usually applies to the 'Adding supplementary code' option.)
  • Experienced programmers can insert a short section of C code in order to reduce the length, or complexity, of the Flowcode program.
  • Students learning to program in C can test short sections of code by inserting them into a Flowcode program. This avoids having to write the full program in C.


Adding supplementary code

This feature is used when you have blocks of code containing routines, definitions, lookup tables, etc.


Definitions and function declarations:

This is the first section. It allows users to initialise the program, by adding structures such as 'defines', 'includes', and other function declarations. This section must be placed at the beginning of the C file so that the code is 'visible' to all parts of the program.


Function implementations:

This second section allows for the addition of the main function code.


Structured thus, the code is accessible to any Flowcode macro, and vice-versa.


Warning

Be sure that the added C code is correct!

Flowcode does not simulate C Code, so programs that make use of supplementary code may not simulate correctly. Where Flowcode fails to compile, it may be that the supplementary code contains errors.


Using the 'Code' icon

  • a loop icon, configured as an infinite loop;
  • a calculation icon:
  • use it to create two byte variables, 'var1' and 'add',
  • set them to the following values:
var1 = 2, add = 3;
  • a Code icon Btn C Code.gif- details given below;
  • a delay icon configured to give a two second delay.







The C Code

Configure the Code icon by typing in the following code, exactly as written here:

trisb = 0;                         //Set all of Port B to output 
portb = FCV_VAR1; //Output the value of var1 to port B
trisa = 1; //Convert port A bit 0 to input
if (test_bit(porta,0)) //Check to see if A0 is high
(
portb = FCV_VAR1 + FCV_ADD; //If so, portb = 2 + 3 = 5 (0101 in binary)
)
else
(
portb = FCV_VAR1; //Otherwise portb = 2
)


Some notes on this code:

  • The ports on the PIC chip are bi-directional - they can act as either input or output.
  • Their behaviour is controlled by the contents of two more registers - TRISA (for Port A) and TRISB (for Port B.)
  • A value of '0' in the control register makes the corresponding bit of the port into an output bit.
  • A value of '1' in the control register makes the corresponding bit of the port into an input bit.
  • Commands are finished by adding a semicolon (;).
  • The characters '//' are used to indicate comments - there to aid understanding of the program. These are ignored by the compiler.
  • Where variables are defined in the Flowcode program, the prefix 'FCV_' must be added to the name of the variable, which is written in upper case lettering.
  • The 'if-else' construction examines a possible condition - "Is Port A bit 0 high?"
  • If true, the values of the two variables are added together and sent to Port B.
  • If false, only the value of 'var1' is sent to Port B.
  • All of this could have been done using 'pure' Flowcode, but it would have required around five more icons in the flowchart.

Heading

The flowchart sequence

The flowchart sequence:

  • Check if switch 1 is pressed.
If it isn't, make the red LED flash slowly.

The main program

  • Make sure that the System Panel is visible. If necessary, click on View and then select 'System Panel' a check-box will appear next to the option when enabled.
  • Drag and drop a Loop icon between the BEGIN and END icons.

Next, add icons to control what happens when switch is not pressed, (and so the program follows the 'No' branch