Цитата(siriasis @ Jun 4 2005, 22:05)
2313 это At90s2313/
Да мужики я молодой в этом деле, и Си пока не изучал. Только ассемблер потихоньку освоил. Так что не могли бы объяснить как на ассемблере написать таблицу.
Да элементарно. Таблица - набор чисел (скажем, байт), следующих во FLASH друг за другом. Произвольные байты размещаются в памяти ассемблерной директивой .DB n1, n2, ...
Взять число из таблицы по индексу - значит, вычислить смещение от начала этого набора и выполнить команду LPM.
С расчётом таблицы, думаю, проблем не возникнет )
Как результат, имеем примерно такой код:
Код
;п/п принимает индекс в регистре R30, возвращает значение таблицы в регистре R0
get_sin:
ldi r31,0
subi r30,-low(sintable*2)
sbci r31,-high(sintable*2)
lpm
ret
sintable:
.db 0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17
.db .....все остальные значения