void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
// TODO: USER CODE!!
while(1)
{
output_high(PIN_A0);
#asm
nop;
nop;
#endasm
output_low(PIN_A0);
}
}
bmfranky, disculpa que me meta pero si mis calculos son correctos es codigo daría una señal de fosc/24 y no de 48.
para 48 yo pondría:
while(1)
{
output_high(PIN_A0); // 1 ciclo
delay_cycles(5); // 5 ciclos (goto, goto, nop)
output_low(PIN_A0); // 1 ciclo
delay_cycles(3); // 3 ciclos (goto, nop)
} // 2 ciclos (goto)
// =============
// 12 ciclos * 4 = 48
saludos.
Tranquilo
MarkKnopfler81 aquí ,debemos opinar todos.
Tengo que indicarte que no has tenido en cuenta como descompone sus instrucciones el ccs y las pasa a ensamblador, recuerda que no uso la directiva fast_imput.Si compilas el programa veras que se convierte en 12 instrucciones maquina en cada interacción.
.................... while(1)
.................... {
.................... output_high(PIN_A0);
0051: BCF 05.0
0052: BCF 03.5->3
0053: BSF 05.0
.................... #asm
.................... nop;
0054: NOP ->1
.................... nop;
0055: NOP ->1
.................... #endasm
.................... output_low(PIN_A0);
0056: BSF 03.5
0057: BCF 05.0
0058: BCF 03.5->4
0059: BCF 05.0
....................
.................... }
005A: BSF 03.5
005B: GOTO 051->3 (El goto vale 2 ciclos)
-----
12 ciclos maquina *4 ciclos del oscilador (por ciclo de maquina) igual a 48 ciclos del oscilador principal.