int port_set(int a)
{
;
}
int main()
.....
port_set(2*a);//если писать так, то значение не увеличивается, но и не выдаёт ошибок
//или ещё пример
port_set(a/2);//если писать так, то значение не уменьшается, но и не выдаёт ошибок
Заранее спасибо!
лучше вот так сделайте:king-live писал(а):Доброго времени суток! Как правильно в С передать (написать) значение функции, если это значение по определённому условию должно быть предварительно увеличенна или уменьшинна. К примеру
int port_set(int a)
{
;
}
int main()
.....
port_set(2*a);//если писать так, то значение не увеличивается, но и не выдаёт ошибок
//или ещё пример
port_set(a/2);//если писать так, то значение не уменьшается, но и не выдаёт ошибок
Заранее спасибо!
... и где же тут условие?king-live писал(а):.... если это значение по определённому условию должно быть предварительно увеличенна или уменьшинна. К примеру
int port_set(int a)
{
;
}
int main()
.. если имеется в виду значение a , то оно и не должно измениться ... напишитеking-live писал(а):port_set(2*a);//если писать так, то значение не увеличивается, но и не выдаёт ошибок
//или ещё пример
port_set(a/2);//если писать так, то значение не уменьшается, но и не выдаёт ошибок
Код: Выделить всё
a*=2;
//или
a/=2;Попробую таким способом, но вопрос в другом, может памяти МК не хватить на дополнительную процедуру. Иногда приходится отваёвывать каждый 0,1% во Флешке МК.лучше вот так сделайте:
int port_set(int a)
{
++a;
return a;
}
main()
int k;
k=0;
...
...
b=port_set(k);
return 0;
}
Вы имели ввиду следующее:a*=2;
//или
a/=2;
... я имел ввиду, что в функцию передается локальная копия и если хотите изменить значение a, то передавать параметр нужно по ссылке, а не по значению.......king-live писал(а):Вы имели ввиду следующее: .....
Код: Выделить всё
int a = 5;
Delay_1_8(5*a); //
574: 89 e1 ldi r24, 0x19 ; 25
576: 36 de rcall .-916 ; 0x1e4 <Delay_1_8>
578: fb cf rjmp .-10 ; 0x570 <main+0x18>
Код: Выделить всё
volatile int a=5;
57e: 0f 2e mov r0, r31
580: f5 e0 ldi r31, 0x05 ; 5
582: ef 2e mov r14, r31
584: ff 24 eor r15, r15
586: f0 2d mov r31, r0
...
volatile int a=5;
58c: fa 82 std Y+2, r15 ; 0x02
58e: e9 82 std Y+1, r14 ; 0x01
Delay_1_8(5*a); //
590: 29 81 ldd r18, Y+1 ; 0x01
592: 3a 81 ldd r19, Y+2 ; 0x02
594: c9 01 movw r24, r18
596: 88 0f add r24, r24
598: 99 1f adc r25, r25
59a: 88 0f add r24, r24
59c: 99 1f adc r25, r25
59e: 82 0f add r24, r18
5a0: 21 de rcall .-958 ; 0x1e4 <Delay_1_8>
5a2: f2 cf rjmp .-28 ; 0x588 <main+0x30>
Код: Выделить всё
void out(int b)
{
DispOut32(0x0115F24A, b);
}
void main(void)
{
int a=10;
out(a+10);
}
Не в обиду сказано, но возникает вопрос. Сейчас так принято, не доучив русский язык приниматься за языки программирования? Раньше все шло постепенно. Если следовать этому принципу, то и языку программирования уготована та же судьба - остаться недоученным...king-live писал(а):Кстати, понял свою ошибку. В функции White(x), какоебы значение я не давалбы переменному "х" , что White(2*x), что White(x/2) - (возможно это работает) , х всёравно принялбы значение ADCH. Поэтому значение х не увеличивалось и не уменьшалось, а зависило от ADCH. Спасибо за помощь!