Citat:
ivan malesevic:
treba mi sledece
Vrlo korisno je da za zasebno pitanje pravis zasebnu temu. Ovde si zapoceo temu sa tim kako da dobavis kompajler, kada si nasao kompajler to bi realno bio kraj te teme. Sada imas problem sa tim kako da nesto napravis, za to realno treba da otvoris zasebnu temu. Nije "neophodno" ali je jako korisno
Citat:
program ide i ako stisnem taster program tu staje,nekrece dalje dok opet nestisnem taster kad ga stisnem program se nastavi dalje odatle gde je i stao,a ako taster nestisnem u nekom vremenskom periodu recimo 1000ms program nastavlja dalje
to bi bila jedna labela na koju bi sa gosubom vracao kada mi ta provera treba
najlakse ti je da koristis externi klok i onda kada stisnes taster ukines klok mikrokontroleru i on tu ostane gde je :D
no, da resis to programski mozes ili posle svake naredbe da ispitujes stanje tastera .. nesto tipa
Code:
a = 10
gosub proveritaster
a = a+b+c
gosub proveritaster
PORTx = a
gosub proveritaster
if PORTz > c then PORTx = 0
gosub proveritaster
...
sto je cista glupost ..
ono sto treba da uradis je da napravis interapt koji je vezan za taj taster i onda kada stisnes taster mcu ce da skoci u interapt, ti tamo odradis sta vec hoces da odradis (1sec pauza) i onda izadjes iz interapta (kada se zavrsi 1sec delay ili neko stisne taster opet) te samim izlaskom iz interapta program nastavlja "gde je stao". bez interapta nemoj ni da pokusavas da resis taj problem
dakle nesto tipa (e sad ja ne cukam basic nego C ali ti je princip isti):
Code:
void _interrupt_ _ISR(void){
long counter;
if (interrupt_na_taster){
counter = 0;
while (counter < CPU_FREQ/4/2){ //~1sec
if (PORTBbits.RB0) break;
counter++;
}
clear_interrupt_flag_od_tastera;
}
// ... ostatak interrupt rutine
}