|
по пункту 1 - понятно,
во втором случае вопрос такой - в какой момент TCNT0 перейдет из состояния 255 в 0, и когда этот "флаг переполнения" выставится?
т.е. как я понял перед считыванием таймера, нужно остановить его, потом посмотреть флаг переполнения, если он есть (то и TCNT0 по идее уже в 0 перейдет?) то увеличить старший байт и сохранить оба байта. Если флага нет, то тупо сохранить оба байта виртуально таймера.
так?
а ишо, как в в С, используя асмовские инструкции обращаться к переменным С?
т.е. есть у меня глобальная переменная
unsigned char Time_H; // страший байт счетчика
unsigned char Time_L; // младший байт счетчика
и где в процедуре любой нуна сделать так:
asm(
" sub r27, Time_L \n" // remainder = remainder - divisor
" sbc r28, Time_H \n"
" nop " );
сейчас я вместо Time_L и Time_H пишу g0, g1 и другое, т.е. компилю текст, смотрю куда компилятор засунул эти переменные и потом переправляю код, но это жутко неудобно, т.к. он их тусует все время по разным регистрам (непонятно зачем - я оптимизацию отрубил)... как бы мне ссылаться на эти переменные?
ImageCraft C (ICCtiny)
E-mail: info@telesys.ru