Bueno, pues resulta que ahora estoy iniciandome a los dsPIC30F; tengo ya algunos programas hechos tanto en assembler como en CCS (cosillas muy basicas para empezar). Andando por el foro m entero que CCS no es la mehor opcion (en cuanto a C se refiere) para la programacion de los dsPIC, sin embargo como ha sido el compilador de cabecera para mi no me decido aun a migrar al C30 del cual escucho que es lo mejor para estos menesteres. En fin tengo este programa escrito en CCS, el cual emula un contador de 0-59 con salida a display de 7 segmentos multiplexado cada 25ms para visualizarlo por 0.5 segundos aproximadamente usando el puerto B del dsPIC30F4013 con un cristal de 4Mhz, el problema esta en que sin el delay despues de escribir el dato bcd al puerto y antes de activar el bit de permiso del display el puerto permanece en ceros. Hace correctamente la accion de multiplexor pero siempre se visualiza cero sobre los display. Intente utilizando #use fast_io(port) pero el resultado es el mismo, entonces la unica solucion fue colocar ese delay_us(10) que aparece deshabiltado en el codigo. Si alguien sabe de alguna otra forma de corregir esto podria compartirlo con el foro. De igual forma si tienen alguna sugerencia respecto a la plantilla sobre la cual genero el programa (si hay algo raro o que parezca poco eficiente) acepto la critica constructiva.
Cabe mencionar que el programa funciona perfectamente con los delay_us(10); esto esta probado fisicamente sobre PROTOBOARD al igual que al menos otros 10 ejemplillos mas que me gustaria mas adelante publicar para aquellos que quieran iniciar con algo sencillisimo con estos dsPIC.
Saludos a los compañeros del foro...
#include <30F4013.H>
#fuses XT,PR,NOCKSFSM, NOWRT, NOPROTECT, NODEBUG, NOWDT, PUT16, BORV27, NOBROWNOUT, MCLR
#use delay(clock=4000000)
#byte portb = 0x02C8
int16 x,y,z;
#locate x = 0x0800
#locate y = 0x0802
#locate z = 0x0803
void main(void)
{
set_tris_b(0xFFC0);
setup_adc_ports(NO_ANALOGS);
while(TRUE)
{
for(x=0;x<6;x++)
{
for(y=0;y<10;y++)
{
for(z=0;z<10;z++)
{
portb = y;
//delay_us(10);
bit_set(portb,4);
delay_ms(25);
bit_clear(portb,4);
portb = x;
//delay_us(10);
bit_set(portb,5);
delay_ms(25);
bit_clear(portb,5);
}
}
}
}
}