Hallo,

Ik heb twee c-compilers, namelijk CSS C en MikroC. Ik heb vaker met MikroC gewerkt. Nu wil ik graag een simpel knipperlichtje wil programmeren. Ik heb de code hieronder gezet voor CSS. Nu gaat het ledje wel aan maar blijft hij continu aan. Het is dus net of hij de delay niet doet of iets dergelijks. Mijn vraag is dus, zie ik iets over het hoofd?


void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   while(1)
   {
      output_b(255);
      delay_ms(100);
      output_b(0);
   }

}

Ik weet niks van MicroC of CSS (gebruik C18). Maar ik zou zeggen: kijk eens in de assembler list-file! Dan zie je wat de compiler er of niet van heeft gemaakt.

Het lijkt allemaal wel oke. Het rare is ook dat er bij beide compilers hetzelfde gebeurd. Voor mikroc is de code wel iets anders (andere commando's). Maar dat mag niks uitmaken.


....................       output_b(255);
0035:  CLRF   06
0036:  MOVLW  FF
0037:  BCF    03.5
0038:  MOVWF  06
....................       delay_ms(100);
0039:  MOVLW  64
003A:  MOVWF  26
003B:  GOTO   004
....................       output_b(0);
003C:  BSF    03.5
003D:  CLRF   06
003E:  BCF    03.5
003F:  CLRF   06
....................
....................    }
0040:  BSF    03.5
0041:  GOTO   035

[Bericht gewijzigd door ToCa op (55%)]

Ik denk dat de LED wel degelijk uitgaat maar dat je dat niet ziet omdat het te snel gaat.

Aan het einde van de while lus maak je de uitgang 0, maar direct daarna wordt de uitgang weer 1 gemaakt in het begin van de while lus.

Neem nog een vertraging op na het 0 maken van de uitgang en maak de vertraging langer.
Succes Hans.

Jeetje wat ongelofelijk dom. Dat krijg je blijkbaar als je er ff niet mee bezig bent. Mijn excuses voor de domme fout. Mn oog kan niet zien of een led een paar usec uit is natuurlijk. Dank u