Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
alyarma
Родился
Сообщения: 12
Зарегистрирован: Вт ноя 15, 2011 21:05:56

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение alyarma »

Повторю: поясни назначение вот этих двух строчек:

Код: Выделить всё

   JC M3
M3:   INC R0

Там должен быть не инкремент,а декремент.Я ошибся.Если имеется перенос, то программа прыгает на метку М3,а затем осуществляется декремент (для того,чтобы перейти на ячейку с номером на 1 меньше)

Код: Выделить всё

     ORG 0
   MOV R0,#2FH   
   MOV R1,#30H
   MOV R3,#10H
   MOV B,#0FFH
M1:    MOV A,@R0
   MOV @R1,A
   DEC R0
   INC R1
   DJNZ R3,M1
   MOV R3,#10H
   MOV R0,#2FH
M2:   MOV A,B
   SUBB A,@R0
   JC M3
M3:   DEC R0
   DJNZ R3,M2
   MOV P1,B
   END   

Ошибка:
Вложения
333.JPG
(95.7 КБ) 637 скачиваний
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение Engineer_Keen »

Да, уменьшение R3 проглядел... :oops: Сказывается привыкание с системе команд AVR, в которой сея полезная инструкция отсутствует (но успешно заменяется макросом с аналогичным названием :))) )

alyarma писал(а):Если имеется перенос, то программа прыгает на метку М3
А если переноса нет, куда попадем после JC?

Подсказываю: туда же :)

Нужно между строками с условным переходом и M3 как раз сохранять число в регистре B.
Последний раз редактировалось Engineer_Keen Чт ноя 24, 2011 14:48:23, всего редактировалось 1 раз.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение МитяРа »

alyarma писал(а):Там должен быть не инкремент,а декремент.
Дело не в декременте или инкременте, а в том, что ты после проверки условия прыгаешь в одно и то-же место..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение МитяРа »

alyarma, скачай нормальный виндовый симулятор, чё ты с DOS-овским мучаешся: http://www.dontronics.com/zip/sim51.zip
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
alyarma
Родился
Сообщения: 12
Зарегистрирован: Вт ноя 15, 2011 21:05:56

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение alyarma »

Теперь понял.Исправил как вы и предложили,но опять ошибка :)

Код: Выделить всё

     ORG 0
   MOV R0,#2FH   
   MOV R1,#30H
   MOV R3,#10H
   MOV B,#0FFH
M1:    MOV A,@R0
   MOV @R1,A
   DEC R0
   INC R1
   DJNZ R3,M1
   MOV R3,#10H
   MOV R0,#2FH
M2:   MOV A,B
   SUBB A,@R0
   MOV B,A
M3:   DEC R0
   DJNZ R3,M2
   MOV P1,B
   END   

Мне препод в универе дал ассемблер,вот я им и пользуюсь :) А чем мой плох?
P.S.:Хм,а ведь переход нужен будет,если числа в массиве будут не по порядку идти.Но тогда нужно будет ещё 1 метку делать...
Вложения
444.JPG
(94.42 КБ) 623 скачивания
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение МитяРа »

alyarma писал(а):а ведь переход нужен будет,если числа в массиве будут не по порядку идти.
Порядок чисел тут не при чём..
Ты в начале загоняешь в B максимальное число, а потом с ним сравниваешь по порядку все числа из массива..
Если число из массива меньше числа в B, то копируем это число в B, если нет - проверяем дальше..

P.S. А куда ты инструкцию перехода JC выкинул?

P.P.S.
alyarma писал(а):А чем мой плох?
Дело не в "плохости", а в удобности.. Мя их в своё время много перепробовал и для 51-х-классик остановился на этом..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
alyarma
Родился
Сообщения: 12
Зарегистрирован: Вт ноя 15, 2011 21:05:56

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение alyarma »

МитяРа писал(а):P.S. А куда ты инструкцию перехода JC выкинул?

Да много идей уже в голову пришло,правда не удачных идей,вот и выкинул :)
Теперь так:

Код: Выделить всё

     ORG 0
   MOV R0,#2FH   
   MOV R1,#30H
   MOV R3,#10H
   MOV B,#0FFH
M1:    MOV A,@R0
   MOV @R1,A
   DEC R0
   INC R1
   DJNZ R3,M1
   MOV R3,#10H
   MOV R0,#2FH
M2:   MOV A,B
   SUBB A,@R0
   JC M3
   MOV B,A
M3:   DEC R0
   DJNZ R3,M2
   MOV P1,B
   END   
Вложения
555.JPG
(91.97 КБ) 515 скачиваний
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение Engineer_Keen »

