Спасибо! Прикольно... а что делать то? Как правильно нужно записывать, чтоб эти флаги правильно работали? Вот пока писал, уже ответ пришел. Но R++ не влияет на флаг Н! Вроде понял... надо тогда просто регистры складывать, надеюсь это он умеет делать. Сейчас проверил, вот так флаги действительно правильно устанавливаються ^R20 1 -> R21 R20+R21
Спасибо! Прикольно... а что делать то? Как правильно нужно записывать, чтоб эти флаги правильно работали? Вот пока писал, уже ответ пришел. Но R++ не влияет на флаг Н! Вроде понял... надо тогда просто регистры складывать, надеюсь это он умеет делать. Сейчас проверил, вот так флаги действительно правильно устанавливаються ^R20 1 -> R21 R20+R21
Это от большего ума АБ sshot-1.png [ 1.5 КБ | Просмотров: 7181 ]
А если серьезно, AVR не умеет ПРИБАВЛЯТЬ к регистру константу. Умеет только отнимать (команда ассемблера SUBI), поэтому и строится такая конструкция! Если нужно такое действие как на картинке замените r20+1 на r20++
Это от большего ума АБ :)[attachment=0]sshot-1.png[/attachment] А если серьезно, AVR не умеет ПРИБАВЛЯТЬ к регистру константу. Умеет только отнимать (команда ассемблера SUBI), поэтому и строится такая конструкция! Если нужно такое действие как на картинке замените r20+1 на r20++
В часности интересуют флаги Н и С. В доках сказанно: Н - Флаг половинного переноса. Этот флаг устанавливается в «1», если произошел перенос из младшей половины байта (из 3-го разряда в 4-й) или заем из старшей половины байта при выполнении некоторых арифметических операций С - Флаг переноса. Этот флаг устанавливается в «1», если в результате выполнения операции произошел выход за границы байта Вот я и не могу понять почему эти флаги устанавливаються в 1 если эти события не возникают, а когда возникают эти события флаги устанавливаються в 0? По идее все должно быть наоборот, или я чего не понимаю?
В часности интересуют флаги Н и С. В доках сказанно: Н - Флаг половинного переноса. Этот флаг устанавливается в «1», если произошел перенос из младшей половины байта (из 3-го разряда в 4-й) или заем из старшей половины байта при выполнении некоторых арифметических операций С - Флаг переноса. Этот флаг устанавливается в «1», если в результате выполнения операции произошел выход за границы байта Вот я и не могу понять почему эти флаги устанавливаються в 1 если эти события не возникают, а когда возникают эти события флаги устанавливаються в 0? По идее все должно быть наоборот, или я чего не понимаю? [img]http://sxemy.narod.ru/debag.jpg[/img]