Вопрос по Си(3 дня назад начал): в асме MCS51 что бы загрузить в Т/С0 число например 25000, пишешь- MOV TL0,#LOW 25000; MOV TH0,#HIGH 25000 - а как тоже самое сделать на Си?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
Полу-программист
25 марта 2003 г. 11:43
Составить ответ
|||
Конференция
|||
Архив
Ответы
Ответ: В Кейле сделано хорошо - можно при помощи объявить таймер как sfr16 и присваивать. Компилятор все сам сделает.
—
Владимир З
(25.03.2003 13:37, 169 байт)
C TH0, TL0 такого сделать нельзя
—
RadiM
(25.03.2003 13:43,
пустое
)
Действительно, с T0 и T1 не получится. Но с другими регистрами, у которых адреса подряд идут - пожалуйста. Тогда надо макрос написать
—
Владимир З
(25.03.2003 15:50, 53 байт)
Это почему нельзя? Для меги 103, 161, 128 написал h-файлы, где это сделано.
—
Михаил Е.
(25.03.2003 14:15,
пустое
)
Опаньки, Кейл оказывается новые 51-ые знает: меги 103, 161, 128 :-)
—
CTAC
(25.03.2003 14:37,
пустое
)
Да какая разница, 51-е или AVR? H-файлы написаны стандартными для Си средствами. Для любого контроллера можно написать.
—
Михаил Е.
(25.03.2003 14:40,
пустое
)
Добавлю: в sfr16 слово одной командой пишется, из двух однобайтных регистров он ИМХО не получится.
—
ВМФ
(25.03.2003 15:04,
пустое
)
Ответ: Разница - в 51-ом TL0 по адресу 8Ah, a TH0 - 8Ch
—
CTAC
(25.03.2003 14:48,
пустое
)
Ну тогда конечно. Я про смежные адреса говорил.
—
Михаил Е.
(25.03.2003 14:52,
пустое
)
Ответ:
—
МожноИтак
(25.03.2003 11:58, 79 байт)
И что осталось от Си?:о))
—
ВМФ
(25.03.2003 12:31, 65 байт)
IAR - правильно, а другие как ? Переносимость вешь не последняя
—
ЭтоДробиУжеПошли
(25.03.2003 12:41,
пустое
)
Переносимость не при чем, просто порядок байт в int и в T0 должны совпадать. А в AVR специально сделано чтобы они совпадали.
—
Михаил Е.
(25.03.2003 13:01,
пустое
)
Дык вроде и в AVR и в 51м порядок байт в парных sfr одинаковый и прямо противоположен порядку бай т в int...
—
ВМФ
(25.03.2003 13:14,
пустое
)
Для AVR сейчас перепроверил - совпадают. А то уж засомневался было.
—
Михаил Е.
(25.03.2003 14:02,
пустое
)
Разве старший байт переменной в Си не по младшему адресу в памяти размещается?
—
ВМФ
(25.03.2003 14:17,
пустое
)
В моторолах по младшему, в интелах наоборот.
—
Linuxoid
(25.03.2003 14:28,
пустое
)
Младший байт по младшему адресу.
—
Михаил Е.
(25.03.2003 14:23,
пустое
)
Тож перепроверил)) ИАР - младший по младшему, Кеил - наоборот. ОК. Второй пункт наполовину снимается ))
—
ВМФ
(25.03.2003 14:41,
пустое
)
Я !
—
компилятор
(25.03.2003 12:38,
пустое
)
Ответ: Так тоже можно, только Вы делаете перевод вручную, что чревато ошибками. Лучше эту работу оставить компилятору.
—
Bill
(25.03.2003 12:27,
пустое
)
Не надо о "возможных ошибках" - ох, далеко зайдем ;)
—
Весельчак_У
(25.03.2003 15:01,
пустое
,
картинка
)
Ответ: Наверное можно так:
—
Bill
(25.03.2003 11:53, 141 байт)
Ответ: СПАСИБО!!
—
Полу-программист
(25.03.2003 18:33,
пустое
)
Ответ:
—
bialix
(25.03.2003 11:50, 43 байт)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru