Помогите с программированием микроконтроллера MC51
Помогите с программированием микроконтроллера MC51
Помогите с задачей:
Составить структурную и принципиальную схему модуля внешней памяти ХSEG объемом 64 кбайт, используя микросхемы RAM объемом 8 кбайт и его подключения к микроконтроллеру семейства МС51.
Написать программу пересылки массива из 10 чисел, размещенных в ХSEG в DSEG на языке Ассемблер.
Если кто может подскажите как схему начертить ато литературы толковой нет.
Поделитесь хотяб литературкой для построения схем и решения этой задачи
Составить структурную и принципиальную схему модуля внешней памяти ХSEG объемом 64 кбайт, используя микросхемы RAM объемом 8 кбайт и его подключения к микроконтроллеру семейства МС51.
Написать программу пересылки массива из 10 чисел, размещенных в ХSEG в DSEG на языке Ассемблер.
Если кто может подскажите как схему начертить ато литературы толковой нет.
Поделитесь хотяб литературкой для построения схем и решения этой задачи
Последний раз редактировалось CCCPTARAN Ср апр 14, 2010 22:48:18, всего редактировалось 2 раза.
- Реклама
Re: Помогите с программированием микроконтроллера MC51
быррр...
может легче книжки достать и почитать?
и зачем из такого мелкого старья (8, 16килобайт), если можно из старой материнки 32 или 64 К*8 высмыкнуть в неограниченном количестве?
книжки:
Бородин В.Б, Шагурин И.И.
Микроконтроллеры. Архитектура, программирование, интерфейс.
М.:ИздательствоЭКОМ,1999.
ну и в инете их ...
может легче книжки достать и почитать?
и зачем из такого мелкого старья (8, 16килобайт), если можно из старой материнки 32 или 64 К*8 высмыкнуть в неограниченном количестве?
книжки:
Бородин В.Б, Шагурин И.И.
Микроконтроллеры. Архитектура, программирование, интерфейс.
М.:ИздательствоЭКОМ,1999.
ну и в инете их ...
Re: Помогите с программированием микроконтроллера MC51
Спс за название книг шяс читаю с програмй получатся начало а вот с построением схем неочень Есть более подробная литература для построения схем и выбоа нужного микроконторлера по моему вопросу?
Re: Помогите с программированием микроконтроллера MC51
посмотри на сайте у atmel ( раздел 8051 Architecture - Other Documents - User Guide )
"atmel 8051 microcontrollers hardware manual" (4216E-8051-01/07)
и прочее, что заинтересует
или книжки от Фрунзе...
"atmel 8051 microcontrollers hardware manual" (4216E-8051-01/07)
и прочее, что заинтересует
или книжки от Фрунзе...
Re: Помогите с программированием микроконтроллера MC51
проверти пожалуста правильно ли у меня схема вышла
- Вложения
-
- Схемы.doc
- Схема которую сделал
- (135.5 КБ) 318 скачиваний
- Реклама
Re: Помогите с программированием микроконтроллера MC51
Если в общем, то да.правильно ли у меня схема вышла
Здесь практически все, что нужно: INTERFACING AN EXTERNAL SRAM TO THE C8051F000
(на рис.1 для Вашего случая должно быть A[15:8], а не A[16:8])
Вместо того ОЗУ, что там,- рисуете свои 8шт + дешифратор.
На чертеже стоит показать явно, что линии A[15:13] подключены к дешифратору.
Так же стоит к дополнительному входу "разрешение" дешифратора подключить сигнал CS от МК.
Покажите подключение сигналов ALE, /WR, /RD.
Думаю, стоит нанести имена сигнальных линий шин и портов/линий ИС.
Последний раз редактировалось Digikey Чт апр 15, 2010 15:23:39, всего редактировалось 1 раз.
Re: Помогите с программированием микроконтроллера MC51
схема верна для ПЗУ (внешняя память программ\таблиц данных)CCCPTARAN писал(а):проверти пожалуста правильно ли у меня схема вышла
для ОЗУсигналы управления wr и rd (внешняя память данных)
возможно также применить режим "совмещения" области памяти программ/данных - объединение линий psen и rd (схема И)
Re: Помогите с программированием микроконтроллера MC51
Схема вроде похожа на правду...
[offtopic] А просто по-человечески две картинки в формате GIF выложить, вместо того, чтобы против естесства запихивать в убогий (и не предназанченный непосредственно для хранения картинок!) Word - не?
Не ставить же человеку M$ office только для того, чтобы посмотреть Ваше вложение? А GIF любой браузер смотреть умеет. [/offtopic]
[offtopic] А просто по-человечески две картинки в формате GIF выложить, вместо того, чтобы против естесства запихивать в убогий (и не предназанченный непосредственно для хранения картинок!) Word - не?
Не ставить же человеку M$ office только для того, чтобы посмотреть Ваше вложение? А GIF любой браузер смотреть умеет. [/offtopic]Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: Помогите с программированием микроконтроллера MC51
тогда уже поставить у себя open offise и конвертировать с его помощью свои схемы и документы в *.pdf - все и всегда смогут просмотретьYS писал(а): [offtopic] А просто по-человечески две картинки в формате GIF выложить, вместо того, чтобы против естесства запихивать в убогий (и не предназанченный непосредственно для хранения картинок!) Word - не?Не ставить же человеку M$ office только для того, чтобы посмотреть Ваше вложение? А GIF любой браузер смотреть умеет. [/offtopic]
Re: Помогите с программированием микроконтроллера MC51
Ну, если так охота выкладывать картинки в текстовых форматах - можно и так. Но в разделе "сотрудничество" пишут:тогда уже поставить у себя open office и конвертировать с его помощью свои схемы и документы в *.pdf
...
Рисунки
Рисунки бывают трех видов:
Схемы и чертежи - их пакуем в формат GIF, PNG или на худой конец - BMP. Причем, если в схеме используется всего 2 цвета, не стоит сохранять рисунок в 24-битном формате. В JPG чертежи не жмут!!! JPG - это формат для фоток.
Кроме того, если вы рисуете схемы в Splan'e или PCAD'e 2000/2001 - можно и нужно присылать их в форматах этих редакторов (.spl и .sch соответственно).
Фотографии - вот их-то как раз можно и нужно жать в JPG. На худой конец - опять же - в BMP.
Формулы, прочий текст - как и схемы - GIF, PNG.
...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: Помогите с программированием микроконтроллера MC51
ну да, чужую *.pdfку подредактировать трудновато 
зато сжатие\качество весьма высоко, да и acrobat есть практически у всех (к примеру оригинальные datasheet содержат и текст и чертежи и фото в одном документе)
зато сжатие\качество весьма высоко, да и acrobat есть практически у всех (к примеру оригинальные datasheet содержат и текст и чертежи и фото в одном документе)
Re: Помогите с программированием микроконтроллера MC51
Прошу побыстрому проверить код программы. Если есть ошибки исправьте пожалуста.
Программа пересылки массива из 10 чисел, размещенных в XSEG в DSEG.
movx dptr,#99h ;запись начального адреса в Xseg
mov r1,#35h ;запись начального адреса в Dseg
mov r0,10 ;установка количества повторов чтения
L1:
mov a,00h
movx a,@a+dptr ;чтение 1 числа по адресу в Xseg
movx @r1,a ;перенос 1 числа из Xseg в Dseg
inc r1 ;увеличение адреса Xseg 1
inc dptr ;увеличение адреса Dseg 1
djnz r0,L1 ; уменьшаем на 1, если не =0, то переход на L1
L2: sjmp L2
org 99h ;установка начального адреса в Xseg
db 01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fh
end
Программа пересылки массива из 10 чисел, размещенных в XSEG в DSEG.
movx dptr,#99h ;запись начального адреса в Xseg
mov r1,#35h ;запись начального адреса в Dseg
mov r0,10 ;установка количества повторов чтения
L1:
mov a,00h
movx a,@a+dptr ;чтение 1 числа по адресу в Xseg
movx @r1,a ;перенос 1 числа из Xseg в Dseg
inc r1 ;увеличение адреса Xseg 1
inc dptr ;увеличение адреса Dseg 1
djnz r0,L1 ; уменьшаем на 1, если не =0, то переход на L1
L2: sjmp L2
org 99h ;установка начального адреса в Xseg
db 01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fh
end
Re: Помогите с программированием микроконтроллера MC51
бред
если внешняя память через DPTR то адрес двухбайтовый
mov dptr,#adr16
далее чтение массива из внешней памяти в РПД ОЗУ с декрементом указателей
перезагрузка dptr адресом назначения и возврат данных из РПД ОЗУ в новое место внешнего ОЗУ
если ВПД с диапазоном адресов до 256 то можно использовать команды
movx a,@r0 movxa,@r1 и movx @r0,a movx @r1,a при этом старший байт адреса фиксировать в порт p1(при отсутствии внешней памяти программ)
с чашечки валерьянки будет:
mov sp,#50h;переустановка указателя стека
mov r0,#30h;указатель рвх
mov r2,#10;счетчик байт массива
mov dptr,#adr_a;адрес начала массива источника в dptr
rdb:
movx a,@dptr;читать текущий байт источника
mov @r0,a;хранить в рвх (не касается ИС с двумя dptr - от 52 и старше)
inc r0;указатель рвх+1
inc dptr;указатель источника +1
djnz r2,rdb;повторять до исчерпания (возможно я просчитался с к-вом байт
)
mov r0,#30h;перезагрузка указателя рвх
mov r2,#10;перезагрузка с-ка байт
mov dptr,#adr_b;указатель на адрес начала массива назначения
wdb:
mov a,@r0;читать рвх
movx @dptr,a;в массив назначения
inc r0;указатель рвх+1
inc dptr;указатель приемника +1
djnz r2,wdb;повторять до исчерпания (возможно я просчитался с к-вом байт
)
примерно так , но возможно и ошибка в количестве циклов
если внешняя память через DPTR то адрес двухбайтовый
mov dptr,#adr16
далее чтение массива из внешней памяти в РПД ОЗУ с декрементом указателей
перезагрузка dptr адресом назначения и возврат данных из РПД ОЗУ в новое место внешнего ОЗУ
если ВПД с диапазоном адресов до 256 то можно использовать команды
movx a,@r0 movxa,@r1 и movx @r0,a movx @r1,a при этом старший байт адреса фиксировать в порт p1(при отсутствии внешней памяти программ)
с чашечки валерьянки будет:
mov sp,#50h;переустановка указателя стека
mov r0,#30h;указатель рвх
mov r2,#10;счетчик байт массива
mov dptr,#adr_a;адрес начала массива источника в dptr
rdb:
movx a,@dptr;читать текущий байт источника
mov @r0,a;хранить в рвх (не касается ИС с двумя dptr - от 52 и старше)
inc r0;указатель рвх+1
inc dptr;указатель источника +1
djnz r2,rdb;повторять до исчерпания (возможно я просчитался с к-вом байт
mov r0,#30h;перезагрузка указателя рвх
mov r2,#10;перезагрузка с-ка байт
mov dptr,#adr_b;указатель на адрес начала массива назначения
wdb:
mov a,@r0;читать рвх
movx @dptr,a;в массив назначения
inc r0;указатель рвх+1
inc dptr;указатель приемника +1
djnz r2,wdb;повторять до исчерпания (возможно я просчитался с к-вом байт
примерно так , но возможно и ошибка в количестве циклов
Re: Помогите с программированием микроконтроллера MC51
mov dptr,#99h ;запись начального адреса в Xseg
mov r1,#35h ;запись начального адреса в Dseg
mov r0,10 ;установка количества повторов чтения
L1:
movx a,@dptr ;чтение 1 числа по адресу в Xseg
mov @r1,a ;перенос 1 числа из Xseg в Dseg
inc r1 ;увеличение адреса Xseg 1
inc dptr ;увеличение адреса Dseg 1
djnz r0,L1 ; уменьшаем на 1, если не =0, то переход на L1
L2: sjmp L2
это лишнее с XSEG так не прокатит
--------------------
org 99h ;установка начального адреса в Xseg
db 01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fh
-------------------------------
Судя по ТЗ не было задачи гонять данные туда-обратно. Только туда.
"Написать программу пересылки массива из 10 чисел, размещенных в ХSEG в DSEG на языке Ассемблер."
Где то так. О стеке можете не заботиться. Он у вас не используется.
mov r1,#35h ;запись начального адреса в Dseg
mov r0,10 ;установка количества повторов чтения
L1:
movx a,@dptr ;чтение 1 числа по адресу в Xseg
mov @r1,a ;перенос 1 числа из Xseg в Dseg
inc r1 ;увеличение адреса Xseg 1
inc dptr ;увеличение адреса Dseg 1
djnz r0,L1 ; уменьшаем на 1, если не =0, то переход на L1
L2: sjmp L2
это лишнее с XSEG так не прокатит
--------------------
org 99h ;установка начального адреса в Xseg
db 01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fh
-------------------------------
Судя по ТЗ не было задачи гонять данные туда-обратно. Только туда.
"Написать программу пересылки массива из 10 чисел, размещенных в ХSEG в DSEG на языке Ассемблер."
Где то так. О стеке можете не заботиться. Он у вас не используется.
Re: Помогите с программированием микроконтроллера MC51
mov dptr,#99h ??? 
Re: Помогите с программированием микроконтроллера MC51
Именно. А в чем проблема? В чашечке валерьянки ?BOB51 писал(а):mov dptr,#99h ???
Или в 16 битовый регистр нельзя до байта положить?
И не морочите человеку голову.
Re: Помогите с программированием микроконтроллера MC51
можно и один байт - как на это посмотрит конкретная программа обработки
если там заложено по умолчанию дополнять подобную запись старшим байтом равным 00 - то пройдет, иначе ждите сообщение о некорректной команде
а для однобайтовых величин почему-то "недогадливые" ребята от INTEL "совсем зря" заложили команды mov dpl,#data и mov dph,3data
с чего бы это, если можно , по Вашему мнению , для этих целей 16- разрядную(двухбайтовую) команду использовать?
причем начальное состояние регистров dpl и dph считается "неопределенным"
кстати, mov dptr,#adr16 единственная 16-разрядная непосредственная загрузка в регистровую пару
если там заложено по умолчанию дополнять подобную запись старшим байтом равным 00 - то пройдет, иначе ждите сообщение о некорректной команде
а для однобайтовых величин почему-то "недогадливые" ребята от INTEL "совсем зря" заложили команды mov dpl,#data и mov dph,3data
с чего бы это, если можно , по Вашему мнению , для этих целей 16- разрядную(двухбайтовую) команду использовать?
причем начальное состояние регистров dpl и dph считается "неопределенным"
кстати, mov dptr,#adr16 единственная 16-разрядная непосредственная загрузка в регистровую пару
Re: Помогите с программированием микроконтроллера MC51
Назовите мне хоть один компилятор с ассемблера 51х, который бы ругался на mov dptr,#99h вместо того чтобы просто дополнить старший байт 00h.BOB51 писал(а):можно и один байт - как на это посмотрит конкретная программа обработки
если там заложено по умолчанию дополнять подобную запись старшим байтом равным 00 - то пройдет, иначе ждите сообщение о некорректной команде![]()
а для однобайтовых величин почему-то "недогадливые" ребята от INTEL "совсем зря" заложили команды mov dpl,#data и mov dph,3data
с чего бы это, если можно , по Вашему мнению , для этих целей 16- разрядную(двухбайтовую) команду использовать?
причем начальное состояние регистров dpl и dph считается "неопределенным"
кстати, mov dptr,#adr16 единственная 16-разрядная непосредственная загрузка в регистровую пару
А "недогадливые ребята" заложили команды mov dpl-dph для того, что бы не разрушать содержимое хранящиеся в старшем или младшем байте dptr.
Re: Помогите с программированием микроконтроллера MC51
"Назовите мне хоть один компилятор с ассемблера 51х, который бы ругался на mov dptr,#99h вместо того чтобы просто дополнить старший байт 00h."
система команд Intel mcs51 с картой команд и самостоятельным ручным кодированием - занудно но никаких дополнительных материальных и аппаратных затрат не требует
правда мозги нужны... собственные... а это дефицит по умолчанию
система команд Intel mcs51 с картой команд и самостоятельным ручным кодированием - занудно но никаких дополнительных материальных и аппаратных затрат не требует
правда мозги нужны... собственные... а это дефицит по умолчанию


