seedbutcher писал(а):он для atmel?
Для любой 51-класики и для СиЛабса тоже подойдёт, только настройка последовательного порта чуть подправится..
Это мя делал для отладочного модуля загрузчик, что-бы не прошивать микросхему, а загружать программу в ОЗУ, которое находилось в области памяти программ..
seedbutcher писал(а):можно еще пару комментариев про лишние команды?
Вот например, ты вызываешь отдельную подпрограмму при обработке прерывания.
Код: Выделить всё
ORG 07BH ; прерывание по завершению преобразования в АЦП0
CALL INTER_ANGLE ; вызов подпрограммы обработки углов
RETI ; возврат из прерывания
Т.е. у тя получается, что пришло прерывание, ты прыгаешь на подпрограмму INTER_ANGLE, потом после её RET-а прыгаешь обратно, а потом по RETI выходишь из прерывания..
Одна из команд возврата - лишняя..
Надо было написать:
Код: Выделить всё
ORG 07BH ; прерывание по завершению преобразования в АЦП0
LJMP INTER_ANGLE ; вызов подпрограммы обработки углов
А в конце подпрограммы INTER_ANGLE поставить RETI..
И ещё такой совет:
В системе команд МК51 нет команд
jmp и
call, а то, что ты написал, это псевдо-команды транслятора, который вместо них подставляет конкретные команды
sjmp,
ajmp,
ljmp и
acall и
lcall в зависимости от длины вызова/перехода..
Не привыкай к просто
jmp и
call - ставь конкретную команду..
P.S. И ещё, не забывай в подпрограммах обработки прерываний и в остальных подпрограммах сохранять И и возвращать ИЗ стека значения регистров, которые данная подпрограмма изменяет..
Это не относится к тем регистрам, через которые могут передаваться/возвращаться параметры подпрограмме..
Т.е. в начале твоей подпрограммы INTER_ANGLE должны быть строчки:
А в конце, перед командой возврата, наоборот:
Обращаю внимание, что в этих командах аккумулятор надо писать, именно так -
ACC, а непросто
А..
И слово состояния,
PSW для порядка сохраняется, что-б не терялись флаги основной программы..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]