Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/78: Рейтинг темы: голосов - 78, средняя оценка - 4.95
otixomdirkb

ADuC84x - MCS52 BASIC

26.02.2012, 00:52. Показов 14798. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
[173.73 Кб]

Уважаемые форумчане!

Спешу похвалить микроконверторы Analog Devices ADuC8xx с однотактовым ядром 8052.
Помимо "стандартного" ядра, правда в 12 раз более быстрого, в микросхему входит развитая периферия,
в частности быстрый и точный АЦП и 2 ЦАП. Кроме того, 2К встроенной XROM и целых 62К EEPOM памяти программы.
Есть 4К EEPOM данных с организацией 1К страниц по 4 байта.

Пишу это не в рекламных целях, а вот почему.
Широко известен проект MCS52 BASIC, я имею в виду бейсик-интерпретатор на базе 8052.
Многочисленные модификации проекта так или иначе включают собственно 8052 (80С52, 80С32, 87С52 и т.д),
ОЗУ с минимальным объемом 1К (как правило от 2К до 32К), предусмотрено РПЗУ с объемом 8К, но в принципе бейсик работает в минимальной конфигурации: микроконтроллер 8052 с прошивкой 8К и ОЗУ 1К.
В качестве консоли используется RS232 терминал.

Естественно, хотелось бы попробовать применить ADuC841(2,3) вместо 8052 и, таким образом, построить контроллер со встроенным бейсик-интерпретатором на одной (не считая драйвера RS232, стабилизатора 5В и проч.) микросхеме.

Я отредактировал исходный ассемблерный код следующим образом:
1) по адресу 0000H записал LCALL 4300H , а там прописал регистры PLLCON CFG842 и, наконец, LCALL на стартовый адрес.
2) стер код автоматического определения скорости RS232 терминала и установил принудительно 2400БОД.
Сделал это потому, что из-за того, что ядро 842 однотактовое, определение скорости терминала происходило неправильно.

Но при попытке "приспособить" исходный код (он свободно распространяется в сети) для ADuC84x я столкнулся с непонятным поведением программы.

Вот пример, судите сами:

*MCS-51(tm) BASIC V1.1*
READY
>PRINT 2+5
7

>PRINT 2/3
.66666667

>PRINT SIN(0.785398)
.7071067

ERROR: BAD SYNTAX
READY
>10 PRINT 10
>20 PRINT 20
>LIST

READY
>for j=0 to 10:?j:next j
0

ERROR: C-STACK
READY
>
Все дальнейшие изменения исходного кода (отключение источников прерываний, переходов по "пустым" адресам") ни к чему не привели.

Буду бесконечно признателен, хотя и в пределах разумного, за ценные и бесценные мысли по поводу "лечения" интерпретатора.

[140.34 Кб]

[147.57 Кб]
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2012, 00:52
Ответы с готовыми решениями:

Библиотека для Free Basic, аналог функций Pure Basic
Просматривая форумы FreeBasic'a наткнулся на библиотеку, которая ставит своей целью дублирование функций языка Pure Basic, дублирование...

диалект языка basic- Gw basic .Помогите решить задачу
Составить программу для определения калькуляции на выпуск продукции. Задается стоимость детали в рублях. Деталь может изготавливаться...

Объясните поведение basic таймера ( basic timer )
Голова вскипела, выручайте :) CooCox 1.7.0 STM32VLDISCOVERY (STM32F100RB) Не могу объяснить поведение basic таймера TIM6. Работаю от...

8
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 45
26.02.2012, 21:09
Чем прошиваете эти МК?
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
27.02.2012, 16:51
Эти МК можно прошивать через SPI
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
27.02.2012, 17:53
Лучше всего их шить через втроенный бутлоадер по COM порту. Программатор не нужен.
0
otixomdirkb
27.02.2012, 23:49
Цитата Сообщение от Bomomd
Лучше всего их шить через втроенный бутлоадер по COM порту. Программатор не нужен.
Прошиваю WSD 7.05 через последовательный порт. Бутлоадер не использую - он наверняка будет мешать.

1) Железо - АДУК в чистом виде: микросхема на плате, внешний источник +5В и кабель с драйвером RS232 (из стартового комплекта 842).
Во вложении sheetpsb.ZIP схема и рисунок платы.

