Цитата(Igor26 @ May 15 2008, 21:07)

Попробуйте, пользуясь этим апнотом, написать бутлоадер, например, для Меги-8.

Для меги у меня уже давно работает!А для тини(думала получиться аналогичным образом) не получается.Теперь вся сложность состоит в использовании ассемблера...
Цитата(defunct @ May 16 2008, 00:32)

Использовать intrinsics для tiny у меня не получилось...
Но можно пойти таким путём.
Создаем и подключием к проекту asm модуль my_spm.s90 сл. содержания (это конечно не оптимальный вариант, но работать можно):
Код
#define SPMCR 0x37
#define SREG 0x3F
PUBLIC DoSpm
RSEG CODE:CODE:NOROOT(1)
DoSpm
PUSH R31
PUSH R30
MOVW R31:R30, R17:R16
MOVW R17:R16, R1:R0 // R17:16 pair used as temp space
MOVW R1:R0, R19:R18
CLI
OUT SPMCR, R20
SPM
SEI
MOVW R1:R0, R17:R16 // restore R1:R0 pair
POP R30
POP R31
RET
END DoSpm
В основной программе объявляем функцию DoSpm:
Код
extern int DoSpm( int addr, int data, char spmcsr_code);
addr - помещается в Z
data - в R1-R0
spmcr_code - в SPMCSR (0x37 I/O space для t13)
и выполняется команда SPM
функция будет возвращать "мусор" (содержимое R1:R0 до вызова функции), на результат не смотрите.
Ну а дальше уже по даташиту делайте то, что вам нужно.
Вроде всё так сделала, но появляется ошибка
Error[e46]: Undefined external "DoSpm" referred in main ( E:\Len_OK\iar\work_flash\test3\Debug\Obj\main.r90 )