erbi

Сортировка элементов массива

81 сообщение в этой теме

erbi    0

Всем привет. Помогите написать программы для микроконтроллера МК8051. Дали курсовик делать, а объяснять преподавтель ничего не хочет. Программирование до этого никто не читал, поэтому не владею ничем. Помогите кто сможет очень надо:

Задания.

1.Произвести сортировк элементов массива 1, по возрастанию. 2. убыванию. Массив расположен 1, во внешней 2, во внутренней памяти. Число элементов массива равно 7.

Помогите, курсовк надо сдавать, а как делать не знаю. В ассемблере вообще ничего не знаю. Программы требует писать для i8051, другие микроконтроллеры не хочет принимать. Програму пишшут на МК51WIN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Lexi    1
Всем привет. Помогите написать программы для микроконтроллера МК8051. Дали курсовик делать, а объяснять преподавтель ничего не хочет. Программирование до этого никто не читал, поэтому не владею ничем. Помогите кто сможет очень надо:

Задания.

1.Произвести сортировк элементов массива 1, по возрастанию. 2. убыванию. Массив расположен 1, во внешней 2, во внутренней памяти. Число элементов массива равно 7.

Помогите, курсовк надо сдавать, а как делать не знаю. В ассемблере вообще ничего не знаю. Программы требует писать для i8051, другие микроконтроллеры не хочет принимать. Програму пишшут на МК51WIN

А ты попробуй FSI (провью32), сдесь и Си поддерживается. А дальше все проще пареной репы

Удачи!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
erbi    0

Извиняюсь, я вообще в программировании ноль. Ни разу не программировал. Поэтому не знаю, что такое FSI и как этим пользоватся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zer    524

Вопрос языка. Если в asm'е и не в очень короткие сроки, то помогу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
erbi    0

Спасибо. Программы пишутся на ассемлере. Сайт преподаватель сказал, где прогрмму брать

http://www.vt.fvms.mirea.ru/ там есть учебные материалы по МК51. А как с ней рабоатть я не знаю. Если не трудно саму программу написать не вней, а в блокноте, я ее потом в саму программу перекину.

Заранее благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IGRISE    0

А может тебе лучше у другово преподавателя курсовую делать... Может там для тебя по легче задания будут...

Изменено пользователем IGRISE

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
erbi    0

Спасибо. Я бы сделал, только преподавателя другого нет. Он один на кафедре читает Микропроцессорные системы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
aahardsoft    0

пиво нада пить меньше а на пары ходить чаще,тогда и понятно всё будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Speccy    1
Помогите, курсовк надо сдавать, а как делать не знаю. В ассемблере вообще ничего не знаю. Программы требует писать для i8051, другие микроконтроллеры не хочет принимать. Програму пишшут на МК51WIN

Огромный нереспект преподу.

А тебе вот что скажу: учиться надо не в том ключе что препод ДОЛЖЕН обяснить а тебе помогут с "конечным результатом", а учиться надо искать информацию в нужном месте, и заниматься самообучением.

Чтоб понять чё я те тут понаписал, всё равно придется в книжку смотреть, или напрягай еще кого-нибудь, раз таким образом учишся.

Верхнее образование однозначно портится в эрэфии...

bubble_1.txt

Происходит в этой программе сортировка пузырьковым методом. В зависимости от заданных пользователем начальных данных выполняется одна из 4 подпрограмм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
erbi    0

Спасибо. Большое спасибо. Учусь я довольно хорошо уже на 5 курсе имею за все 5 лет одну тройку. А программироать не умею, потому что до этого не было пердмета по программирвагию. А специальность у меня вообще не имеет к программмированию ничего общего. Я спрашивал первый раз. С программирование вообще не сталикался. Преподавтель вообще литературу не дал. Дал только свою методичку, но она так хорошо написана, что понять в ней ничего не возможно. А в библиотеке как назло катало закрыли. Я уже пытался взять книги, но в институтской билитоеке ремон начался. А ездить куда то нет времени, так как учусь на вечернем. И работаю.

Еще раз спасибо. Постараюсь разобратся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Speccy    1
Еще раз спасибо. Постараюсь разобратся.

Аааа.... Тогда извиняюсь.

Вот описание:

Метод пузырька подразумевает обработку данных в несколько проходов, с перестановкой соседних элементов если один больше (меньше) другого. В результате одного прохода наибольшее (наименьшее) значение "всплывает" наверх. С каждым новым проходом кол-во обрабатываемых элементов уменьшается на один, потому что тот элемент который "всплыл" на свое место, больше не нуждается в проверке.

При кол-ве элементов = N, кол-во проходов будет N-1. Общее кол-во проверок (шагов) за все проходы будет в твоем случае равно = 6+5+4+3+2+1 = 21. Ну это так к слову.

