OUT *(PA),loc16
6-265
OUT *(PA),loc16 Output Data to Port
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
OUT *(PA),loc16 1011 1100 LLLL LLLL
CCCC CCCC CCCC CCCC
1 − 4
Operands *(PA) Immediate I/O space memory address
loc16 Addressing mode (see Chapter 5)
Description Store the 16-bit value from the location pointed to by the “loc16” addressing
mode into the I/O space location pointed to by the *(PA) operand):
IOspace[0x0000PA] = [loc16];
I/O Space is limited to 64K range (0x0000 to 0xFFFF). On the external
interface (XINTF), if available on a particular device, the I/O strobe signal
(XISn) is toggled during the operation. The I/O address appears on the lower
16 XINTF address lines (XA(15:0)) and the upper address lines are zeroed.
The data appears on the lower 16 data lines (XD(15:0).
Note: The UOUT operation is not pipeline protected. Hence, if an IN instruction immediately
follows a UOUT instruction, the IN will occur before the UOUT. To be certain of the
sequence of operation, use the OUT instruction, which is pipeline protected.
Note: The UOUT operation is not pipeline protected. Therefore, if an IN instruction
immediately follows a UOUT instruction, the IN will occur before the UOUT. To be
certain of the sequence of operation, use the OUT instruction, which is pipeline
protected.
I/O space may not be implemented on all C28x devices. See the data sheet for your
particular device for details.
Flags and
Modes
None
Repeat This instruction is not repeatable. If this instruction follows the RPT
instruction, it resets the repeat counter (RPTC) and executes only once.
Example
; IORegA address = 0x0300;
; IOREgB address = 0x0301;
; IOREgC address = 0x0302;
; IORegA = 0x0000;
; IORegB = 0x0400;
; IORegC = VarA;
; if( IORegC = 0x2000 )
; IORegC = 0x0000;
IORegA .set 0x0300 ; Define IORegA address
IORegB .set 0x0301 ; Define IORegB address
IORegC .set 0x0302 ; Define IORegC address
MOV @AL,#0 ; AL = 0
UOUT *(IORegA),@AL ; IOspace[IORegA] = AL
MOV @AL,#0x0400 ; AL = 0x0400
UOUT *(IORegB),@AL ; IOspace[IORegB] = AL
OUT *(IORegC),@VarA ; IOspace[IORegC] = VarA