Microchip® Advanced Software Framework

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros for reading, writing and testing registers

In order to simplify the code, the assembly code is interfaced through macros.

Macros

#define CLASSB_RegClear_IO(reg)
 Clear IO-register. More...
 
#define CLASSB_RegClear_R(reg)
 Clear R register. More...
 
#define CLASSB_RegRestore_IO(reg)
 Restore IO-register content. More...
 
#define CLASSB_RegRestore_R(reg)
 Load R register content from R31. More...
 
#define CLASSB_RegSet_IO(reg, value)
 Set IO-register to specified value. More...
 
#define CLASSB_RegSet_R_HI(reg, value)
 Set high R-register to specified value. More...
 
#define CLASSB_RegSet_R_LO(reg, value)
 Set low R-register to specified value. More...
 
#define CLASSB_RegStore_IO(reg)
 Store IO-register content. More...
 
#define CLASSB_RegStore_R(reg)
 Save R register content to R31. More...
 
#define CLASSB_RegTest_IO(reg, value, label)
 Test IO register with specified value, jump to specified label on fault. More...
 
#define CLASSB_RegTest_R_HI(reg, value, label)
 Test R16-31 with specified value, jump to specified label on fault. More...
 
#define CLASSB_RegTest_R_LO(reg, value, label)
 Test R0-15 with specified value, jump to specified label on fault. More...
 

#define CLASSB_RegClear_IO (   reg)
Value:
"clr r30 \n" \
"out " #reg ", r30 \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Clear IO-register.

Parameters
regIO-address of register to clear.
Note
The IO-register is cleared via R30.
#define CLASSB_RegClear_R (   reg)
Value:
"clr " #reg " \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Clear R register.

Parameters
regR-register to clear.
Note
This macro works for any R-register (R0-R31).
#define CLASSB_RegRestore_IO (   reg)
Value:
"out " #reg ", r31 \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Restore IO-register content.

Parameters
regIO-address of register to restore.
Note
The value of the IO-register is restored from R31.

Referenced by classb_register_test().

#define CLASSB_RegRestore_R (   reg)
Value:
"mov " #reg ", r31 \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Load R register content from R31.

Parameters
regR-register to restore from R31.

Referenced by classb_register_test().

#define CLASSB_RegSet_IO (   reg,
  value 
)
Value:
"ldi r30, " #value " \n" \
"out " #reg ", r30 \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Set IO-register to specified value.

Parameters
regIO-address of register to set.
valueValue to set register to.
Note
The value is copied into the specified register via R30.

Referenced by classb_register_test().

#define CLASSB_RegSet_R_HI (   reg,
  value 
)
Value:
"ldi " #reg ", " #value " \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Set high R-register to specified value.

Parameters
regR-register to set (R16-R31).
valueValue to set R-register to.

Referenced by classb_register_test().

#define CLASSB_RegSet_R_LO (   reg,
  value 
)
Value:
"ldi r30, " #value " \n" \
"mov " #reg ", r30 \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Set low R-register to specified value.

Parameters
regR-register to set (R0-R15).
valueValue to set R-register to.
Note
The value is copied into the specified register via R30.

Referenced by classb_register_test().

#define CLASSB_RegStore_IO (   reg)
Value:
"in r31, " #reg " \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Store IO-register content.

Parameters
regIO-address of register to store.
Note
The value of the IO-register is stored in R31.

Referenced by classb_register_test().

#define CLASSB_RegStore_R (   reg)
Value:
"mov r31, " #reg " \n" \
)
#define ASSEMBLY
Definition: classb_cpu.h:48

Save R register content to R31.

Parameters
regR-register to store in R31.

Referenced by classb_register_test().

#define CLASSB_RegTest_IO (   reg,
  value,
  label 
)
Value:
"ldi r30, " #value " \n" \
"out " #reg ", r30 \n" \
"in r30, " #reg " \n" \
"cpi r30, " #value " \n" \
"breq A_" STRINGIZE(LABEL(reg,value,__LINE__)) " \n" \
"jmp " STRINGIZE(label) " \n" \
"A_" STRINGIZE(LABEL(reg,value,__LINE__)) ": \n" \
)
#define LABEL(X, Y, Z)
Definition: classb_cpu.h:60
#define STRINGIZE(X)
Definition: classb_cpu.h:58
#define ASSEMBLY
Definition: classb_cpu.h:48

Test IO register with specified value, jump to specified label on fault.

Note
R30 is used in the copying of values to the register.
Parameters
regAddress of IO register to test.
valueValue to test register with.
labelLabel to jump to if test fails.

Referenced by classb_register_test().

#define CLASSB_RegTest_R_HI (   reg,
  value,
  label 
)
Value:
"ldi " #reg ", " #value " \n" \
"cpi " #reg ", " #value " \n" \
"breq A_" STRINGIZE(LABEL(reg,value,__LINE__)) " \n" \
"jmp " STRINGIZE(label) " \n" \
"A_" STRINGIZE(LABEL(reg,value,__LINE__)) ": \n" \
)
#define LABEL(X, Y, Z)
Definition: classb_cpu.h:60
#define STRINGIZE(X)
Definition: classb_cpu.h:58
#define ASSEMBLY
Definition: classb_cpu.h:48

Test R16-31 with specified value, jump to specified label on fault.

Parameters
regRegister to test (R16..R31).
valueValue to test register with.
labelLabel to jump to if test fails.

Referenced by classb_register_test().

#define CLASSB_RegTest_R_LO (   reg,
  value,
  label 
)
Value:
"ldi r30, " #value " \n" \
"mov " #reg ", r30 \n" \
"mov r30, " #reg " \n" \
"cpi r30, " #value " \n" \
"breq A_" STRINGIZE(LABEL(reg,value,__LINE__)) " \n" \
"jmp " STRINGIZE(label) " \n" \
"A_" STRINGIZE(LABEL(reg,value,__LINE__)) ": \n" \
)
#define LABEL(X, Y, Z)
Definition: classb_cpu.h:60
#define STRINGIZE(X)
Definition: classb_cpu.h:58
#define ASSEMBLY
Definition: classb_cpu.h:48

Test R0-15 with specified value, jump to specified label on fault.

Note
R30 is used in the copying values to the register.
Parameters
regRegister to test (R0..R15).
valueValue to test register with.
labelLabel to jump to if test fails.

Referenced by classb_register_test().