По программе:bubble_1.txt

Читай комментарии, я написал. Плюс читай описание команд, ну из книжки или из инета. В поисковике набери "описание команд MCS-51".

Контрольный пример, по возрастанию (больший адрес - большее число):

-----------------------------------------------------------------------------------

! адрес ! было ! 1проход!2проход!3проход!4проход!5роход!6проход!

! 30 ! FF ! 80 ! 10 ! 00 !

! 31 ! 80 ! 10 ! 00 ! 10 !

! 32 ! 10 ! 00 ! 28 ! 28 !

! 33 ! 00 ! 28 ! 6С ! 6С ! Результат не меняется

! 34 ! 28 ! 6С ! 7F ! 7F !

! 35 ! 6C ! 7F ! 80 ! 80 !

! 36 ! 7F ! FF ! FF ! FF !

-----------------------------------------------------------------------------------

Контрольный пример, по убыванию (больший адрес - меньшее число):

-----------------------------------------------------------------------------------

! адрес ! было ! 1проход!2проход!3проход!4проход!5роход!6проход!

! 30 ! FF ! FF ! FF ! FF ! FF !

! 31 ! 80 ! 80 ! 80 ! 80 ! 80 !

! 32 ! 10 ! 10 ! 28 ! 6C ! 7F !

! 33 ! 00 ! 28 ! 6С ! 7F ! 6C ! Результат не меняется

! 34 ! 28 ! 6C ! 7F ! 28 ! 28 !

! 35 ! 6C ! 7F ! 10 ! 10 ! 10 !

! 36 ! 7F ! 00 ! 00 ! 00 ! 00 !

------------------------------------------------------------------------------------

Изменено пользователем Speccy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
erbi    0

Спасибо. Огромное мпасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
CEPBEP    0

Люди добрые... я сам не местный... Помогитенаписать программу для микроконтроллера МК8051. Помогите кто сможет очень надо:

Задания.

1.С клавиатуры ПК подать одну из двух команддля микроконтроллера. Первая команда должна обеспечиватьвывод на ЖКИ показания АЦП, вторрая - вывод на ЖКИ текущее время с предварительно выделенным словом TIME.

Программы требует писать для i8051, другие микроконтроллеры не хочет принимать.