2) Среда: их две: Keil uVision 7.04 и Aspire 1.05.
В предыдущем вложении проект под Keil.
Две среды проектирования взял для страховки. А зря - результат компиляции одинаков.
Для моделирования (ес-но вместо АДуКа брал 8052 или 8032) - Proteus 7.2 SP6.

3) Что должно быть? Во-первых корректное выполнение инструкций Бейсика (версии 1.1 и 1.31 ведут себя одинаково).
Например:

*MCS-BASIC-52 V1.31*
READY
>10 ? 10
>20?20
>list
10 PRINT 10
20 PRINT 20

READY
>run

10
20

READY
>fori=0to5: ?i:nexti
0
1
2
3
4
5

>

(это то, что дает Протеус - aduc842.DSN).
------------------
А вот то, что я получаю реально на экране терминала (эмулятора терминала TTerm1.ixi - см. вложение):

*MCS-BASIC-52 V1.31*
READY
>10 ? 10
>20 ? 20
>list

READY
>run

READY
>fori=0to5: ?i:nexti
0
0.081

ERROR: C-STACK
READY
>
Т.е. строки 10 и 20 не были сохранены в ОЗУ,
цикл выполнен 1 раз правильно, второй - неправильно, дальше типа переполнен стек.

Еще "перлы":
>?MTOP,MBOT,FREE,MTOP-FREE
2047 -0.0000084 E-58 1535 512

>?MBOT
-0.0000184 E-97

>NEW

>?MBOT
0.081

>
>?len
1

>
Т.е. "вершину" памяти нашел верно, разность - верно, LEN=1 это верно, если пусто в памяти. ФРИ - тоже верно. А вот МБОТ должен быть равен 0.
Еще пример:
*MCS-BASIC-52 V1.31*
READY
>?mbot
0

>?355/113
3.1415929

>?mbot
0

>fori=10to1step-1 : ?i :nexti
-?.400121 E-113

>?mbot
0.001 E-0

>
В общем таких примеров много. Мне они ни о чем конкретно не говорят,
и подсказки не дают.
Дело осложняется тем, что отладка возможна через УАРТ, а он используется самим Бейсиком. Поэтому как только я дохожу до обращения к последовательному порту, происходит ошибка и в дальнейшем я не могу проследить за ходом выполнения программы.
А в Протеусе нет адекватной модели АДуКа.

Ну а во-вторых по определенным адресам внутренней XROM должны быть прописаны определенные коды. Они не соответствуют тому, что должно быть либо функция XBY(<адрес>) работает неправильно.
Например по адресу 266 (10АН) д.б. 7, а есть 50, по адресу 267 д.б. 255, есть 54.
Между прочим это ячейки, где записан МТОР, хотя МТОР = 2047 - верно.

[230.64 Кб]



[154.71 Кб]
otixomdirkb
17.11.2012, 14:47
Ну вот, господа!
Наконец у меня есть рабочий БЕЙСИК-интерпретатор для АДуК842.
Если кого-то интересует - пишите в личку.
0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 40
26.04.2013, 11:53
Так что же было?!!!
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
26.04.2013, 14:23
Это была попытка превратить
Цитата Сообщение от alexomdergb
..."стандартного" ядра, правда в 12 раз более быстрого...
в хромого инвалида на BASIC. По словам ТС операция прошла успешно.
0
0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 40
27.04.2013, 06:20
Ну дак это кому что надо... Мне же интересно из за чего таки были проблемы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2013, 06:20
Помогаю со студенческими работами здесь

Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ?
Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net

Вычисление значений функции двух переменных в Visual Basic - Visual Basic
Помогите пожалуйста! В среде VB написать программу вычисления значений функции двух переменных. Ориентировочный вид окна программы и...

Visual Basic .Net и Visual Basic 6.0 - В чём разница
В общем возник вопрос: Visual Bisic.Net и Visual Basic - это два разных языка, или же .NET версия это лишь его улучшение. Я так понимаю что...

Visual Basic 6 и Visual Basic .NET - в чем различия?
Visual Basic и Visual studio это не одно и тоже? если нет то в чём разница, по мимо оформления?

Отличия версий Visual Basic 6.0 от Visual Basic 6.5?
У меня 3 вопроса: 1.Чем отличается версия Visual Basic 6.0 от Visual Basic 6.5? 2.Можно ли запустить проект созданный раннее в Visual...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru