17.07.2013 Views

Manual CEPR 96 - Balogh technical center

Manual CEPR 96 - Balogh technical center

Manual CEPR 96 - Balogh technical center

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

When this message is sent to the <strong>CEPR</strong><strong>96</strong> (MRUC20), it's doing the operations below :<br />

- if NL < FFH : delete the program line number NL<br />

- if NL = FFH : - Clear the program.<br />

- Turn off (to 0) all outputs.<br />

- Set to line 00H the origin of the main program.<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Delete the line 10 from the card 0 (NC = 2N+1 =1)<br />

PAGE 1<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

NL - Number of the line to delete 0 à FEH<br />

REQUEST<br />

hexadecimal : 01 00 10 05 04<br />

mnemonic : ;10,CL.<br />

RESPONSE<br />

hexadecimal : 01 00 10 05 04<br />

Delete Line or Program<br />

REQUEST RESPONSE<br />

NC 00 NL 05 04<br />

NC 00 NL 05 04<br />

;NL,CL. Delete the line NL from the program.<br />

CL. Clear the program<br />

SUPERVISION<br />

- Clear the programme FFH<br />

Note : To delete something from the board, it must be on BREAK.<br />

00H<br />

CL


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

In supervision mode, the <strong>CEPR</strong><strong>96</strong> (MRUC20) gets L0 as origin for the main program.<br />

EXAMPLE<br />

ORIGIN for the MAIN PROGRAM 01H<br />

REQUEST RESPONSE<br />

NC 01 L0 05 04<br />

NC 01 L0 05 04<br />

:ORG. Define the current line as the origin.<br />

;L0,ORG. Define L0 as the program origin.<br />

SUPERVISION<br />

SYMBOLS DEFINITION LIMITS<br />

L0 number of the line to assign as origin for<br />

the main program<br />

Fixing the program origine on line 08 for the card number 1<br />

REQUEST<br />

hexadecimal : 01 01 08 05 04<br />

mnemonic : ;8,ORG.<br />

RESPONSE<br />

hexadecimal : 01 01 08 05 04<br />

PAGE 2<br />

0 to FDH<br />

ORG


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SEARCH for ORIGINE of the<br />

PROGRAMME<br />

NC 02 XX 05 04<br />

RORG.<br />

SUPERVISION<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 3<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

Ask for the origin line number from the card Nb 1. The origin is 08H for this board.<br />

REQUEST :<br />

hexadecimal : 01 02 00 05 04<br />

mnemonic : RORG.<br />

RESPONSE :<br />

hexadecimal : 01 02 08 05 04<br />

DEMANDE REPONSE<br />

NC 02 L0 05 04<br />

XX - any value. 0 to FFH<br />

L0 - number of the origin line for the main 0 to FDH<br />

program.<br />

02H<br />

RORG<br />

By this request, the <strong>CEPR</strong><strong>96</strong> (MRUC20) put into the xx value, the origin line number of<br />

the main program, and gives an echo of the command.


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

The <strong>CEPR</strong><strong>96</strong> (MRUC20) return data from the line NL of the program or a message "not<br />

a progrm line"<br />

EXAMPLE<br />

READ a LIGNE of PROGRAM<br />

SYMBOLS DEFINITION LIMITS<br />

NL -Number of the line 0 à FDH<br />

Get data from the line Nb 8 of the programme, NC = 01.<br />

REQUEST<br />

hexadecimal : 01 03 08 05 04<br />

mnemonic : ;8,RL.<br />

REQUEST RESPONSE<br />

NC 03 NL 05 04<br />

NC 00 NL 05 04 => Not a program line<br />

NC,NI,NL,NB,...,04 => Data from the line<br />

;NL,RL.<br />

SUPERVISION<br />

RESPONSE : Jump (30H) to the line 50<br />

hexadecimal: 01 30 08 06 50 04<br />

PAGE 4<br />

03H<br />

R L


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SEARCH for the RUNNING LINE<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 5<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

REQUEST RESPONSE<br />

NC 04 XX 05 04 NC 04 LC 05 04<br />

RLP.<br />

SUPERVISION<br />

04H<br />

RLP<br />

The <strong>CEPR</strong><strong>96</strong> (MRUC20) remplace XX by the number of the running line (in hexadecimal)<br />

XX - Any value 0 à FDH<br />

For the <strong>CEPR</strong><strong>96</strong> Nb 1, the line 19 is running (NC=01).<br />

REQUEST<br />

hexadecimal : 01 04 FF 05 04<br />

mnemonic : RLP.<br />

RESPONSE<br />

hexadecimal : 01 04 19 05 04


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

Setup the starting mode :<br />

- if NL = 0 : on each start, the <strong>CEPR</strong><strong>96</strong> (MRUC20) will start the program on the first line<br />

of the main program.<br />

- si NL > 0 : the <strong>CEPR</strong><strong>96</strong> (MRUC20) will restart on the line under processing just before<br />

the power off (Outputs registers will be restored).<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

Set the board to restart on the line under processing when the power was shut<br />

down. (NC =01).<br />

REQUEST<br />

hexadecimal : 01 05 FF 05 04<br />

mnemonic : ;1,RMOD.<br />

RESPONSE<br />

hexadecimal : 01 05 FF 05 04<br />

STARTING MODE<br />

REQUEST RESPONSE<br />

NC 05 NL 05 04 NC 05 NL 05 04<br />

NL The NL value set the starting conditions 0 à FFH<br />

PAGE 6<br />

05H<br />

RMOD<br />

;0,RMOD. when it is putting under power; PP = origin, BREAK enable<br />

;1,RMOD. when it is putting under power; PP = courent line, BREAK enable<br />

SUPERVISION


STOP the PROGRAM EXECUTION<br />

SYNTAX<br />

SYNTAX<br />

Hexadecimal : NC 06 00 05 04<br />

Hexadecimal :<br />

Mnemonic : INS,6,0.<br />

Mnémonic :<br />

EXECUTION<br />

Used to stop the program, to reset the program pointer to the origin line, and to reset<br />

EXECUTION<br />

the outputs ports. The board must be in BREAK mode before program down loading<br />