Препод зараза лекции ведет и при этом спит стоя... методичка, которую он написал мне может быть полезна только при большой нужде :(( весь в растерянности. помоему он сам не знает что толком хочет, потому что на вопросы ответить не может :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
CEPBEP    0

.........Халява приди!

На! stud_2.txt

Огромное спасибо!

Был бы ты бабой красивой я б тя как миимум расцаловал.

А так - с уважением жму руку!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
coerbi    0

Здравствуйте

Извините, я наверно всех уже тут достал, но мне просто не к кому больше обратится. Я уже писал здесь тему, но мне не ответили. У меня тоже вопрос по программированию на МК51, я этой темы не видел поэтому сосздал новую. Дали лабораторную делать а преподаватель вообще ушел из класса, Лекции вообще не было, преподаватель вообще на лекции не ходит, а программирование до этого вообще не было. На лабораторные пришел какойто преподаватель и сказал чтобы мы к следующему разу написали вот эту программу, а как это сделать я не знаю. Преподавател только сказал, что ЖКИ HD 44780.

Задания.

1. Записать в память ЖКИ 10 показаний АЦП и вывести их последовательно с темпом 0,5 с на экран ЖКИ.

Программы требует писать для i8051, другие микроконтроллеры не хочет принимать.

Еще раз извините, что прошу помочь.

Спасибо всем, кто поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Speccy    1
Еще раз извините, что прошу помочь.

Спасибо всем, кто поможет.

....я балдею. Вы в верхнем учебном заведении учитесь или где?

Взяли, написали всей группой заяву в деканат. Так, мол, и так. Препод нас не устраивает по таким то причинам. Просим заменить или принять меры.

С уваженьем. Дата, подпись. Отвечайте нам, а то..... Если вы не отзоветесь. Мы напишем в спортлото!

Вот. Если это как то поможет.

stud_3.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexi    1

Speccy, доброго времени суток!!!

Какое можно использовать ПО для AT89S51. Пишу только на Си++. Желательно, чтобы компилятор поддерживал и програмирование. Процы конечно древние, но и задачу перед ними не сложную ставлю.

Как выложить что-либо на форум???

Что-то я найти не могу как!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
coerbi    0

Большое спасибо. А насчет заявления в деканат, уже было нам преподавтель по другому прдмету дал свою кандидатскую переводить с английского на русский. Мы пожаловались, а декан вмсето того чтобы поддержать нас поддержал преподавтеля. Мы потом ели сдали этот экзамен.

Еще раз спасибо. Большое спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Speccy    1
Какое можно использовать ПО для AT89S51. Пишу только на Си++. Желательно, чтобы компилятор поддерживал и програмирование. Процы конечно древние, но и задачу перед ними не сложную ставлю.

Как выложить что-либо на форум???

Что-то я найти не могу как!!!

Если пишешь только на С++, то даже не знаю какое ПО. Имхо, для семейства MCS-51, кроме как в машинных кодах, писать как-то неприлично.

Я только на ассемблере пишу.

Пользуюсь программами типа Single-Chip Machine 2, или MCStudio. В них удобный текстовый редактор для ввода мнемоник, есть даже компилятор, эмулятор, отладчик. Однако в вышеуказанных прогах эмуляция происходит с серьезными ошибками и недочетами. Поэтому можно использовать только для компиляции. Поддержки программатора в них нет. На сайте атмела наверняка есть ПО для перепрограммирования и схема программатора.

Ядро конечно древнее. Но архитектура получилась настолько удачной, что на этом ядре продолжают клепать МК с дополнительной периферией и в наши дни. www.silabs.com посмотри для примера.

Касаемо AT89S51: можно смело перед ним ставить задачу архиважную и архисложную, так как глюков и аномалий в этой штуковине на 99,9% нет, а наработок различного плана - дохренища.

На форуме к сообщению можно прикрепить файлы. Когда пишешь ответ то справа внизу есть кнопки "обзор" и "загрузить".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
coerbi    0

Здравствуйте, извиняюсь что я еще раз обращаюсь, у меня один вопрос. В задаче которую Вы мне написали про запись в память ЖКИ 10 показаний АЦП и выводом их последовательно с темпом 0,5 с на экран ЖКИ, там оказывается нужно, я просто не знал до этого, а преподаватель дал плату демонстрационную и там в заданиие написано что при инициализации ЖКИ запись производится в регистр команд по адресу 7FC0H, а чтение из регистра команд - по адресу 7FC1H, а вот где поменять адрес я что то не допонял. Еще раз извиняюсь за глупый вопрос.

Преподаватель так же дал еще одно задание.

1. Вывести на экран свою фамилию, имя и отчество (пример, Иванов Иван Иванович). Причем в этом задании требуется выводить ФИО отдельно на каждой строке. На первой строке Фамилия, на второй строке Имя, на третий строке Отчетство.

Причем при инициализации ЖКИ - модуля команды должны записыватся в регистр команд микроконтроллера HD44780. На данной отладочной плате запись в регистр команд должна производится по адресу 7FC0H, чтение из регитсра команд - по адресу 7FC1H.

Заранее благодарен. Еще раз извиняюсь, что достаю Вас.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Speccy    1
...там оказывается нужно, я просто не знал до этого, а преподаватель дал плату демонстрационную и там в заданиие написано что при инициализации ЖКИ запись производится в регистр команд по адресу 7FC0H, а чтение из регистра команд - по адресу 7FC1H, а вот где поменять адрес я что то не допонял. Еще раз извиняюсь за глупый вопрос.

Обратите внимание, написано было в самом начале "УЧЕБНАЯ ПРОГРАММА"!!!

Вам преподаватель предлагает откомпилировать ваши задания и загрузить их в реальную макетную плату с ЖКИ? Он у вас шутник!

1. Всё равно вы не до конца разузнали адреса. Скорее всего есть еще адрес регистра данных ЖКИ. Либо вы не правильно переписали задание.

2. В самом начале исходного текста, там где написано ";константы:", есть числа. Control - регистр команд, Data - регистр данных. Ну раз у вашего преподавателя по другому, то давай я чуток переделаю.

stud_4.txt

Преподаватель так же дал еще одно задание.

Прозорливый у вас преподаватель :)

Это он вкурил, что ты не самостоятельно прогу писал, и навешал еще.

А потом еще навешает.

Вывести на экран свою фамилию, имя и отчество (пример, Иванов Иван Иванович). Причем в этом задании требуется выводить ФИО отдельно на каждой строке. На первой строке Фамилия, на второй строке Имя, на третий строке Отчетство.

Причем при инициализации ЖКИ - модуля команды должны записыватся в регистр команд микроконтроллера HD44780. На данной отладочной плате запись в регистр команд должна производится по адресу 7FC0H, чтение из регитсра команд - по адресу 7FC1H.

Заранее благодарен. Еще раз извиняюсь, что достаю Вас.

Не извиняйся. Не поможет.

Должно быть что-то типа такого:stud_5.txt

Точнее не знаю.

ИМХО это бред, делать такие задания для макетной платы. Должны быть проще задания, либо препод должен теоретические знания студентов проверять, но уж никак не работоспособность кода. Максимум - в эмуляторе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
coerbi    0

Большое спасибо. А насчет платы я и сам незнал. Он сказал про нее только сейчас, сказал что сначало надо написать программы, а потом он плату даст вот поэтому я и не знал.

Большое спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
coerbi    0

Извините, что еще раз обращаюсь, вот была лабораторная работа, и мы выводили свою ФИО на экран ЖКИ, спасибо Вам что написали программу, У нас все получилось, только преподаватель еще дал, сказал чтобы мы вывели ФИО, только с подпрограмммой SEND_STRING, я поискал в интернете, но что это за подпрогрмма я так и не нашел. В его методичке про это вообще ничего не сказано, там он выводит по буквенно. Причем после каждой буквы пишет метку на подпрограмму SYMB:

SYMB: mov DPTR, #7FC2H

movx @DPTR, A

call Delay_15ms

ret

Эта подпрограмам называется вывод на экран ЖКИ принятого в аккумулятор МК символа. Скажите, а вот в программе по вывода значений АЦП эта подпрогрмаам не нужна.

И если ВАм не трудно можете написать подпрогрмаму инициализации УАПП, с частоотй 9600 Гц, режим работы 1 с., определяемая таймером счетчиком 1.

Он на усложнил задачу, сказал чтобы мы вывели теперь ФИО не только на экран ЖКИ, но и на экран монитора. Плата подключается через COM порт. Он требет, чтобы эта программа была написано через подпрограмму SEND_STRING, только не на 3 строках а на одной через пробел , или на двух. На первой строке Фамилия на второй Имя.

Сама плата, которая является демонстрационной наз. EB-552

У нее адрес регистра команд для записи 7FC0H

Код команды выбора интерфейса 38h

Инкремент счетчика адресов 06h

Очистка экрана 01hВключение экрана 0ch

Адрес регистра данных для записи 7FC2h.

Извините, можете еще поправить программу для этой платы которую Вы писали CEPBEP, просто у меня очень похожая программа.

Я к преподавателю с вопросами начал пристовать, он так и не смог мне на них ответить. Насчет подпрограммы SEND_STRING

Можете еще поправить программу вывода на экран ЖКИ ФИО. Я написал ее, но не уверен, что правильно.

NAME LAB_DEMO

USING 0 ;Использование банк регистров 0

Jmp Start ; Начало программы

ORG 03h

LJmp Ext0Srv ; Адрес обработчика прерываний EXIT INT 0

ORG 0BH ; Адрес обработчика TIMER INT 0

LJmp Time0Srv ;

ORG 13H ; Адрес обработчика EXT INT 1

LJmp Ext1Srv ;

ORG 1BH ; Адрес обработчика TIMER INT 1

LJmp Time1Srv ;

ORG 23H ; Адрес обработки прерываний от

LJmp RiTiSrv ; последовательного порта

; --- Конец заголовка----

;---------- Здесь вводите код программы----------

ORG 8000H

adr_for_write equ 7FC0H

lcd_interface equ 00111000B

mov_screen_right equ 00000110B

lcd_clr equ 01H

lcd_on equ 0Eh

Start:

call init_LCD

MOV DPTR,#MES_1

CALL S_STRING

Loop: sjmp Loop

init_LCD: mov DPTR,#adr_for_write

mov a,#lcd_interface

movx @dptr,a

call delay5ms

mov a,#mov_screen_right

movx @dptr,a

call delay5ms

mov a,#lcd_on

movx @dptr,a

call delay5ms

mov a,#lcd_clr

movx @dptr,a

call delay5ms

ret

S_STRING: push ACC

push B

CLR A

MOV B,A

AGAIN: MOV A,B

INC B

MOVC A,@A+DPTR

JZ FINISH

CALL SYMB

JMP AGAIN

FINISH: pop B

pop ACC

RET

SYMB: PUSH DPL

PUSH DPH

MOV DPTR,#7FC2H

MOVX @DPTR,A

CALL DELAY15MS

POP DPH

POP DPL

RET

delay5ms: call delay1ms

call delay1ms

call delay1ms

call delay1ms

call delay1ms

ret

delay1ms: mov r1,#90

l1: mov r2,#4

l2: djnz r2,l2

djnz r1,l1

ret

delay15ms:call delay5ms

call delay5ms

call delay5ms

ret

MES_1: DB ' Ivanov Ivan ' 0

; Обработка прерываний

Ext1Srv: RETI

Time0Srv: RETI

Time1Srv: RETI

RiTiSrv: RETI

Ext0Srv: RETI

RetIE0: RETI

END

Заранее благодарен. Еще раз спасибо, что Вы мне помогли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexi    1

У вас препод не в себе что ли?

А вы кто по специальности??

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас