Цитата(Чип-Хрум @ Jun 9 2007, 20:13)

Ув. xemul я спрашивал конкретно а ты не ответил , я дал пример на катором наглядно
переменная adc_end изменяет свое значение там где не должна этого делать.
Ошибаетесь, я ответил. Вы, вероятно, невнимательно читаете.
Код
С точки зрения компилятора глобальная переменная "volatile unsigned char adc_end=0;" и аргумент функции ADC_2 "unsigned char adc_end" никакого отношения друг к другу не имеют.
Переведу с русского на русский. Вы передаете в функцию ADC_2 один аргумент adc_end
по значению, и оно случайно оказывается равно значению глобальной переменной adc_end. То, что имя аргумента и имя глобальной переменной совпадают, не обязывает компилятор С считать их одним и тем же - это не Васик. Как следствие, в прерывании исправно модифицируется значение глобальной переменной adc_end, что никак не отражается на состоянии локальной переменной adc_end функции ADC_2().
Цитата
[SENSORED] возьми и откомпелируй прогррамку поставь брейкпойнт
на то место где я тебе предлагаю и запусти отладчик . А потом Подывысь як цыферки то
изменяются.
То что ты предложил изменить прототип я изменил не помогло!
Ваша программа не требует для разбора проблемы таких усилий. Кста, если место для брейкпоинта означено //???..., то при заданных начальных условиях исполнение программы до него никогда не дойдет.
Я предложил не изменить прототип, а подумать.
Попробуйте следовать в своих постах элементарным этическим нормам, местами распространным в стране моего проживания, или хотя бы правилам форума.