Descripción
La instrucción "Desplazar bit al registro de desplazamiento" escribe un bit en un registro de desplazamiento desde el origen indicado (DATA). Cada vez que la instrucción se ejecuta con el valor "0" en el parámetro RESET, se leen datos nuevos del origen y se desplazan a la dirección inicial (S_BIT) del registro de desplazamiento. Los restantes bits se desplazan una posición. El bit de la última dirección (S_BIT + N) se pierde tras el desplazamiento. Si el parámetro RESET está a "1" mientras se ejecuta la instrucción, las direcciones del registro de desplazamiento se ponen a "0" y no se desplazan.
Parámetros
La tabla siguiente muestra los parámetros de la instrucción:
|
Parámetro |
Declaración |
Tipo de datos |
Área de memoria |
Descripción |
|---|---|---|---|---|
|
DATA |
Input |
BOOL |
I, Q, M, D, L |
Bit de origen |
|
RESET |
Input |
BOOL |
I, Q, M, D, L |
Entrada de reset |
|
S_BIT |
Input |
POINTER |
I, Q, M, D |
Apunta al primer bit del registro de desplazamiento. En el direccionamiento indirecto por registro interárea, el puntero debe indicarse en formato de palabra doble. |
|
N |
Input |
WORD |
I, Q, M, D, L, P |
Número de bits que deben desplazarse. |
|
Valor de función |
VOID |
I, Q, M, D, L |
Valor de función vacío |
|
Ejemplo
En el ejemplo siguiente, el parámetro N se pone al valor 14 ("E" en notación hexadecimal), con lo que 14 bits se desplazan a partir de la dirección indicada en el parámetro S_BIT. Una vez desplazados los bits, la primera dirección se ocupa con los datos del origen del parámetro DATA. El último valor de bit se pierde.
|
SHRB(DATA := "Tag_Input_Data", RESET := "Tag_Input_Reset", S_BIT := "Tag_Input_BitSource", N := "Tag_Input_Number"); |
No se transfiere ningún valor de función.
Las tablas siguientes muestran el funcionamiento de la instrucción con valores concretos.
Antes de la ejecución
En este ejemplo se utilizan los siguientes valores para los parámetros de entrada y salida:
|
Parámetro |
Operando |
Valor |
|---|---|---|
|
RESET |
Tag_Input_Reset |
0 |
|
DATA |
Tag_Input_Data |
0 |
|
S_BIT |
Tag_Input_BitSource |
DB1.DBX1.4 |
|
N |
Tag_Input_Number |
B#16#0E |
Antes de ejecutarse la instrucción, los siguientes estados lógicos están almacenados en los 14 bits del registro:
Después de la ejecución
Una vez ejecutada la instrucción, los siguientes estados lógicos se almacenan en los 14 bits del registro: