ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
1280584 Топик полностью
Costic (01.02.2023 14:07, просмотров: 248) ответил vpv.vpv на Если писать на ассемблере самому, или на Си с выключеной оптимизацией, - то волятильность ничего не даёт. Иначе компилятор наоптимизирует так, что программа может перестать работать. Например, объявлены две переменные, им присвоены значения, после эти переменные проверяются, по результатам модифицируются порты. Текст на Си:
Выкинул и правильно сделал, потому что ваш пример неудачный. Вот вам лучше пример, переделайте под ваш проц/компилятор/среду. И давайте смотреть, что будет выкинуто С ОПТИМИЗАЦИЕЙ. 
volatile char vol_c;

        char no_vol_c;

__C_task void main(void)
{
	vol_c = 5;
	no_vol_c = 5;

	while(1)
	{
		if (vol_c) PORTB = 1;
		if (no_vol_c) PORTC = 2;
	}
}

void Timer0_ISR(void) interrupt TIMER0_IRQn
{
	vol_c = 5 - vol_c;
	no_vol_c = 5 - no_vol_c;
}