Can the VEX controller be programmed in assembly?

I want to use it like a demo board, to learn the chip and use LED’s in the 16 Analog / Digital I/O ports.

Besides modifying the programming dongle to program only the slave. And possibly program the master with an inert program, to disconnect the communication between the master and slave?

Does anybody know if it will work or have a suggestion


It can be programmed in Assembly using MPLAB. MPLAB comes with the Assembler by default as part of the freeware package.

It’s pretty easy to isolate the master processor in code, so you can program the user processor fairly freely.
If you’re really thinking about a hardware bypass then it’d be simpler to just purchase a PIC of your own.

I am not sure where to start.

I have plenty of experience with Parallax 8 bit SX28 & 52’s, but I haven’t ever worked with “C” or Pic’s. So I bought Myke Predko’s “123 PIC Controller experiments for the evil genius” to help get me going over the Christmas break and a VEX controller to program with.

I know I need to start with EasyC, but after that I want to use a regular IDE like MPLAB & C18 to program with. The biggest problem I see is, what Loader program would I use and how does it know which chip it’s programming?

(I am planning on buying Myke Predko’s “Programming and Customizing the PIC Microcontroller” after Christmas. I would like to use the VEX robot to learn more Assembly using the Pic instead of the SX, but after the competition)



Bill - Take a look here ( - See if the utilities and explanations take care of (most of) your questions - Blake

Blake catches the toolset questions.

The latest IFI_Loader is what you’re looking for to download the code to Vex.
You don’t need to specify the PIC model to IFI_Loader though.

You tell MPLAB what PIC model you’re working with either using it’s “Project Wizard” (you select the PIC model you’re working with on the first menu), or under “Configure->Select Device.”

I like Myke Predko’s books.

I need clarification on a few more things (For now :slight_smile: ) How does the IFI loader know if it’s programming the Master or the Slave mpu?

After working with EasyC v2 and reading my book today, I would rather skip EasyC and go with the book (“C” doesn’t seem to be as difficult as I thought it would be). So the Master-Slave, is an issue (I think) if I am going to use the VEX controller like it was a development board (or Pic-Kit 1).

Also, what is the “desired directory” to install Java Term into?

Mark and Blake, Thank you for your help.


Bill M.

One of the cool things about using a PIC is that once the hardware is done, it’s easy to change the code. It’s faster to download new code rather than breaking out the solder.

For me, creating the initial hardware design is a stumbling block. I can do block setups of what needs to connect to what, but the devil is always in the details. VirtualBreadboard is a way to draw the circut out and test it. It has the ability to read the output from the MPLabs compiler and use it to drive the simulation. You can do either assembler or C.

You might want to take a look at using it as a practice point. A bonus is the examples from the 123 book have been converted, so you can see the code, see the circuit and off you go.

Once you get the hang of it in the Virtual environment, it may be easier to do the programming on the Vex.

IFI_Loader defaults to loading the user processor files, but can be changed on the “Browse” pop-up. Down at the bottom of that pop-up window you’ll see “Files of type:”
The user processor takes hex files of type “INHEX32 Files (*.HEX),” the hex files that MPLAB produces from your source code after compiling and linking.

IFI doesn’t release the Master processor code source, or provide the proprietary information required to program it directly ourselves.
They only release binary updates to the Master processor. Think of the Master processor as an Operating System with periodic patch updates. Those show up in the IFI_Loader Browse pop-up as type: “Master Files (*.BIN)”
The Vex system is at version 7 of the Master Code, re:

For your purpose it’s easiest to write a shell that handles the existing communications/control from the Master processor and program in assembly within that shell.

Also, what is the “desired directory” to install Java Term into?

It’s just another application so typically that goes into “Program Files” on your C drive, but it doesn’t have to be any particular place.