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);
}
}
FullPower
De grootste moeilijkheden liggen daar waar we ze niet zoeken. [Goethe]
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