|
otixomdirkb
|
|
ADuC84x - MCS52 BASIC26.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 Кб] |
|
| 26.02.2012, 00:52 | |
|
Ответы с готовыми решениями:
8
Библиотека для Free Basic, аналог функций Pure Basic диалект языка basic- Gw basic .Помогите решить задачу Объясните поведение basic таймера ( basic timer ) |
|
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 | ||
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 | ||
|
Это была попытка превратить
0
|
||
|
0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 40
|
|
| 27.04.2013, 06:20 | |
|
Ну дак это кому что надо... Мне же интересно из за чего таки были проблемы.
0
|
|
| 27.04.2013, 06:20 | |
|
Помогаю со студенческими работами здесь
9
Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ? Вычисление значений функции двух переменных в Visual Basic - Visual Basic Visual Basic .Net и Visual Basic 6.0 - В чём разница
Отличия версий Visual Basic 6.0 от Visual Basic 6.5? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
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.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|