alyarma писал(а):Мне препод в универе дал ассемблер,вот я им и пользуюсь :) А чем мой плох?

Наверняка он менее удобный.

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

Код: Выделить всё

LOOP: JMP LOOP
тогда ошибки не будет, потому что дальше цикла контроллер не попадет.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение МитяРа »

alyarma писал(а):Теперь так:
Вроде походу будет работать..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
alyarma
Родился
Сообщения: 12
Зарегистрирован: Вт ноя 15, 2011 21:05:56

Re: Задачка по мк51.Требуется помощ магистров!

Сообщение alyarma »

Про зацикливание в конце совсем забыл.
Теперь в порт записывается число,но почему-то не минимальное в массиве.А точнее число,которого вообще в массиве нету :(

Код: Выделить всё

        ORG 0
   MOV R0,#2FH   
   MOV R1,#30H
   MOV R3,#10H
   MOV B,#0FFH
M1:    MOV A,@R0
   MOV @R1,A
   DEC R0
   INC R1
   DJNZ R3,M1
   MOV R3,#10H
   MOV R0,#2FH
M2:   MOV A,B
   SUBB A,@R0
   JC M3
   MOV B,A
M3:   DEC R0
   DJNZ R3,M2
   MOV P1,B
   JMP $
   END   
   


Код: Выделить всё

     SUBB A,@R0
   JC M3
   MOV B,A

А вот в этой части после вычитания в B записывается ведь результат вычитания?Если да,то,по-ходу,в этом ошибка...

Попробывал,действительно,в B записывался результат вычитания,а не число из массива :) Всё заработало,всем большое спасибо :)
Вложения
555.JPG
(91.97 КБ) 619 скачиваний
Последний раз редактировалось alyarma Чт ноя 24, 2011 15:36:35, всего редактировалось 1 раз.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение МитяРа »

Вместо mov b,a, напиши mov b,@r0
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
alyarma
Родился
Сообщения: 12
Зарегистрирован: Вт ноя 15, 2011 21:05:56

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение alyarma »

МитяРа писал(а):Вместо mov a,b, напиши mov b,@r0

Уже сам догадался :)
Ещё раз всем спасибо :)
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение МитяРа »

alyarma писал(а):Ещё раз всем спасибо
Угу..

Теперь можешь гордится, у тя на коте есть "прикреплённая" тема про МК51..
И щоб вопросы по этому семейству только в ней задавать.. :)))
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
alyarma
Родился
Сообщения: 12
Зарегистрирован: Вт ноя 15, 2011 21:05:56

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение alyarma »

МитяРа писал(а):
alyarma писал(а):Ещё раз всем спасибо
Угу..

Теперь можешь гордится, у тя на коте есть "прикреплённая" тема про МК51..
И щоб вопросы по этому семейству только в ней задавать.. :)))

Учту :) Правда врятли ещё что-то по ассемблеру буду делать,ибо это была последняя индивидка :)
Хотя всякое в жизни бывает :)
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение МитяРа »

alyarma писал(а):Хотя всякое в жизни бывает
И не только у тя..

Удачи.. :tea:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение pyzhman »

Извините за офтоп, не могу удержаться.
С нескрываемым интересом следил за перипетиями матча. Испытал массу впечатлений. Спасибо участникам. Многим есть чему поучиться.
МитяРа, +7 пунктов. :)
Docendo discimus
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение МитяРа »

pyzh_man писал(а): +7 пунктов.
Какие-такие пункты? Опять на мя досье строчишь? А старое - опять потерял? :)))

P.S. Приветствую, кстати.. :beer:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

пока мудрил, похоже тема вперед ушла...
ну и мой "ляп" приложу...(атмелевский c51asm+fd51rus)
вариации на тему "пузырьков" ("а минимальное значение вывести на светодиоды порта вывода Р1.") - набросок прицепил в виде листинга для меньшей заморочки - код совершенно неоптимален :cry: но вроде работает... :facepalm:
Вложения
bubl.pdf
(47.15 КБ) 805 скачиваний
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение МитяРа »

BOB51 писал(а):ну и мой "ляп" приложу.
Это ещё почему - ляп, всё по правильному сделано и в одном цикле..
Ты пушистый, профессионализм свой - не принижай.. :beer:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

а потому ляп, что не все проблемные точки проверены - "скороспелка" получилась
взять хотя-бы отсутствие очистки CY перед операцией subb a,...... 8)
да и для всплытия "наименьшего из" достаточно одного прохода, а не 16 (для полной сортировки) :sleep:
Ответить

Вернуться в «Разные вопросы по МК»