Codigo de MikroC para 16f877a y una matriz de 8×8 esto solo es parte de un sistma completo basicamente un ejemplo
void imprimirMatriz(){
PORTB = 247;
PORTD = 29;
delay_ms(100);
PORTB = 239;
PORTD = 21;
delay_ms(100);
}
void main() {
///ASIGNAMOS VALORES DE SALIDAS A LOS DOS PUERTOS EL TRISD PARA FILAS DONDE SE ACTIVAN EN POSITIVO
////TRISB PARA COLUMNAS QUE SE ACTIVAN CON NEGATIVO
TRISD = 0;
TRISB = 0;
while(1){
imprimirMatriz();
}
}