|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
||||||
область памяти XDATA для микроконтроллера MSC-51 (i8051, АТ89С52)07.10.2019, 21:51. Показов 4035. Ответов 24
Метки нет (Все метки)
здр.. имеется следующее задание.. нужно в области памяти XDATA задать массив целых беззнаковых двухбайтных чисел arr[i].. все это должно быть написано в среде Keil uVision 4 для микроконтроллера MCS-51 (8051, АТ89С52).. пжл, проверьте правильность написания мной кода конкретно для этого задания и вообще всей структуры программы.. прошу указать мне и исправить ошибки, если таковые имеются..
0
|
||||||
| 07.10.2019, 21:51 | |
|
Ответы с готовыми решениями:
24
Передача данных массива Y через последовательный порт на Си для микроконтроллера MSC-51 (i8051, АТ89С52) Мерцание светодиода с периодом на языке Assember для микроконтроллера i8051 |
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
|
| 08.10.2019, 16:26 [ТС] | |
|
хорошо, семейство MCS-51 (i8051) - восьмиразрядные микроконтроллеры.. но как тогда объявить и инициализировать массив байт в области памяти XDATA, чтобы потом их можно было обрабатывать как двухбайтные числа?
0
|
|
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
||
| 08.10.2019, 17:16 | ||
|
DD - это 4 байта А во вторых - с XDATA такая конструкция не получится. Сначала завести массив в CODE, выделить место в XDATA (через DS) и скопировать из CODE в XDATA
1
|
||
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
|
| 08.10.2019, 17:39 [ТС] | |
|
Intel4004, а в каком порядке должны располагаться байты в словах в XDATA в i8051? также как в i386 младший байт по младшему адресу? или в обычном варианте младший байт по старшему адресу? так же как мне можно будет проверить то, скопировались или нет в XDATA данные?
0
|
|
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
||||||
| 08.10.2019, 18:04 | ||||||
1
|
||||||
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
|||||||
| 08.10.2019, 18:58 [ТС] | |||||||
|
Intel4004, начал копировать.. почему-то выскакивает ошибка на инструкции mov A, @R0.. в чем дело?
0
|
|||||||
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
|||||||
| 08.10.2019, 19:35 | |||||||
|
А MOV A,@R0 - это адресация сегмента IDATA А ошибка скорее всего потому что в настройках проекта выбран процессор без IDATA. Соответственно если в R0 лежит значение 0x80 или больше, то при выполнении адресуется неиспользуемая область. Добавлено через 6 минут
1
|
|||||||
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
||||||
| 08.10.2019, 20:37 [ТС] | ||||||
|
Intel4004, по сути у тебя все логично получается.. но у меня почему-то само копирование не происходит.. всегда первоначально адрес BUFF (@DPTR) равен нулю.. возможно, в начале памяти находится какая-то системная информация и не дает запись в ту область.. думаю, нужно как-то сдвинуть адреса.. скажи, что мне нужно подправить?
P.S. также ошибку выдавало на пустой сегмент ?STARTUP, я его уже удалил..
0
|
||||||
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
||
| 09.10.2019, 00:13 | ||
|
Адресное пространство XDATA - 0x0000-0xffff В XDATе всего один сегмент (?X_ARRAY), линкер естественно располагает его в начале адресного пространства (адреса 0x0000-0x00a) В этом сегменте - всего одна переменная (BUF), занимает весь сегмент (адреса 0x0000-0x00a). Естессно адрес этой переменной - 0x0000. Добавлено через 4 минуты Рекомендую ознакомиться с отличиями гарвардской и фоннеймановской архитектуры. х51 - гарвардская, все остальные популярные процессоры (включая x86) - фоннеймановская. Добавлено через 35 минут hint: в кейле, в окошке memory, чтобы смотреть XDATA к адресу надо добавить префикс X x:0 - нулевой адрес XDATA c:0 - нулевой адрес CODE i:0 - нулевой адрес IDATA
1
|
||
| 09.10.2019, 01:26 | |
|
0
|
|
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
|
| 09.10.2019, 13:24 [ТС] | |
|
northener, "обычном" здесь имеется ввиду "математическом", а не "компьютерном" варианте..
0
|
|
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
||||||||
| 09.10.2019, 13:58 | ||||||||
|
По адресу 0x0003 начинается таблица прерываний. Ваш код делает невозможным использование прерываний.
1
|
||||||||
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
||||||
| 09.10.2019, 15:11 [ТС] | ||||||
|
Intel4004, почему может неправильно работать команда CJNE ?? при данных условиях все равно переходит на метку FIRST..
0
|
||||||
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
|
| 09.10.2019, 15:17 | |
|
Не может. Значит в R0 не 2
0
|
|
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
||||||
| 09.10.2019, 15:32 [ТС] | ||||||
|
Intel4004, у меня может.. пжл, проверь последний цикл.. там должны копироваться только первые два байта из BUF в облать памяти, расположенную после BUF..
0
|
||||||
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
|||||||
| 09.10.2019, 15:52 | |||||||
|
Чтобы такие глюки не ловить - если программе дальше выполняться не надо - глуши ее:
1
|
|||||||
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
|
| 09.10.2019, 15:58 [ТС] | |
|
Intel4004, а если вместо jmp $ поставить nop, то будет тот же эффект?
0
|
|
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
|
| 09.10.2019, 16:03 | |
|
нет, nop это просто команда которая не меняет регистров и флагов. Тупо задержка на микросекунду. После нее выполнение продолжается дальше.
JMP $ это аналог DeadLoop: JMP DeadLoop
0
|
|
|
Прощай, Мир!
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
|||||||||||
| 09.10.2019, 16:37 [ТС] | |||||||||||
|
Intel4004, ясно.. а можно ли как-то толкнуть/вытолкнуть в/из стек(а) именно флаг переноса?
следующий вариант вроде не годится..
0
|
|||||||||||
|
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
|
|
| 09.10.2019, 16:51 | |
|
1
|
|
| 09.10.2019, 16:51 | |
|
Помогаю со студенческими работами здесь
20
Выбор чисел из массива в диапазоне от 105 до 115 для микроконтроллера i8051 программирование микроконтроллера i8051 (i8051) Вычислить среднее арифметическое для массива чисел, расположенного во внутренней памяти Область памяти для переменной и её значения. Это одна и та же область? Куплю Zyxel MSC-1000A (MSC-1000) Управляющий контроллер. Б/У Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
|