Т.Достоевский (29.05.2007 23:53, просмотров: 1) ответил Vit на ИМХО, знать асм полезно, но не задумывались ли Вы, почему за С-компиляторы гораздо чаще просют денег, чем за асм?
Согласен абсолютно! Особенно в в свете появления двухядерных мелкоконтроллеров. Я в мнемониках запутался однозначно. Повесил их на стенке. Но как иАче сделать разрешение вложенных прерываний на 51х. Там при обработке прерываний флаг глобальных прерываний не сбрасывается, а запрещаются только те что с более низким прриоритетом. И чтоб не заморачиваться с ртос можно по результатам обработки этого прерывания произвести какое нибудь действие(например ад собрал нужное количество данных). А чтоб вообще ничего не пропустить надо опять разрешить ВСЕ прерывания. Это можно сделать только командой RETI. Только она может сбросить логику приоритетов. Но тогда всё на этом и закончится. Поэтому делают так:
mov r1,#m1/256 ;в 51 это загрузка константы
push r1
mov r1,#m1%256 ;порядок следования не помню
push r1
RETI
m1: ;полсе RETI он перейдёт СЮДА!
ххх;
Сдесь совместимость дефайнов это ПРИНЦИПИАЛЬНАЯ ВЕШЬ
Такие конструкции очень чреваты переполнением стека и повторным выполнением. Ставьте их только на точно вымеренные прерывания (tc_ovf ADC_ok итд).
И только если речь идёт о серийных (крупносерийных) проэктах где сэкономленная внешняя микросхема ценой в 0.5 долара, приносит прибыль лично вам как программеру 0.5 * 10^6 посчитайте сами.
ЗЫ кстати примерно так работают атомарные ртос. У них вызванная задача выполняется до полного завершения.