![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,705
|
![]()
Для типа float нужно вводить плавающую арфметику (библиотека), а это:
а) раздувает код б) замедляет работу в разы в) совсем ни к чему. Одно только объявление float не спасёт отца русской демократии. Тhe right road - просчитать константы вручную и забить их в дефайны, мы вроде определились. Последний раз редактировалось digitalis; 27.10.2021 в 19:18. |
![]() |
![]() |
![]() |
#22 |
Пользователь
Регистрация: 24.10.2021
Сообщений: 17
|
![]()
Жаль... Потому-что некоторые вычисленные значения констант дробные, а некоторые еще и со знаком минус. Объявить их через EQU как числа не получается.
Тем не менее, осталось три ошибки из примерно 600 (более 2100 строк кода). И один варнинг. Варнинг: Value has been Truncated to 8 Bits Код:
Ошибки: Code-address expected Код:
Сразу под ним: Код:
Код:
Тут я нашел причину. В reg51.h, который инклудится в шапке уже определен битовый регистр RS1. Переименовал метку в RSS1, и ссылку из первой ошибки - и осталась последняя ошибка: Код:
Здесь по сути идет установка портов P0 (P0.1-P0.7) в лог.1. P0 - также определен в reg51.h. Сделал вот так: Код:
Последний раз редактировалось devel2011; 27.10.2021 в 20:45. |
![]() |
![]() |
![]() |
#23 |
Пользователь
Регистрация: 24.10.2021
Сообщений: 17
|
![]()
Вопрос с константами пока открыт. От них просто так не уйти, т.к. в программе ведется подсчет времени, и другие счетчики (в т.ч. от внешних датчиков). И все это увязано на частоту кварца. Какой выход возможен, если вот так сделать нельзя:
Код:
|
![]() |
![]() |
![]() |
#24 |
Пользователь
Регистрация: 24.10.2021
Сообщений: 17
|
![]()
Поскольку выяснилось, что EQU работает только с целыми числами, то решил пока пренебречь этим. Переделал выражения, чтобы не вываливались за диапазон 65535. Также пробовал просто указать значения. Вобщем, компилируется, HEX получен.
Эксперимента ради закинул FILE.A51 в компилятор Atmel C51ASM. Ему потребовался несколько иной inc, но это мелочь, подошел AT89S51.inc (в нем указано, что он подходит для AT89C51 тоже). На удивление, этому компилятору на числовые выражения справа от EQU фиолетово. Зато он вывалил 30 варнингов Expression greater than 8-bits. Код:
Код:
Во многих других варнингах также присутствует NOT, но не во всех. По-прежнему непонятно выражение (7). Что оно означает (порт, восемь бит 11111111, или что-то иное)? Но главное не в этом. Размер HEX-файла получился 8,2кБ. А у AT89C51 флеш всего 4кБ. Крайний адрес 0FFFH. У меня же получилось почти 2100H. Попробовал подгрузил HEX в miniPro - вижу блоки ... FF FF FF ... в середине прошивки. По идее такого быть не должно. Возможно, нужно как-то указать компилятору, как использовать память (пропустить FF, например). В "железе" внешней EEPROM не предусмотрено, т.е. предполагается, что весь код должен уместиться во флеш 4кБ. Возможно, исходник A51 - не финальный вариант, и в отладке использовался EEPROM, но как это определить? Если же это только мои домыслы насчет EEPROM, то как оптимизировать HEX, чтобы он влез в 4кБ? Фантастическая досталась мне прошивка =) |
![]() |
![]() |
![]() |
#25 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,705
|
![]()
Не проще ли, зная алгоритм, написать прогу с нуля? А то получится что-то костыльное с неопределённым количеством мин в виде необнаруженнвх багов. А если алгоритм неизвестен? Тогда имеем перевод произведения неизвестного жанра с южно-португальского на древне-зулусский посредством корейского разговорника.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка. Берём hex-код, шифруем hex-код, собираем всё в файл. | Poltish | Общие вопросы Delphi | 2 | 21.08.2013 12:57 |
file->HEX HEX->BIN | kakawkin | Общие вопросы Delphi | 1 | 25.04.2012 01:02 |
По HEX | kompaky | Общие вопросы по программированию, компьютерный форум | 2 | 30.07.2011 19:12 |
Помогите с hex в с++ | pavelstraut | Помощь студентам | 1 | 17.07.2009 23:29 |
C# и HEX | megazz13 | Помощь студентам | 2 | 03.04.2009 00:32 |