and/or program modification (It's automaticaly done with the <strong>CEPR</strong>-3W software).<br />

STEP by STEP PROGRAM EXECUTION<br />

COMMENTS<br />

SYNTAX<br />

Hexadecimal : NC 06 01 05 04<br />

Mnemonic : INS,6,1.<br />

EXECUTION SYMBOLS DEFINITION LIMITS<br />

Stop the program execution but doesn't reset anythings. Each STEP command allows<br />

to execute the automate program, the courent line and to increment the courent line<br />

number.<br />

EXAMPLE<br />

PAGE 7<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

06 00<br />

BREAK<br />

06 01<br />

STEP<br />

NOTE :<br />

Inputs,outputs, and timers counters continue to be updated as the normal program<br />

execution.<br />

RUN the PROGRAM<br />

SYNTAX<br />

Hexadecimal : NC 06 02 05 04<br />

06 02<br />

RUN<br />

Mnemonic : INS,6,2.<br />

Start the program execution.<br />

Note : Put the board under power, allows an automatic RUN with the initials conditions<br />

define by the RMOD (05H) function.


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

READ the ACCUMULATOR MEMORY<br />

REQUEST RESPONSE<br />

NC 24 FF NB AD0...ADN...04 NC 24 FF NB AD0 DV0..ADN DVN..04<br />

LD ,ADO...,ADN.<br />

SUPERVISION<br />

SEPARATED FORMAT<br />

MEMOIRE ACCU<br />

ADN DVN<br />

COMMENTS<br />

Allows to read the Accumulator memory (the selected one).<br />

The separated format dictate to the user to specify each address to read.<br />

The response is return as : address,data;address,data...<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

To read address 00H and 7FH from the accumulator memory.<br />

REQUEST : hexa : 01 24 FF 07 00 7F 04<br />

mné. : LD,0,7FH.<br />

PAGE 8<br />

USER<br />

NB Number of bytes for the message 0 à FFH<br />

ADN address to read 0 à FFH<br />

DVN Data return from the address ADN 0 à FFH<br />

RESPONSE : Data from address 00H and 7FH have the values 4EH et 00.<br />

hexa : 01 24 FF 09 00 4E 7F 00 04<br />

24H<br />

LD


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Read the data from the bloc defined as 07H to 0BH in the accumulator memory (NC=01).<br />

PAGE 9<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

READ the ACCUMULATOR MEMORY<br />

REQUEST RESPONSE<br />

NC 25 FF 07 ADdeb ADfin 04 NC 25 FF NB ADdeb ADfin DVO..DVN 04<br />

LD.B,ADdeb,ADfin.<br />

SUPERVISION<br />

BLOC FORMAT<br />

MEMOIREACCU.<br />

ADdeb<br />

ADfin<br />

DVN<br />

USER<br />

25H<br />

LD.B<br />

Allows to the user to get a bloc of data from the selected accumulator memory. The<br />

bloc format dictate to the user to specify the first address and the last address of the<br />

bloc to read.<br />

The response is return as a data list (data between ADdeb and ADfin).<br />

NB number of bytes for the message.<br />

ADdeb First address of the bloc.<br />

ADfin Last address of the bloc.<br />

DVN Data from the defined bloc<br />

DEMANDE :hexadecimal : NC 25 FF 07 07 0B 04<br />

mnemonic : LD.B,07,0B.<br />

RESPONSE : from address 07 to 0BH the data are (in héxa) 0C, 4F, 5E, FF et 04.<br />

hexadecimal : NC 25 FF 0C 07 0B 0C 4F 5E FF 04 04<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

READ EXPENDED MEMORY<br />

IN SUPERVISOR MODE<br />

A016<br />

A016+1<br />

A016+N0<br />

SUPERVISION<br />

(NL = FFH)<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 10<br />

USER<br />

2CH<br />

LLD<br />

Read the the memory in supervisor mode.<br />

This instruction is using addresses in 16 bits, it means that all the memory is accessible<br />

(extended and accumulators).<br />

Read 10 bytes from the address 4000H.<br />

Mné : LLD,10,4000H.<br />

NC 2C FF NB N0 A016 04<br />

LLD,N0,A016.<br />

Response : NC 2C FF NB A016 DV0...DN 04<br />

Extended meory<br />

N0 Number of data to read<br />

A016 First address of the bloc to read<br />

0 à 80H<br />

mapping of<br />

the memory


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

WRITE DATA INTO THE MEMORY<br />

IMMEDIAT ADDRESSING - SEPARATED FORMAT<br />

NC 10 NL NB AD0 DV0.. ADN DVN ..04<br />

MOV,AD0,DV0....ADN,DVN.<br />

ACCU. Memory<br />

ADN<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 11<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

IMMEDIATE<br />

ADDRESSING<br />

Write at the addresses 00 and FFH of the ACCU. memory respectively the data 00 and<br />

01.(NC=01)<br />

Hexadecimal : NC 10 FF 09 00 00 FF 01 04<br />

Mnemonic : MOV, 0,0,FFH,1.<br />

DVN<br />

Move the data DVN at the address ADN of the ACCU. memory.<br />

ADN destination address<br />

DVN Data to write at ADN<br />

Note: If NL = FFH => the command is processing in supervisior mode.<br />

0 à FFH<br />

0 à FFH<br />

10H<br />

MOV


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

ACCU. MEMORY<br />

ADN<br />

DATA TRANSFERT<br />

DIRECT ADRESSING - SEPARATED FORMAT<br />

NC 11 NL NB AD0 DA0 ..ADN DAN ..04<br />

MOV.D,AD0,DA0...,ADN,DAN.<br />

DIRECT ADRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Copy data from addresses 05H and 7FH to the respectives addresses 00H et<br />

FFH.(NC=01)<br />

Hexadecimal : NC 11 10 09 00 05 FF 7F 04<br />

Mnemonic : MOV.D, 0,5,FFH,7FH.<br />

PAGE 12<br />

ACCU. MEMORY<br />

DAN DVN<br />

11H<br />

MOV.D<br />

Transfert the data (DVN) from the address DAN of the ACCU. memory to the ADN<br />

address of the ACCU. memory.<br />

ADN destination address<br />

DAN source address<br />

DVN data to transfert<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

ACCU. MEMORY<br />

ADdeb<br />

ADfin<br />

COMMENTS<br />

Transfert a bloc of successive data (DB) which begin at the address DAdeb to a<br />

memory zone define by the first address ADdeb and the last address ADfin.<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Transfert a bloc of data starting at the address 7FH to the zone define by addresses 7H<br />

to 15H. (NC=01)<br />

Héxa : NC 1D 10 08 07 15 7F 04<br />

Mné : MOV.BD,7H,15H,7FH.<br />

DATA TRANSFERT<br />

DIRECT ADRESSING - BLOC FORMAT<br />

NC 1D NL 08 ADdeb ADfin DAdeb 04<br />

MOV.BD,ADdeb,ADfin,DAdeb.<br />

PAGE 13<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

DIRECT<br />

ADRESSING<br />

ADdeb First address of the destination zone<br />

ADfin Last address of the destination zone<br />

DAdeb First address of the source zone.<br />

DB:<br />

Data bloc<br />

DAdeb<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

1DH<br />

MOV.BD


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal : NC 1E NL NB ADdeb ADfin DV0 ..DVN..04<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

Transfert a bloc of immediat data (DB) into the accumulator memory. The destination<br />

bloc is define by the first address to write (ADdeb) and the last address to write (ADfin).<br />

If only 1 data is given, the data is write everywhere in the destination table.<br />

EXAMPLE<br />

ACCU. MEMORY<br />

ADdeb<br />

ADfin<br />

SYMBOLS DEFINITION LIMITS<br />

Clear the ACCU memory by write 0 in the 256 bytes of the zone.<br />

Hexadecimal : NC 1E FF 08 00 FF 00 04<br />

Mnemonic : MOV.B,0,FFH,0.<br />

DATA TRANSFERT<br />

IMMEDIAT ADRESSING - BLOC FORMAT<br />

MOV.B,ADdeb,ADfin,DV0..,DVN.<br />

PAGE 14<br />

IMMEDIATE<br />

ADDRESSING<br />

ADdeb First address of the destination zone<br />

ADfin Last address of the destination zone<br />

DVN List of data to write<br />

DV The same value to write everywhere<br />

DB :<br />

Data bloc<br />

DVN<br />

DVN..<br />

1EH<br />

MOV.B<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

Transfer of data that the source address is contain by DAN to the address that the<br />

destination address is contain by ADN.<br />

This instruction is called "indirect double", because of indirections both for source<br />

and destination addresses.<br />

EXAMPLE<br />

INDIRECT TRANSFERT OF DATA<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 15<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

INDIRECT DOUBLE ADDRESSING - SEPARATED FORMAT<br />

NC 1F NL NB AD0 DA0 ..ADN DAN ..04<br />

MOV.I,AD0,DA0..,ADN,DAN.<br />

ADN ADX<br />

ADX Val<br />

Transfert of the data that it address is contain at the address 05H to the address<br />

that it address is contain at address 04H.<br />

Hexadecimal : 01 1F 10 07 04 05 04<br />

Mnemonic : MOV.I,4,5.<br />

DAN ADY<br />

ADY Val<br />

ADN pointer on the destination address<br />

ADY address which is contain the source data<br />

DAN pointer on the source address<br />

ADX destination address which receive the data<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

1FH<br />

MOV.I


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

INDIRECT TRANSFERT OF DATA<br />

INDIRECT DOUBLE ADDRESSING - BLOC FORMAT<br />

ACCU. MEMORY<br />

ADdeb<br />

ADfin<br />

COMMENTS<br />

Transfert a bloc of successives data that begining address (DAdy) is contain at the<br />

address DAdeb to a memory zone that it begining address (ADdx) is contain at the<br />

address ADdeb and it end address (ADdz) is contain at the address ADfin.<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Transfert of the bloc of data that it begining address is contain at the address 60H to a<br />

zone define by the begining address that it address is contain at the address 05H and<br />

by the last address that it address is contain at the address 18H.<br />

Hexadecimal: 01 50 10 08 05 18 60 04<br />

Mnemonic: MOV.BI,5,18H,60H.<br />

NC 50 NL 08 ADdeb ADfin DAdeb 04<br />

MOV.BI,ADdeb,ADfin,DAdeb.<br />

ADdx<br />

ADdz<br />

INDRECT DOUBLE<br />

ADDRESSING<br />

PAGE 16<br />

ACCU. MEMORY<br />

DAdeb<br />

DAdy<br />

ADdeb pointer on the starting address of the<br />

destination zone<br />

ADfin pointer on the last address of the destination<br />

zone<br />

DAdeb pointer on the starting address of the source<br />

zone<br />

50H<br />

MOV.BI<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

MOVE IMMEDIATE DATA TO<br />

EXTENDED MEMORY<br />

COMMENTS<br />

The extended memory zone is define by a begining address (A016) and the number of<br />

bytes to write (N).<br />

If there is only 1 data, the same data is write everywhere in the defined zone.<br />

If the instruction contain less data (DVn) than the defined zone, the result will be<br />

unpredictable (the missing data will be the old data contain before the transfert).<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Ex. 1: Transfert the values 1,2,3 from address 0 of the accumulator.<br />

Before<br />

After<br />

NC 72 NL NB N0 A016 DV0...DVN 04<br />

LMOV,N0,A016,DV0,..DVN<br />

Extended Memory<br />

A016<br />

A016+1<br />

A016+N<br />

N Lenght of the zone to write<br />

A016 First address of the zone to write<br />

DVN Immediate data to write<br />

PAGE 17<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

IMMEDIATE<br />

DATA<br />

DV0<br />

DV1<br />

DVn<br />

Note : If N = 0 , the lenght of the zone to write is fixed to 256 bytes.<br />

Mnemonic : LMOV,3,800H,1,2,3.<br />

Zone into the memory DATA<br />

result<br />

72H<br />

LMOV<br />

0800H 0801H 0802H DV0 DV1 DV2<br />

X X X 1 2 3<br />

1 2 3<br />

Ex. 2: Reset of the accumulator memory.<br />

Mnemonic : LMOV,0,800H,0.<br />

see<br />

mapping of<br />

the memory<br />

0 to FFH


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

The N016 data stored from address AS16 are transfered to addresses AD16 and next.<br />

EXAMPLE<br />

EXTENDED MEMORY DIRECT TRANSFERT<br />

DIRECT ADDRESSING - BLOC FORMAT<br />

Extended Memory<br />

AD 16<br />

SYMBOLS DEFINITION LIMITS<br />

N016 Number of data to transfert 1 à 800H<br />

AD16 destination address<br />

AS16 source address.<br />

Transfert 32 bytes from extended memory to the accumulator.<br />

Bloc to transfert : N0=0020H, AD=0810H, AS=4730H<br />

hexa : 01 70 15 0B 00 20 08 10 47 30 04<br />

mné : LMOV.D,20H,810H,4730H.<br />

NC 70 NL NB N016 AD16 AS16 04<br />

LMOV,N016, AD16, AS16.<br />

Note: All addresses are in 16 bits [MSB,LSB]<br />

PAGE 18<br />

Extended Memory<br />

AS 16<br />

The biggest possible mouvment of data is 2048 (800H) bytes.<br />

70H<br />

LMOV.D<br />

N016<br />

see memory<br />

mapping


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

Indirect transfert of a source data table to a destination data table.<br />

The biggest possible mouvment of data is 2048 (800H) bytes.<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 19<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

EXTENDED MEMORY INDIRECT TRANSFERT<br />

INDIRECT ADRESSING - BLOC FORMAT<br />

NC 7I NL NB N016 AD16 AS16 04<br />

LMOV.I,N016, AD16, AS16.<br />

Extended Memory<br />

N016<br />

AD 16<br />

AS16<br />

MD<br />

PF(N0)<br />

PF(MD)<br />

PF(DN)<br />

Indirect transfert to make the same data moving as the example of the direct transfert<br />

instruction: 70H / LMOV.D<br />

Hexadecimal : 01 71 15 0B 08 00 08 02 08 04 04<br />

Mnemonic : LMOV.I,800H,802H,804H.<br />

71H<br />

LMOV.I<br />

IMPORTANT : verify data contain in N016, AD16, AS16 because using bad values can<br />

corrupt the program or the system control data.<br />

Address 8xxH<br />

Value<br />

N016 Pointer on the MSB of the number of data to transfert<br />

AD16 Pointer on the destination address<br />

AS 16 Pointer on the source address<br />

Extended Memory<br />

DN<br />

see memory<br />

mapping<br />

00 01 02 03 04 05<br />

00 20H 08 10H 47 30H<br />

N016 N016+1 AD16 AD16+1 AS16 AS16+1<br />

N0


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

LOGIC AND DATA/VALUE<br />

IMMEDIATE ADDRESSING - SEPARATED FORMAT<br />

NC 12 NL NB AD0 DV0 ..ADN DVN...04<br />

AND,AD0,DV0..,ADN,DVN.<br />

ACCU. MEMORY<br />

ADN (ADN)<br />

LOGIC AND DVN<br />

resultat<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Make a logic AND beetwen the data at the address 00 of the accumulator and the value<br />

07. The result is stored at the address 00. The same operation is done beetwen the data<br />

at the address 04 and the value 10H. The result is stored at the address 04.<br />

Hexadecimal : 01 12 20 09 00 07 04 10 04<br />

Mnemonic : AND,0,7,4,10H.<br />

PAGE 20<br />

IMMEDIAT ADDRESSING<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

12H<br />

AND<br />

Allows to do a logic AND beetwen a data stored in the memory and an immediat value.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin * DVN


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 21<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

DIRECT ADDRESSING ACCU. MEMORY<br />

ADN (ADN) LOGIC AND<br />

DAN (DAN)<br />

Allows to do a logic AND beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin * (DAN)<br />

Make a logic AND beetwen the data at the address 00 of the accumulator and the data at<br />

the address 07. The result is stored at the address 00.<br />

Héxa : 01 13 10 07 00 07 04<br />

Mné : AND.D,0,7.<br />

LOGIC AND DATA/DATA<br />

DIRECT ADDRESSING - SEPARATED FORMAT<br />

NC 13 NL NB AD0 DA0...ADN DAN...04<br />

AND.D,AD0,DA0...,ADN,DAN.<br />

result<br />

(ADN) data at the address ADN<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

13H<br />

AND.D


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

ADN (ADN)<br />

LOGIC OR<br />

DVN<br />

result<br />

IMMEDIAT ADDRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

Make a logic OR beetwen the data at the address 00 of the accumulator and the value 07.<br />

The result is stored at the address 00.<br />

Hexadecimal : 01 14 20 07 00 07 04<br />

Mnemonic : 0R,0,7.<br />

LOGIC OR DATA/VALUE<br />

IMMEDIATE ADDRESSING - SEPARATED FORMAT<br />

NC 14 NL NB AD0 DV0 ...ADN DVN..04<br />

OR,AD0,DV0...,ADN,DVN.<br />

PAGE 22<br />

14H<br />

OR<br />

Allows to do a logic OR beetwen a data stored in the memory and an immediat value. The<br />

result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin + DVN<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 23<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

DIRECT ADRESSING ACCU. MEMORY<br />

ADN (ADN) LOGIC OR<br />

DAN (DAN)<br />

Allows to do a logic OR beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin + (DAN)<br />

Make a logic OR beetwen the data at the address 00 of the accumulator and the data at<br />

the address 07. The result is stored at the address 00.<br />

Hexadecimal : 01 15 10 07 00 07 04<br />

Mnemonic : OR.D,0,7.<br />

LOGIC OR DATA/DATA<br />

DIRECT ADRESSING - SEPARATED FORMAT<br />

NC 15 NL NB AD0 DA0 ...ADN DAN ..04.<br />

OR.D,AD0,DA0...,ADN,DAN.<br />

result<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediat value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

15H<br />

OR.D


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

ADN (ADN)<br />

XOR<br />

DVN<br />

result<br />

IMMEDIATE ADDRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

Make a logic XOR beetwen the data at the address 00 of the accumulator and the value<br />

07. The result is stored at the address 00.<br />

Hexadecimal : 01 14 20 07 00 07 04<br />

Mnemonic : X0R,0,7.<br />

XOR DATA/VALUE<br />

IMMEDIATE ADRESSING - SEPARATED FORMAT<br />

NC 16 NL NB AD0 DV0 ...ADN DVN..04<br />

XOR,AD0,DV0...,ADN,DVN.<br />

PAGE 24<br />

16H<br />

XOR<br />

Make a logic XOR beetwen the data at the address 00 of the accumulator and the value<br />

07. The result is stored at the address 00.<br />

Résultat : (ADN)end = (ADN)begin ⊕ DVN<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediat value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 25<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ADN (ADN) XOR<br />

DAN (DAN)<br />

result<br />

DIRECT ADDRESSING ACCU. MEMORY<br />

Allows to do a logic XOR beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin ⊕ (DAN)<br />

Make a logic XOR beetwen the data at the address 00 of the accumulator and the data at<br />

the address 07. The result is stored at the address 00.<br />

Hexadecimal : 01 15 10 07 00 07 04<br />

Mnemonic : XOR.D,0,7.<br />

XOR DATA/DATA<br />

DIRECT ADDRESSING - SEPARATED FORMAT<br />

NC 17 NL NB AD0 DA0 ...ADN DAN ..04.<br />

XOR.D,AD0,DA0...,ADN,DAN.<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

17H<br />

XOR.D


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

ADN (ADN)<br />

ADDITION<br />

DVN<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 26<br />

IMMEDIATE ADDRESSING<br />

Make an addition beetwen the data at the address 00 of the accumulator and the value 07.<br />

The result is stored at the address 00.<br />

Résultat : (ADN)end = (ADN)begin + DVN<br />

Make an addition beetwen the data at the address 00 of the accumulator and the value 07.<br />

The result is stored at the address 00.<br />

Hexadecimal : 01 18 20 07 00 07 04<br />

Mnemonic : ADD,0,7.<br />

ADDITION DATA/VALUE<br />

IMMEDIATE ADDRESSING - SEPARATED FORMAT<br />

NC 18 NL NB AD0 DV0 ...ADN DVN...04<br />

ADD,AD0,DV0...,ADN,DVN.<br />

resultat<br />

NOTE: This instruction doesn't care about the carry.<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

18H<br />

ADD


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 27<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

DIRECT ADDRESSING ACCU. MEMORY<br />

ADN (ADN) ADDITION<br />

DAN (DAN)<br />

Allows to do an addition beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin + (DAN)<br />

Make an addition beetwen the data at the address 00 of the accumulator and the data at<br />

the address 07. The result is stored at the address 00.<br />

Héxa : 01 19 10 07 00 07 04<br />

Mné : ADD.D,0,7.<br />

ADDITION DATA/DATA<br />

DIRECT ADDRESSING - SEPARATED FORMAT<br />

NC 19 NL AD0 DA0 ...ADN DAN ..04<br />

ADD.D,AD0,DA0...,ADN,DAN.<br />

result<br />

NOTE: This instruction does not manage the carry.<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediat value<br />

19H<br />

ADD.D<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ADDITION N DATA/N VALUES<br />

IMMEDIATE ADDRESSING<br />

NC 78 NL NB N0 A016 DV0..DVN 04<br />

LADD,N0,A016,DV0,..DVN.<br />

DATA TABLE<br />

A016<br />

A016+1<br />

A016+N0<br />

+<br />

result<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 28<br />

VALUES<br />

DV0<br />

DV1<br />

DVn<br />

78H<br />

LADD<br />

The data table is define by a starting address and the number of values to add. The<br />

address A016 is the MSB of the data table.<br />

If the instruction has much data (DVN) as expected the excess data are ignored.<br />

N0 Number of bytes to use for doing the operation<br />

A016 Address of the data table<br />

DVN values to add with the data table<br />

Add 3 values (1,2,3) to 4 data stored at the address 800H.<br />

Mné : LADD,4,800H,1,2,3.<br />

before<br />

after<br />

see memory<br />

mapping<br />

data table values<br />

0800H 0801H 0802H 0803H DV0 DV1 DV2<br />

0 FFH FFH 0 + 1 2 3<br />

1 1 1 3<br />

result


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ADDITION N DATA/N DATA<br />

DIRECT ADDRESSING<br />

NC 79 NL NB N0 A016 NS AS16 20<br />

LADD.D,N0,A016,NS,AS16.<br />

DESTINATION<br />

A016<br />

A016+1<br />

A016+N0<br />

+<br />

result<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 29<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

AS16<br />

AS16+1<br />

SOURCE<br />

AS16+NS<br />

79H<br />

LADD.D<br />

Both source data table and destination data table are defined by an address and a number<br />

of bytes.<br />

The addresses A016 and AS16 are the MSB of each data table<br />

If the source data table have more data as the destination data table, excess data are<br />

ignored.<br />

NS Number of bytes for the source data table.<br />

N0 Number of bytes for the destination data table<br />

AS16 Address of the source data table<br />

A016 Address of the destination data table<br />

see memory<br />

mapping<br />

Add 3 data (source data table ) stored at the address 880H with 4 data (destination data<br />

table) stored at the address 800H.<br />

Mnemonic: LADD.D,4,800H,3,880H.<br />

before<br />

after<br />

Destination data table Source data table<br />

0800H 0801H 0802H 0803H 0880H 0881H 0882H<br />

0 FFH FFH 0 + 1 2 3<br />

1 1 1 3<br />

result


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SUBSTRACTION DATA/VALUE<br />

IMMEDIATE ADDRESSING - SEPARATED FORMAT<br />

ACCU. MEMORY<br />

ADN<br />

IMMEDIATE ADDRESSING<br />

Make a substraction beetwen the data at the address 00 of the accumulator and the<br />

value 07. The result is stored at the address 00.<br />

Résultat : (ADN)end = (ADN)begin - DVN<br />

SYMBOLS DEFINITION LIMITS<br />

Make a substraction beetwen the data at the address 00 of the accumulator and the<br />

value 07. The result is stored at the address 00.<br />

Hexadecimal : 01 1A 20 07 00 07 04<br />

Mnemonic : SUB,0,7.<br />

NC 1A NL NB AD0 DV0 ...ADN DVN...04<br />

SUB,AD0,DV0...,ADN DVN.<br />

(ADN)<br />

result<br />

SUBSTRACTION<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

PAGE 30<br />

DVN<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

1AH<br />

SUB


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SUBSTRACTION DATA/DATA<br />

DIRECT ADDRESSING - SEPARATED FORMAT<br />

NC 1B NL NB AD0 DA0...ADN DAN...04<br />

SUB.D,AD0,DA0...,ADN,DAN.<br />

ACCU. MEMORY<br />

ADN<br />

DIRECT ADDRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 31<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ACCU. MEMORY<br />

(ADN)<br />

result<br />

SOUSTRACTION<br />

DAN (DAN)<br />

Allows to do a substraction beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin − (DAN)<br />

(DAN) data at the address DAN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

Make a substraction beetwen the data at the address 00 of the accumulator and the<br />

data at the address 07. The result is stored at the address 00.<br />

Hexadecimal : 01 1B 10 07 00 07 04<br />

Mnemonic : SUB.D,0,7.<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

1BH<br />

SUB.D


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SUBSTRACTION N DATA/N VALUES<br />

IMMEDIATE ADRESSING<br />

NC 7A NL NB N0 A016 DV0 ..DVN 04<br />

LSUB,N0,A016,DV0,..DVN.<br />

DATA TABLE<br />

A016<br />

A016+1<br />

A016+N0<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Sub 3 values (1,2,3) to 4 data, stored at the address 800H.<br />

-<br />

result<br />

N Number of data in the data table<br />

A016 Address of the data table<br />

DVN Values to sub to the data table<br />

PAGE 32<br />

VALUES<br />

DV0<br />

DV1<br />

DVn<br />

7AH<br />

LSUB<br />

The data table is defined by an address (A016) and the number of data in bytes (N).<br />

The address A016 is the MSB of the data table.<br />

If the instruction contain more data than expected (DVn), the exccess data are ignored.<br />

Mnemonic : LSUB,4,800H,1,2,3.<br />

before<br />

after<br />

see memory<br />

mapping<br />

Data table Values<br />

0800H 0801H 0802H 0803H DV0 DV1 DV2<br />

FFH FFH FFH FFH - 1 2 3<br />

FFH FEH FDH FCH<br />

result


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Sub 3 data (source data table ), stored at the address 880H with 4 data (destination<br />

data table), stored at the address 800H.<br />

PAGE 33<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SUBSTRACTION N DATA/N DATA 7BH<br />

DIRECT ADRESSING<br />

LSUB.D<br />

NC 7B NL NB N0 A016 NS AS16 04<br />

LSUB.D,N0,A016,NS,NS16.<br />

DESTINATION<br />

A016<br />

A016+1<br />

A016+N0<br />

-<br />

result<br />

AS16<br />

SOURCE<br />

AS16+1<br />

AS16+NS<br />

Both source and destination tables are defined by an address and a number of bytes.<br />

The addresses A016 and AS16 are the MSB of each data table.<br />

if the source data table have more data than the destination data table, the excces data<br />

are ignored.<br />

NS Number of bytes for the source data table.<br />

N0 Number of bytes for the destination data table<br />

A016 Address of the destination data table<br />

AS16 Address of the source data table<br />

Mnemonic : LSUB.D,4,800H,3,880H.<br />

before<br />

after<br />

see memory<br />

mapping<br />

Destination data table Source data table<br />

0800H 0801H 0802H 0803H 0880H 0881H 0882H<br />

FFH 0 0 0 - 1 2 3<br />

FEH FEH FDH FDH<br />

result


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

BITS SHIFT<br />

NC 73 NL NB NR N0 A016 04<br />

ROT,NR,N0,A016.<br />

A016<br />

LEFT SHIFT<br />

A016+1<br />

RIGHT SHIFT<br />

A016+N0<br />

Data table<br />

The data table is define by an address and a number of bytes.<br />

The address A016 is the MSB of the data table.<br />

If NR is beetwen 01H and 7FH : 1 to 127 left shift will be done<br />

If NR is beetwen 81H and FFH: 127 to 1 right shift will be done<br />

NOTE: If NR = 0 or NR = 80H the instruction is not processing.<br />

SYMBOLS DEFINITION LIMITS<br />

NR Direction and number of shift to do<br />

N Number of bytes for the data table<br />

A016 Address of the data table<br />

Processing to 10 left shifts on 4 data stored at the address 800h.<br />

Mnemonic : ROT,0AH,4,800H.<br />

Before After<br />

800H 801H 802H 803H 800H 801H 802H 803H<br />

0 FFH FFH 0 FFH FCH 00 03<br />

PAGE 34<br />

1 to FFH<br />

execpt 80H<br />

see memory<br />

mapping<br />

73H<br />

ROT


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

BIT MODIFICATION<br />

SEPARATED FORMAT<br />

NC 1C NL NB AD0 PM0..ADN PMN...04<br />

SET,XA/BC...,XA/BC.<br />

MEMORY<br />

ACCU./REGISTER<br />

ADN PMN<br />

SYMBOLS DEFINITION LIMITS<br />

* See next page<br />

PAGE 35<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

Accumulator memory or register bit modification for the selected address (ADN)<br />

PMN allows to select :<br />

- address assignment : Accumultator (D) or register (R)<br />

- the bit to modify<br />

- the bit value<br />

ADN addresse containing value to be modified<br />

PMN* modification parameter for the value<br />

X "D":accumulator "R":general register<br />

"X":CAN 0 register "Y":CAN 1 register<br />

A offset in the ACCU. or register number<br />

B bit number (0 :LSB)<br />

C set the bit value : 1 => C absent<br />

0 => C = "_" (under score)<br />

Set the bit #4 of output port PS1 to on.<br />

AD0 : register #2 to select the PS1 port<br />

PM0: b7 b6 b5 b4 b3 b2 b1 b0<br />

0 0 0 0 1 1 0 0<br />

CAN selection<br />

not used<br />

register selection<br />

bit value<br />

select the bit #4<br />

Hexadecimal : 01 1C 10 07 02 0C 04<br />

Mnemonic : SET,R2/4 .<br />

0 à FFH<br />

0 à 1FH<br />

D, R, X, Y<br />

0 à 255<br />

0 à 7<br />

1CH<br />

SET<br />

Other examples (mnemonic)<br />

set the bit #5 of the outputs to OFF<br />

SET,R2/5_.<br />

set the bit #0 of the address 10 to ON<br />

SET,D10/0.<br />

Set the bit #7 of the address 10 to OFF<br />

SET,D10/7_.<br />

Set the bit #7 of the register #0 of the<br />

CAN 0 register<br />

SET,X0/7.<br />

Set the bit #4 of the register #10H of the<br />

CAN 1 register<br />

SET,Y10H/4_.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

BIT 4,5,6,7 DATA TYPE SELECTION<br />

(X in the mnemonic)<br />

SYNTAX<br />

The bit 5 and 6 are not used<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

Details for PMN calculation<br />

bit 7 bit 4<br />

0 0 ADN is a register address<br />

0 1 ADN is an accumulator address.<br />

1 0 ADN is a CAN 0 register address<br />

1 1 ADN is a CAN 1 register address<br />

BIT 3 BIT VALUE<br />

(C in the mnemonic)<br />

= 0 set the bit to 0<br />

= 1 set the bit to 1<br />

BIT 0 à 2 BIT Nb SELECTION<br />

(B in the mnemonic)<br />

bit2 0 0 0 0 1 1 1 1<br />

bit1 0 0 1 1 0 0 1 1<br />

bit0 0 1 0 1 0 1 0 1<br />

bit<br />

to test<br />

0 1 2 3 4 5 6 7<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 36


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

DMN<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 37<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

READ THE REGISTERS 21H<br />

DIRECT ADRESSING - SEPARATED FORMAT IN.D<br />

ACCU. MEMORY<br />

NC 21 NL NB IA ADO DMO ..ADN DMN..04<br />

IN.D,IA,AD0,DM0,..ADN,DMN<br />

DIRECT ADRESSING<br />

ADN<br />

REGISTER<br />

The value read at the register ADN is moved to the DMN ACCU. memory address.<br />

IA = 0 to 2FH allows to select a 256 registers page, that means the memory between 0 to<br />

2FFFH can be seen as registers.<br />

NOTE : To be compatible with others BALOGH products :<br />

IA = 8 => select the page 500H to 5FFH.<br />

IA = 5 => select the page 800H to 8FFH.<br />

IA associate instruction<br />

ADN register number<br />

DMN Destination address in the accumulator<br />

Read the 2 inputs ports PE0 and PE1 (number 00 and 01) and move each values to the<br />

respectives accumulator addresses 3CH and 70H.<br />

The associate instruction IA = 08 selects the 500H to 5FFH registers area, the inputs<br />

ports are selected by AD0(0) and AD1(1).<br />

hexadecimal : 01 21 12 0A 08 00 3C 01 70 04<br />

mnemonic : IN.D,8,0,3CH,1,70H.<br />

0 à 2FH<br />

0 à FFH<br />

0 à FFH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

REGISTERS<br />

ADN DVN<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Write the value 80 into the register number 4, it starts a timer for 80 cycles of 20 ms<br />

(1.6 s).<br />

hexadecimal : 01 22 10 08 08 04 50 04<br />

mnemonic : OUT,8,4,80.<br />

WRITE THE REGISTERS<br />

DIRECT ADDRESSING<br />

NC 22 NL NB IA AD0 DV0...ADN DVN...04<br />

OUT,IA,AD0,DV0,..,ADN,DVN.<br />

IA Associate instruction<br />

DVN Value to write into the register ADN<br />

ADN Register number<br />

PAGE 38<br />

IMMEDIAT VALUE<br />

0 à 2FH<br />

0 à FFH<br />

2 à 7H<br />

22H<br />

OUT<br />

The value DVN is written into the register number ADN.<br />

IA = 0 to 2FH allows to select a 256 registers page, that means the memory between 0<br />

to 2FFFH can be seen as registers.<br />

NOTE : To be compatible with others BALOGH products :<br />

IA = 8 => select the page 500H to 5FFH.<br />

IA = 5 => select the page 800H to 8FFH.


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

WRITE DATA INTO REGISTERS<br />

DIRECT ADRESSING - SEPARATED FORMAT<br />

NC 23 NL NB IA AD0 DM0..ADN DMN...04<br />

OUT.D,IA,AD0,DM0,...,ADN,DMN.<br />

REGISTERS DIRECT ADRESSING<br />

ADN DMN<br />

SYMBOLS DEFINITION LIMITS<br />

IA Associate instruction<br />

DMN Accumulator address of the data to write<br />

in the ADN register.<br />

ADN Register number<br />

PAGE 39<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ACCU. MEMORY<br />

Write the value of the address 3CH of the accumulator memory to the output port PS0<br />

(register 2).<br />

hexadecimal : 01 23 FF 08 08 02 3C 04<br />

mnemonic : OUT.D,08H,2,3CH.<br />

0 to 2FH<br />

0 to FFH<br />

0 to FFH<br />

23H<br />

OUT.D<br />

The value at the address DMN is written into the register ADN.<br />

IA = 0 to 2FH allows to select a 256 registers page, that means the memory between 0 to<br />

2FFFH can be seen as registers.<br />

NOTE : To be compatible with others BALOGH products :<br />

IA = 8 => select the page 500H to 5FFH.<br />

IA = 5 => select the page 800H to 8FFH.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

Jump to the line 34H<br />

NC 30 NL 06 LS 04<br />

J ; LS.<br />

J : LABEL.<br />

hexadecimal : 01 30 10 06 34 04<br />

mnemonic : J ; 34H.<br />

J : label1.<br />

JUMP<br />

Jump to the line LS or to the label "LABEL"<br />

;LS Number of the line to jump<br />

:LABEL Label of the next instruction to process.<br />

PAGE 40<br />

0 to FDH<br />

30H<br />

J


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

CALL: COMPT.<br />

:COMPT,....<br />

CI<br />

JUMP TO A SUBROUTINE<br />

NC 31 NL NB LS 04<br />

CALL;LS.<br />

CALL : LABEL<br />

PAGE 41<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

31H<br />

CALL<br />

Call a subroutine. The subroutine must be finished by the CI (3EH) instruction.<br />

When the CI instruction is proccessed, the program pointer gets the value of the next<br />

line of the call. This instruction is similar to the "GOSUB" in basic language.<br />

LS First line of the subroutine<br />

Label Label of the first line of the subroutine<br />

0 to FDH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

JUMP ON COMPARE<br />

1 DATA / 1 VALUE<br />

NC 32 NL 09 ADN DVN LI LS 04<br />

JC , ADN,DVN ;LI;LS.<br />

JC , ADN,DVN :LABEL1:LABEL2.<br />

ACCU. MEMORY<br />

ADN<br />

(ADN)<br />

Compare the avalue at the address ADN and the value DVN.<br />

- if (ADN) = DVN next line<br />

- if (ADN) < DVN jump to the line : LI or LABEL 1<br />

- if (ADN) > DVN jump to the line : LS or LABEL 2<br />

SYMBOLS DEFINITION LIMITS<br />

(ADN) Value at the address ADN<br />

DVN Immediate value<br />

LI Jump line if (ADN) < DVN<br />

LS Jump line if (ADN) > DVN<br />

EXAMPLE<br />

Compare the value at the address 0 to value 07<br />

- If equal, the program continue on the next line.<br />

- if the value at the address 0 < to the value 07, the program continue on the label<br />

SMALLER (line 20H).<br />

- if the value at the address 0 > to the value 07, the program continue on the label<br />

BIGGER (line 30H).<br />

hexadecimal : 01 32 10 09 00 07 20 30 04<br />

mnemonic : JC, 0, 7; 20H; 30H.<br />

JC, 0, 7 : SMALLER: BIGGER.<br />

PAGE 42<br />

IMMEDIATE ADRESSING<br />

JUMP ON<br />

COMPARE<br />

DVN<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH<br />

0 to FDH<br />

32 H<br />

JC


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

N DATA / N VALUES<br />

NC 7C NL NB N0 A016 DV0..DVN LI LS 04<br />

LJC,N0,A016,DV0,..DVN :LABEL1 :LABEL 2.<br />

AREA TO COMPARE VALUES<br />

A016<br />

A016+1<br />

A016+N0<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 43<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

DV0<br />

DV1<br />

DVn<br />

N Number of data to compare<br />

A016 First address of the data area<br />

LI Jump line number (or label) data < values<br />

LS Jump line number (or label) data > values<br />

DVN Values<br />

See memory<br />

mapping<br />

7CH<br />

LJC<br />

The data area to compare id defined by a strating address A016 and the number N of data<br />

to compare. The address A016 is the MSB of the area to compare.<br />

Compare the values of the data area and the immediate values:<br />

- if the N data < N values (DVN) jump to the label INF<br />

- if the N data > N values (DVN) jump to the label SUP<br />

- if the N data = N values (DVN) continue on the next line.<br />

Compare 3 data from the address 800H of the memory to 3 immediate values (1,2,3).<br />

- if data = values then continue on the next line<br />

- if data > values then jump on the label INF.<br />

- If data < values then jump on the label SUP.<br />

Mnemonic : LJC,3,800H,1,2,3:INF:SUP.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

1 DATA / 1 DATA<br />

NC 33 NL 09 ADN DAN LI LS 04<br />

JC.D,ADN,DAN;LI;LS.<br />

JC.D,ADN,DAN:LABEL1:LABEL2<br />

ACCU. MEMORY<br />

ADN<br />

DAN<br />

(ADN)<br />

(DAN)<br />

Compare 2 values stored into the accumulator memory at the addresses ADN and DAN.<br />

- If (ADN) = (DAN) continue on the next line<br />

- If (ADN) < (DAN) jump to the line LI or the label LABEL 1<br />

- If (ADN) > (DAN) jump to the line LS or the label LABEL 2<br />

SYMBOLS DEFINITION LIMITS<br />

(ADN) Value at the address ADN<br />

(DAN) Value at the address DAN<br />

LI Jump line if (ADN) < (DAN)<br />

LS Jump line if (ADN) > (DAN)<br />

PAGE 44<br />

JUMP ON<br />

COMPARE<br />

DIRECT ADRESSING<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH<br />

0 to FDH<br />

33H<br />

JC.D<br />

Compare the data at the address 07 to the data at the address 00.<br />

- If equal then continue on the next line<br />

- If the data at the address 0 < the data at the address 07 then jump on SMALLER<br />

- If the data at the address 0 > the data at the address 07 then jump on HIGHER<br />

hexadecimal : 01 33 10 09 00 07 20 30 04<br />

mnemonic : JC.D, 0, 7; SMALLER; HIGHER.


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

JUMP ON COMPARE<br />

N DATA / N DATA<br />

NC 7D NL NB N0 A016 NS AS16 LI LS 04<br />

LJC.D,N0,A016,NS,NS16 :LABEL1 :LABEL2.<br />

AREA TO COMPARE SOURCE AREA<br />

A016<br />

A016+1<br />

A016+N0<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Compare 3 data from the address 800H to 3 data from the address 880H of the<br />

memory.<br />

- If data are equal then continue on the next line<br />

- If area to compare < source area then jump to the label INF<br />

- If area to compare > source area then jump to the label SUP<br />

Mnemonic : LJC.D,3,800H,3,880H:INF:SUP.<br />

PAGE 45<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

AS16<br />

AS16+1<br />

AS16+NS<br />

7DH<br />

LJC.D<br />

2 areas of data are defined by a starting address and a number of data. Data to compare<br />

are defined by A016 and N0, the data source area is defined by AS16 and NS.<br />

A016 and AS16 are addresses for the MSB of each area.<br />

Jump to the label INF or SUP if data are differents or continue to the next line if data are<br />

equals.<br />

NS Number of data of the source area<br />

N0 Number of data of the area to compare<br />

A016 First address of the area to compare<br />

AS16 First address of the source area<br />

see memory<br />

mapping


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

AD<br />

JUMP ON COMPARE<br />

1 DATA / LIST OF VALUES<br />

NC 38 NL NB AD DV0 LS0 ..DVN LSN..04<br />

JC0,AD,DV0;LSO..,DVN;LSN.<br />

JC0,AD,DV0;LABEL0..,DVN;LABELN.<br />

SYMBOLS DEFINITION LIMITS<br />

Compare value at the address 00 to the values 07H and 10H :<br />

- if the data at the address 00 match with 07H then jump to label0 (line 20H)<br />

- if the data at the address 00 match with 10H, then jump to label1 (line 30H)<br />

- else continue on the next line<br />

hexadecimal : 01 38 10 0A 00 07 20 10 30 04<br />

IMMEDIATE ADRESSING<br />

mnemonic : JC0,0,7;20H,10H;30H.<br />

JC0,0,7:LABEL0,10H:LABEL1.<br />

PAGE 46<br />

JUMP ON<br />

COMPARE<br />

DVN<br />

38H<br />

JCO<br />

Compare a value stored into the accumulator at the address (AD) to a list of immediate<br />

values. If the data match with a value then a jump to the associated label is done.<br />

If there is no match then the program continue on the next line.<br />

(AD) Address of the value to compare<br />

DVN Immediate values compared with (AD)<br />

LSN Jump lines associate with each DVN<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

1 DATA / LIST OF DATA<br />

NC 39 NL NB ADX DA0 LS0 ..DAN LSN..04<br />

JC0.D,ADX,DA0;LS0...,DAN;LSN.<br />

JC0.D,ADX,DA0:LABEL0...,DAN:LABEL1.<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 47<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ACCU. MEMORY<br />

JUMP ON<br />

ADX (ADX)<br />

COMPARE DAN (DAN)<br />

ADRESSAGE DIRECT<br />

39H<br />

JC0.D<br />

Compare a value stored into the accumulator at the address (AD) to a list of data. If the<br />

data match with a value in the list of data then a jump to the associated label is done.<br />

If there is no match then the program continue on the next line.<br />

(ADX) Value at the address ADX<br />

(DAN) Values at the addresses DAN<br />

LSN Jump line nuber associate to the (DAN) value<br />

Compare the value at the address 00 to the values at the addresses 07H and 10H :<br />

- if the data at the address 00 match with the data at the address 07H then<br />

jump to label0 (line 20H)<br />

- if the data at the address 00 match with the data at the address 10H then<br />

jump to label1 (line 30H)<br />

- else continue on the next line<br />

hexadecimal : 01 39 10 0A 00 07 20 10 30 04<br />

mnemonic : JC0.D,0,7;20H,10H;30H.<br />

JC0.D,0,7:LABEL0,10H:LABEL1.<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal : NC 3A NL NB AD0 PT0..ADN PTN..LS 04<br />

(resp. NC 3B NL NB AD0 PT0..ADN PTN..LS 04)<br />

Mnemonic : JCB,TA / BCS,.. TA / BC;LS. resp. JNCB,TA / BCS,.. TA / BC;LS.<br />

JCB,TA / BCS,... TA / BC:LABEL. resp. JNCB,TA / BCS,... TA / BC:LABEL.<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

Program remains on line 10H (the same line) if the equation above is true:<br />

- Input E1 = 1 and bit 7 of the address FFH of the accumulator is at 0 or data at the<br />

address 01H of the accumulator is different of 0 otherwise, the program continues on<br />

the next line.<br />

hexadecimal : 01 3A 10 0C 00 09 FF 37 01 78 10 04<br />

mnemonic :<br />

JUMP ON BOOLEAN RESULT 3AH (resp.3BH)<br />

JCB (resp.JNCB)<br />

The boolean equation is presented in the form of a midterm sum:<br />

< BN0 (AD0) * BN1 (AD1) > +< BN2 (AD2) * BN3 (AD3) > + <br />

Jump to line LS or label is performed when the equation is true (resp. false) else<br />

program continues on next line.<br />

- ADN is an address into the accumulator memory or a register number.<br />

- The PTN parameter defines :<br />

- the address assignment (accumulator memory or register)<br />

- the bit to test or to use.<br />

- The bit logic state to use (0 or 1)<br />

(ADN) value at the address ADN<br />

PTN test parameter (see next page)<br />

T D:accumulator memory, R:register, X:CAN0, Y:CAN1register<br />

A Address or registre number<br />

B bit number, test value of byte<br />

C logic state to test ("_" to test logic 0)<br />

S logical symbol (except the last term)<br />

LS jump line number<br />

:WAIT,JCB,R0/1*D255/7_+D1/8:WAIT.<br />

PAGE 48<br />

0 to FFH<br />

0 to FFH,0FH<br />

0 to 7, 8<br />

* ou +<br />

0 to FDH


SYNTAX<br />

Hexadecimal bit : HEXADECIMAL<br />

Mnemonic B7 :<br />

B6 = 0 bit test<br />

EXECUTION<br />

= 1 byte test<br />

B5 = 0 if AND operation<br />

= 1 id OR operation or last term<br />

B4 = 0 if register<br />

= 1 if accumulator<br />

COMMENTS<br />

B3 = 0 if bit n = 0 or byte = 0<br />

= 1 if bit n = 1 or byte = 0<br />

B2<br />

à<br />

B0<br />

Bit number selection<br />

PTN DEFINITION<br />

SYMBOLS DEFINITION LIMITS<br />

Byte : 8<br />

EXAMPLE<br />

E xample : -Test input 4 = 0 => PTN = 00100100 = 24H<br />

Mnemonic : R0/4_<br />

- Test register 4 different of 0 => PTN = 01101000<br />

Mnemonic : R4/8<br />

PAGE 49<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

MNEMONIQUE<br />

symbol B<br />

symbol S<br />

"*"<br />

"+"<br />

symbol X<br />

R<br />

D<br />

symbol C<br />

C = "_"<br />

C = " "<br />

symbol B<br />

bit : from 0 to 7<br />

Note : The boolean equation is completely solved from left to right.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

DATA TABLE / VALUES TABLE<br />

NC 3C NL NB AD0 DV0 ..ADN DVN ..LS 04<br />

JCT,AD0,DV0..,ADN,DVN;LS.<br />

JCT,AD0,DV0..,ADN,DVN:LABEL.<br />

ACCU. MEMORY<br />

ADN<br />

(ADN)<br />

IMMEDIATE ADDRESSING<br />

Compare a data table (ADN) stored in the accumulator to a values table (DVN).<br />

A jump is performed if all data match with all values else the program continues on the<br />

next line.<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 50<br />

JUMP ON<br />

COMPARE<br />

(ADN) Value at the addresses ADN<br />

DVN Immediate values<br />

LS Jump line<br />

A jump to the label (line 60H) is performed if :<br />

- data at the address 00H is equal to 07H and<br />

- data at the address 01H is equal to 12H<br />

else the program continues on the next line (11H)<br />

hexadecimal : 01 3C 10 0A 00 07 01 12 60 04<br />

mnemonic : JCT,0,7,1,12H;60H.<br />

JCT,0,7,1,12H:LABEL.<br />

DVN<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH<br />

3CH<br />

JCT


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

DATA TABLE / DATA TABLE<br />

NC 3D NL NB AD0 DA0..ADN DAN ..LS 04<br />

JCT.D,AD0,DA0..ADN,DAN..:LS.<br />

JCT.D,AD0,DA0..ADN,DAN..:LABEL.<br />

ACCU. MEMORY<br />

ADN<br />

(ADN)<br />

DIRECT ADRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 51<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

JUMP ON<br />

COMPARE<br />

Compare a data table stored at the adresses ADN of the accumulator memory to an<br />

other data table stored at the addresses DAN.<br />

A jump is performed if all data of both tables match else the program continues on the<br />

next line.<br />

(ADN) data at the address ADN<br />

(DAN) data at the address DAN<br />

LS Jump line<br />

A jump to the label (line 60H) is performed if :<br />

data at the address 00 is equal to the data at the address 07H<br />

and data at the address 01 is equal to the data at the address 12H<br />

and data at the address 02 is equal to the data at the address 25H.<br />

else the program continues on the next line (11H)<br />

hexadecimal : 01 3D 10 0C 00 07 01 12 02 25 60 04<br />

mnemonic : JCT.D,0,7,1,12H,2,25H;60H.<br />

ACCU. MEMORY<br />

DAN<br />

3DH<br />

JCT.D<br />

(DAN)<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

The current interruption terminates at line 40.<br />

The next line which will be executed is the subroutine call line + 1.<br />

hexadecimal : 01 3E 40 05 04<br />

mnemonic : CI<br />

RETURN FROM INTERRUPTION<br />

NC 3E NL 05 04<br />

CI<br />

This command gives end to :<br />

- a command in process (called by the controller program)<br />

- a subroutine called by a CALL command.<br />

PAGE 52<br />

3EH<br />

CI


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

STACK POINTER INITIALISATION<br />

NC 3F NL 05 04<br />

CSP<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Processing to a special reset of the board, on the event "PE0/0" is not ready.<br />

PAGE 53<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

3FH<br />

CSP<br />

Initialisation of the stack pointer, the <strong>CEPR</strong><strong>96</strong> kills all subroutines or interrupts under<br />

processing. This command allows to the user to perform a total reset of the program<br />

regardless of program situation, and/or to define the next line to be executed.<br />

It should be used only on specific case as emergency or special cirumstances.<br />

:RESET,<br />

JCB,R0/0_:RESET.<br />

CSP.<br />

J:ORG.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

TAG READ 61H<br />

I R<br />

DIRECT ADDRESSING - WITHOUT WAITTING<br />

NC 61 NL NB NE N016 A016 AD16 AT16 04<br />

IR,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

AD 16<br />

WITHOUT WAITTING<br />

PF+80H<br />

COMMENTS<br />

A read is attempted, if there is no fault, data read from the tag are stored in the memory at the<br />

address AD16, the status (AT16) is updated and give information about the tag. If there is a<br />

fault, only the status (AT16) is updated, the high byte gives informations about the fault (ex: no<br />

tag was present). For more information about the status, see BALOGH STATUS DEFINITION.<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 54<br />

A0 16<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

NE Slave number<br />

AT 16 Status storage address<br />

N016 Number of data to read in the tag<br />

A0 16 First address to read in the tag<br />

AD 16 First address in the card to store the read data<br />

N016<br />

See memory<br />

mapping<br />

and<br />

tag mapping<br />

Command to read 10 data at the beginning of an OMX TAG (address 0 to 9) present on<br />

slave 1 transceiver, store them at the address 3000H on the card extended memory and<br />

store the operation status in the accumulator memory at the address F0H (8F0H in 16 bits<br />

addressing)<br />

Mnemonic : IR,1,10,0,3000H,8F0H.


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

TAG WRITE<br />

DIRECT ADDRESSING - WITHOUT WAITTING<br />

NC 63 NL NB NE NO16 A016 AD16 AT16 04<br />

IW,NE,N016,A016,AD16,AT16.<br />

EXTENDED MOMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

AD 16<br />

WITHOUT WAITTING<br />

PF+80H<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 55<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

A0 16<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

63H<br />

I W<br />

N016<br />

COMMENTS<br />

A write is attempted, if there is no fault, data from the memory (AD16) are stored in the tag at<br />

the address A016, the status (AT16) is updated and give information about the tag. If there is a<br />

fault, only the status (AT16) is updated, the high byte gives informations about the fault (ex: no<br />

tag was present). For more information about the status, see BALOGH STATUS DEFINITION.<br />

NE Slave number<br />

AT 16 Status storage address<br />

N016 Number of data to write<br />

A0 16 First address to write in the tag<br />

AD 16 First address in the card of the data to write<br />

See memory<br />

mapping<br />

and<br />

tag mapping<br />

Command to write 10 data at the beginning of an OMX TAG (address 0 to 9) present on<br />

slave 1 transceiver, data to write are stored at the address 3000H of card extended<br />

memory. The operation status will be stored in the accumulator memory at the address<br />

F0H (8F0H in 16 bits addressing)<br />

Mnemonic : IW,1,10,0,3000H,8F0H.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02 Rev. may 2003<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

EXAMPLE<br />

TAG INDIRECT READ<br />

INDIRECT ADDRESSING - WITHOUT WAITTING<br />

NC 65 NL NB NE N016 A016 AD16 AT16 04<br />

IR.I,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

A0 16<br />

A016+1 Pf<br />

AD16<br />

AD16+1 Pf<br />

N016 PF( N0)<br />

PF+80H<br />

SYMBOLS DEFINITION LIMITS<br />

N016+1 Pf<br />

SYMBOL<br />

PF(ad. étq. )<br />

PF(ad. étq.)<br />

WITHOUT WAITTING<br />

PAGE 56<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

DEFINITION LIMITS<br />

NE Slave number (direct number)<br />

AT 16 Status storage address (direct address)<br />

N016 Pointer to the number of data to read<br />

A0 16 Pointer to the first data to read in the tag<br />

AD 16 Pointer to first address in the card to store the<br />

read data<br />

65H<br />

IR.I<br />

COMMENTS<br />

It's a READ TAG operation, but addresses are indirect addressing. Addresses in the<br />

command are pointer to the real addresses.<br />

N0<br />

See memory<br />

mapping<br />

and<br />

tag mapping


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS<br />

COMMENTS<br />

DEFINITION LIMITS<br />

It's a WRITE TAG operation, but addresses are indirect addressing. Addresses in the<br />

command are pointer to the real addresses.<br />

EXAMPLE<br />

PAGE 57<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

TAG INDIRECT WRITE 67H<br />

INDIRECT ADDRESSING - WITHOUT WAITTING IW.I<br />

NC 67 NL NB NE N016 A016 AD16 AT16 04<br />

IW.I,NE,N016,A016,AD16,AT16.<br />

EXTANDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

A0 16<br />

A016+1 Pf<br />

AD16<br />

SYMBOL<br />

PF(OMA)<br />

N016 PF( N0)<br />

N016+1 Pf<br />

WITHOUT WAITTING<br />

PF+80H<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

DEFINITION LIMITS<br />

NE Slave number (direct value)<br />

AT 16 Status storage address (direct address)<br />

N016 Pointer to the number of data to write<br />

A0 16 Pointer to the first data to write in the tag<br />

AD 16 Pointer to the first address in the card of the data<br />

to write<br />

See memory<br />

mapping<br />

and<br />

tag mapping<br />

N0


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

TAG READ 69H<br />

IRA<br />

DIRECT ADDRESSING - WITH WAITTING<br />

NC 69 NL NB NE N016 A016 AD16 AT16 04<br />

IRA,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

AD 16<br />

AD16+1<br />

WAIT FOR THE<br />

TAG PRESENCE<br />

PF+80H<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 58<br />

A0 16<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

N016<br />

COMMENTS<br />

Same command as the IR but the read is processed only when the tag is becomming<br />

present.<br />

SYMBOL DEFINITION LIMITS<br />

NE Slave number<br />

AT 16 Status storage address<br />

N016 Number of data to read in the tag<br />

A0 16 First address to read in the tag<br />

AD 16 First address in the card to store the read data<br />

See memory<br />

mapping<br />

and<br />

tag mapping


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

COMMENTS<br />

Same command as the IW but the write is processed only when the tag is becomming<br />

present.<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

TAG WRITE<br />

DIRECT ADDRESSING - WITH WAITTING<br />

NC 6B NL NB NE NO16 A016 AD16 AT16 04<br />

IWA,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

AD 16<br />

WAIT FOR THE<br />

TAG PRESENCE<br />

PF+80H<br />

PAGE 59<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

A0 16<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

SYMBOL DEFINITION LIMITS<br />

NE Slave number<br />

AT 16 Status storage address<br />

N016 Number of data to write<br />

A0 16 First address to write in the tag<br />

AD 16 First address in the card of the data to write<br />

See memory<br />

mapping<br />

and<br />

tag mapping<br />

6BH<br />

IWA<br />

N016


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS<br />

COMMENTS<br />

DEFINITION LIMITS<br />

Same command as the IR.I but addresses are indirect addresses<br />

EXAMPLE<br />

SYMBOL<br />

TAG INDIRECT READ<br />

INDIRECT ADDRESSING - WITH WAITTING<br />

NC 6D NL NB NE N016 A016 AD16 AT16 04<br />

IRA.I,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

A0 16<br />

PF(OMA)<br />

A016+1 Pf<br />

AD16<br />

N016 PF( N0)<br />

N016+1 Pf<br />

WAIT FOR THE<br />

TAG PRESENCE<br />

PF+80H<br />

DEFINITION LIMITS<br />

PAGE 60<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

NE Slave number (direct number)<br />

AT 16 Status storage address (direct address)<br />

N016 Pointer to the number of data to read<br />

A0 16 Pointer to the first data to read in the tag<br />

AD 16 Pointer to first address in the card to store the<br />

read data<br />

6DH<br />

IRA.I<br />

N016<br />

See memory<br />

mapping<br />

and<br />

tag mapping


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS<br />

COMMENTS<br />

DEFINITION LIMITS<br />

Same command as the IW.I but addresses are indirect addresses<br />

EXAMPLE<br />

TAG INDIRECT WRITE<br />

INDIRECT ADDRESSING - WITH WAITTING<br />

NC 6F NL NB NE N016 A016 AD16 AT16 04<br />

IWA.I,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

A0 16<br />

A016+1 Pf<br />

AD16<br />

SYMBOL<br />

PF(OMA)<br />

N016 PF( N0)<br />

N016+1 Pf<br />

WAIT FOR THE<br />

TAG PRESENCE<br />

PF+80H<br />

PAGE 61<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

DEFINITION LIMITS<br />

NE Slave number (direct value)<br />

AT 16 Status storage address (direct address)<br />

N016 Pointer to the number of data to write<br />

A0 16 Pointer to the first data to write in the tag<br />

AD 16 Pointer to the first address in the card of the data<br />

to write<br />

6FH<br />

IWA.I<br />

N0<br />

See memory<br />

mapping<br />

and<br />

tag mapping


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02 Rev. May 2003<br />

TAGS ADDRESSING TABLE<br />

CHANNELS:<br />

<strong>CEPR</strong> <strong>96</strong>:<br />

main channel TR: NE =0<br />

channel CFER: NE =8<br />

CAN channel: NE =10h, 1Fh<br />

MRUC 20:<br />

CAN 0 channel: 00h-0Fh<br />

CAN 1 channel: 10h-1Fh<br />

tag type memory type capacity (bytes) ''byte'' adressing<br />

OF EEPROM 7 0 - 6 h<br />

OL EEPROM 2 0 - 1 h<br />

OMA (D) FRAM internal 64 800 h - 83F h<br />

OMA (D) 2K<br />

OMA (D) 8K<br />

FRAM external<br />

FRAM internal<br />

FRAM internal<br />

FRAM external<br />

PAGE 62<br />

2 K<br />

64<br />

64<br />

8 K<br />

0 - 7FF h<br />

800 h - 83F h<br />

800 h - 83F h<br />

2000 h - 3FFF h<br />

OMX 931 FRAM 8 K 0 - 1FFF h<br />

OMX 931 FRAM 32 K 0 - 7FFF h<br />

OIR RAM 64 K 0 - FFFD h*<br />

GIE FRAM 512 0 - 1FF h<br />

GIE FRAM 2 K 0 - 7FF h<br />

GIE FRAM 8 K 2000 h - 3FFF h<br />

F#/32 EEPROM 32 bits / 5 0 - 4 h<br />

E#/116 EEPROM<br />

access to<br />

64 bytes<br />

0 - 3F h (read)<br />

C h - 4B h (write)<br />

except for multitag<br />

<strong>CEPR</strong> <strong>96</strong>:<br />

0 - 3F h (read & write)


SYNTAX<br />

EXECUTION<br />

SpF/Spf<br />

HEX VALUE CONVERSION<br />

TO ASCII STRING<br />

Hexadecimal : INS,80H,Ld,DpF,Dpf,Ls,SpF,Spf.<br />

Mnemonique : STR,Ld,D,Ls,S.<br />

HEXA SOURCE<br />

Data<br />

Data<br />

Data<br />

Ls<br />

PAGE 63<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ASCII DESTINATION<br />

DpF/Dpf Character<br />

Character<br />

Character<br />

Character<br />

COMMENTS<br />

Convert the data from address S (SpF/Spf) to an ASCII destination table located at the<br />

address D (DpF/Dpf). Each table has a length, if all the characters of the destination<br />

table are not used, free locations are replaced by the space character (20H).<br />

If the length (Ls and/or Ld) is > 80H, addressing becomes indirect, and the command<br />

parameters must indicate the location of pointer for the length and for the table address.<br />

SYMBOLS DEFINITION LIMITS<br />

Ls Length of the source table (hexa number) or<br />

address of the pointer to the length (if > 80H)<br />

Ld Length of the destination table (ASCII) or<br />

address of the pointer to the length (if > 80H)<br />

DpF/Dpf Address of the destination table or pointer<br />

or D to the destination table address (Ld > 80H)<br />

SpF/Spf Address of the source table or pointer to the<br />

ou S source table address (Ls >80H)<br />

EXAMPLE<br />

Direct conversion of the value 100H stored at the addresses 820H and 821H to destination<br />

table of 4 characters stored at the address 810H.<br />

STR,4,810H,2,820H. (result : see below)<br />

Indirect convertion of the value pointed by the data (820H) at the address 840H with a<br />

length of 2 stored at the address 80H. The result will be stored at the address pointed by<br />

the data (810H) at the address 830H. The length (4) of the destination table is stored in<br />

the address 81H.<br />

STR,80H,830h,81H,840H. Source Destination<br />

820H 01 Conversion 810H 20H " "<br />

821H 00 811H 32H "2"<br />

812H 35H "5"<br />

100H = 256 813H 36H "6"<br />

Ld<br />

80H<br />

STR


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal : INS,81H,Ld,DpF,Dpf,Ls,SpF,Spf.<br />

Mnemonic : VAL,Ld,D,Ls,S.<br />

EXECUTION<br />

SpF/Spf<br />

COMMENTAIRE<br />

DpF/Dpf<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Conversion of the string " 256" stored at the address 810H to an area of 2 bytes stored at<br />

the address 820H.<br />

VAL,2,820H,4,810H. (result : see below)<br />

Indirect conversion of the string pointed by the data (810H) at the address 840H. The<br />

length (4) is pointed by the data at the address 80H. The result will be at at the address<br />

pointed by data at the address 830H (820H). The result length (2) is defined by the pointer<br />

at the address 81H.<br />

VAL,80H,830h,81H,840H.<br />

ASCII STRING CONVERSION<br />

TO HEX NUMBER<br />

ASCII source<br />

Character<br />

Character<br />

Character<br />

Character<br />

Ls<br />

Source Destination<br />

810H 20H " " Conversion 820H 01<br />

811H 32H "2" 821H 00<br />

812H 35H "5"<br />

813H 36H "6" 256 = 100H<br />

PAGE 64<br />

Destination<br />

DATA<br />

DATA<br />

DATA<br />

Ld<br />

81H<br />

VAL<br />

Convert the data from address S (SpF/Spf) to an HEX destination table located at the<br />

address D (DpF/Dpf).<br />

If the length (Ls and/or Ld) is > 80H, addressing becomes indirect, and the command<br />

parameters must indicate the location of pointer for the length and for the table address.<br />

Ls Length of the source table (ASCII number) or<br />

address of the pointer to the length (if > 80H)<br />

Ld Length of the destination table (HEX) or<br />

address of the pointer to the length (if > 80H)<br />

DpF/Dpf Address of the destination table or pointer<br />

or D to the destination table address (Ld > 80H)<br />

SpF/Spf Address of the source table or pointer to the<br />

ou S source table address (Ls >80H)


SYNTAX<br />

N DATA BLOCS TRANSFERT<br />

Hexadecimal : INS,82H,L1,D1pF,D1pf,S1pF,S1pf,<br />

L2,D2pF,D2pf,S2pF,S2pf, ....<br />

Ln,DnpF,Dnpf,SnpF,Snpf, LS.<br />

Mnemonic: LMOV.BI,L1,D1,S1,<br />

L2,D2,S2, ....<br />

Ln,Dn,Sn, LS.<br />

PAGE 65<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

EXECUTION<br />

N blocs transfert :<br />

- direct addressing (Li < 80H, Di and Si < 8000H).<br />

- indirect addressing (Li >= 80H, Di and Si >= 8000H).<br />

In this case the parameters are placed at the addresses :<br />

Li - 80H = for the length<br />

Di - 8000H = for the destination address<br />

Si - 8000H = for the source address<br />

The indirection is done each time that the MSB of the new address = 1<br />

(value > 80H ou > 8000H)<br />

like this each parameter has his proper indirection level.<br />

WARNING : The board makes no control about the addresses !<br />

COMMENTS<br />

Parameters control :<br />

Example on Li (evalable for Si and Di with 8000H) :<br />

Li < 80H : Li = length<br />

Li >= 80H<br />

(Li-80H) < 80H : (Li-80H) = length<br />

(Li-80H) >= 80H<br />

((Li-80H)-80H) < 80 : ((Li-80H)-80H) = length<br />

((Li-80H)-80H) >= 80<br />

etc .........<br />

SYMBOLS DEFINITION LIMITS<br />

L Length or pointer to the length (if > 80H).<br />

DpF/Dpf Address or pointer to the source (si > 8000H)<br />

ou D<br />

SpF/Spf Address or pointer to the destination<br />

ou S (if >8000H).<br />

LS jump line number after transfert(s) (optional)<br />

82H<br />

LMOV.BI<br />

EXAMPLE<br />

Direct transfert an area of 10 bytes starting at the address 810H to the address 820H and<br />

an area with parameters stored at the address 800H (length), 881H,882H (destination),<br />

883H et 884H (source).<br />

After the transfert, the program continues on the next line (LS is missing).<br />

LMOV.BI,10,820H,810H,<br />

80H,881H,882H.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

MONO/MULTI TASK SELECTION<br />

PROGRAM BANK AND ACCU. SELECTION<br />

Hexadecimal : INS,7FH,Val.<br />

Mnemonic: SEL,Val.<br />

EXECUTION<br />

Val allows to select the working mode and to manage the memory accumulators:<br />

- Mode mono or multi task.<br />

- Program bank and Accu. durring program excution.<br />

DEFINITION OF VAL<br />

The SEL instruction allows to modify the selected bank and/or accu:<br />

- to down load the program,<br />

- to change the program bank or the accumulator memory durring the program<br />

execution.<br />

If a program doesn't contain the SEL instruction, it will be executed as a monotask<br />

program starting on bank 0 and will used the accumulator 0 (800H-8FFH).<br />

PAGE 66<br />

7FH<br />

SEL<br />

Si le programme contient l'instruction SEL,3xH (mode mutitâche) dans un banc autre que<br />

INIT, l'instruction est ignorée et le programme est poursuivi dans le mode sélectionné à la<br />

mise sous tension.<br />

Description of the VAL bits<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

0 0 0 0 Accu Num Bank Num<br />

0 0 0 1 Accu Num X X<br />

0 0 1 0 X X Num Banc<br />

0 0 1 1 0 0 Nb de prog.<br />

0 0 1 1 1 1 1 1<br />

EXAMPLE<br />

Comments<br />

Select a bank and an accu<br />

Select the Num Accu<br />

Select the bank Num Banc<br />

Multitask enable on Nb prog.<br />

Select the INIT bank (supervisor)<br />

- Supervisor Bank 3 selection to download the program<br />

SEL,3H.<br />

- Selection of the bank 1 and the accu 2 durring the program execution:<br />

SEL,9H.<br />

- Selection of the mutitask mode with 3 programs to run :<br />

It must be done in the INIT program:<br />

SEL,32H. (execution of the programs 0,1 and 2)


SYNTAX<br />

STATEMENT OF MRER21 MODULES<br />

CAN 0 NETWORK<br />

Hexadecimal: INS,64H,ADph 0,ADph 1, .... ,ADph n.<br />

Mnemonic:<br />

EXECUTION<br />

PAGE 67<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

64H<br />

The instruction 64H enables to state the MRER21 modules on the CAN 0 network<br />

(MRUC20 only).<br />

The mentioned addresses are the modules physical addresses (refer to the main<br />

manual). The instruction transforms the physical addresses into logical adresses (NE<br />

in the instructions pertaining to the network slaves).<br />

These logical adresses are alloted in the order of entry of the code. The first physical<br />

address is associated to the slave # 0, the second one to the slave # 1, etc...<br />

Note: a physical address being = 0 enables to book a logical slave number,<br />

notwithstanding the physical absence of the module on the network.<br />

EXAMPLE<br />

Statement of MRER21 modules with the physical addresses attached:<br />

C0H, E0H, C1H, E1H,C3H, E3H.<br />

The desired logical addresses being:<br />

the statement is:<br />

- 0 for the master channel of module 0,<br />

- 1 for the slave channel of module 0,<br />

- 2 for the master channel of module 1,<br />

- 3 for the slave channel of module 1,<br />

- 6 for the master channel of module 3,<br />

- 7 for the slave channel of module 3,<br />

INS,64H,C0H,E0H,C1H,E1H,0H,0H,C3H,E3H.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

STATEMENT OF MRER21 MODULES<br />

CAN 1 NETWORK<br />

Hexadecimal : INS,66H,ADph 0,ADph 1, .... ,ADph n.<br />

Mnemonic:<br />

EXECUTION<br />

PAGE 68<br />

66H<br />

The instruction 66H enables to state the MRER21 modules on the CAN 1 network<br />

(MRUC20 or <strong>CEPR</strong><strong>96</strong>).<br />

The mentioned addresses are the modules physical addresses (refer to the main<br />

manual). The instruction transforms the physical addresses into logical adresses (NE<br />

in the instructions pertaining to the network slaves).<br />

These logical adresses are alloted in the order of entry of the code. The first physical<br />

address is associated to the slave # 10H, the second one to the slave # 11H, etc...<br />

Note: a physical address being = 0 enables to book a logical slave number,<br />

notwithstanding the physical absence of the module on the network<br />

EXAMPLE<br />

Statement of MRER21 modules with the physical addresses attached:<br />

C0H, E0H, C1H, E1H,C3H, E3H.<br />

The desired logical addresses being:<br />

the statement is:<br />

- 10H for the master channel of module 0,<br />

- 11H for the slave channel of module 0,<br />

- 12H for the master channel of module 1,<br />

- 13H for the slave channel of module 1,<br />

- 16H for the master channel of module 3,<br />

- 17H for the slave channel of module 3,<br />

INS,66H,C0H,E0H,C1H,E1H,0H,0H,C3H,E3H.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!