En cuanto a como utilizar los registros "indf" y "fsr" te voy a poner un ejemplo(a ver si me sale) de como desplazar un solo caracter (A) de 5 columnas y 7 filas, a la derecha.
El caracter lo voy a representar de la siguiente forma:
bit 7 --> 0 1 1 0 0
bit 6 --> 1 0 0 1 0
bit 5 --> 1 0 0 1 0
bit 4 --> 1 1 1 1 0
bit 3 --> 1 0 0 1 0
bit 2 --> 1 0 0 1 0
bit 1 --> 1 0 0 1 0
bit 0 --> 0 0 0 0 0
Cada columna del caracter la voy a almacenar en un registro del PIC
Tenemos, por lo tanto, 5 registros de 8 bits que llamaremos, por ejemplo, col1, col2.. col5, que ocupan los registros 0x20, 0x21.... 0x24 del PIC:
col1 equ 0x20
col2 equ 0x21
col3 equ 0x22
col4 equ 0x23
col5 equ 0x24
movlw 0x7e
movwf col1
etc....
Vamos a la rutina de desplazamiento a derechas.
El registro fsr del PIC se utiliza como puntero, es decir, en el indicas la dirección de memoria que vas a leer o escribir. A través del indf, lees o escribes la dirección de memoria a la que apunta el fsr. Por lo tanto si quieres leer por ejemplo la dirección 0x20, el programa seria:
movlw 0x20
movwf fsr
movf indf,w
En nuestro ejemplo, tendrias el valor 0x7e en el registro w.
Continua en el sisuiente mensaje