¿Cómo hago direccionamiento indirecto en PIC ASM?

3

En mis 16F628A, quiero iterar una secuencia de valores predefinida. ¿Cómo hago esto?

En C, haría algo como esto:

char vals = {22, 10, 34, 16};

char id = 0;

puerto = vals [id]; id ++

Es el 'vals [id]' que no he descubierto.

    
pregunta mmccoo

2 respuestas

7

No hay instrucciones de acceso indirecto a la memoria en las fotografías de rango medio, en lugar de eso, coloca la dirección de la ubicación de la memoria a la que deseas acceder en el registro FSR. Y luego se puede acceder al valor en el registro INDF.

Consulte la sección 4.4 de la hoja de datos de su chip. enlace

    
respondido por el John Burton
0

Si quieres que un PIC16F628A haga algo como

char vals = {22, 10, 34, 16};
int main(void){
    char id = 0;
    while(1){
        PORTB = vals[id];
        id++;
        id = id & 3;
    };
}

una opción es compilar su código C con un compilador de C. (Al compilar para dichos chips, el compilador utilizará los registros FSR e INDF exactamente como lo explicó John Burton). Tengo entendido que SDCC es el único compilador de C de código abierto que admite los chips PICmicro PIC16F628A y otros "14 bits".

respondido por el davidcary

Lea otras preguntas en las etiquetas

Comentarios Recientes

¡La dirección directa y la indexación local son poderosas! POD ASM de la versión 0.54 ofrece un manejo invisible e indirecto para sus estructuras de hoja y datos. El truco, entonces, es determinar siempre las direcciones indirectas. Esto reduce la confusión y dificulta la depuración de código adicional de insert (), insertWord (), etc. A diferencia de la Dirección directa y la indexación local, POD ASM le permite insertar todo una vez en la memoria, por lo que no tiene que adivinar en cada vuelo. Igual de importante,... Lees verder