User manual

mikroPascal PRO for PIC32
MikroElektronika
233
Directive org
Directive org species the starting address of a constant or a routine in ROM. It is appended to the constant or a routine
declaration.
To place a constant array in Flash memory, write the following :
// Constant array MONTHS will be placed starting from the address 0x9D000000
const MONTHS : array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31); org
0x800;
If you want to place simple type constant into Flash memory, instead of following declaration:
const SimpleConstant : byte = 0xAA; org 0x9D000000;
use an array consisting of single element :
const SimpleConstant : array[1] of byte = (0xAA); org 0x9D000000;
In rst case, compiler will recognize your attempt, but in order to save Flash space, and boost performance, it will
automatically replace all instances of this constant in code with it's literal value.
In the second case your constant will be placed in Flash in the exact location specied.
To place a routine on a specic address in Flash memory you should write the following :
procedure proc(par : byte); org 0x9D000000;
begin
// Procedure will start at address 0x9D000000;
...
end;
org directive can be used with main routine too. For example:
program Led_Blinking;
begin org 0x9D000000; // main procedure starts at 0x9D000000
...
end.
Directive orgall
Use the orgall directive to specify the address above which all routines and constants will be placed. Example:
begin
orgall(0x9D000000); // All the routines, constants in main program will be above the
address 0x9D000000
...
end.