Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

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

Чт ноя 24, 2011 14:42:45

Повторю: поясни назначение вот этих двух строчек:
Код:
   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 KiB) Скачиваний: 598

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

Чт ноя 24, 2011 14:46:22

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

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

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

Нужно между строками с условным переходом и M3 как раз сохранять число в регистре B.
Последний раз редактировалось Engineer_Keen Чт ноя 24, 2011 14:48:23, всего редактировалось 1 раз.

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

Чт ноя 24, 2011 14:46:40

alyarma писал(а):Там должен быть не инкремент,а декремент.
Дело не в декременте или инкременте, а в том, что ты после проверки условия прыгаешь в одно и то-же место..

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

Чт ноя 24, 2011 14:52:03

alyarma, скачай нормальный виндовый симулятор, чё ты с DOS-овским мучаешся: http://www.dontronics.com/zip/sim51.zip

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

Чт ноя 24, 2011 14:57:04

Теперь понял.Исправил как вы и предложили,но опять ошибка :)
Код:
     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 KiB) Скачиваний: 588

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

Чт ноя 24, 2011 15:06:15

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

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

P.P.S.
alyarma писал(а):А чем мой плох?
Дело не в "плохости", а в удобности.. Мя их в своё время много перепробовал и для 51-х-классик остановился на этом..

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

Чт ноя 24, 2011 15:11:46

МитяРа писал(а):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 KiB) Скачиваний: 480

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

Чт ноя 24, 2011 15:15:02

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

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

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

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

Чт ноя 24, 2011 15:17:40

alyarma писал(а):Теперь так:
Вроде походу будет работать..

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

Чт ноя 24, 2011 15:25:51

Про зацикливание в конце совсем забыл.
Теперь в порт записывается число,но почему-то не минимальное в массиве.А точнее число,которого вообще в массиве нету :(
Код:
        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 KiB) Скачиваний: 585
Последний раз редактировалось alyarma Чт ноя 24, 2011 15:36:35, всего редактировалось 1 раз.

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

Чт ноя 24, 2011 15:36:27

Вместо mov b,a, напиши mov b,@r0

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

Чт ноя 24, 2011 15:37:16

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

Уже сам догадался :)
Ещё раз всем спасибо :)

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

Чт ноя 24, 2011 15:39:03

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

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

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

Чт ноя 24, 2011 15:40:30

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

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

Учту :) Правда врятли ещё что-то по ассемблеру буду делать,ибо это была последняя индивидка :)
Хотя всякое в жизни бывает :)

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

Чт ноя 24, 2011 16:07:01

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

Удачи.. :tea:

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

Чт ноя 24, 2011 17:09:28

Извините за офтоп, не могу удержаться.
С нескрываемым интересом следил за перипетиями матча. Испытал массу впечатлений. Спасибо участникам. Многим есть чему поучиться.
МитяРа, +7 пунктов. :)

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

Чт ноя 24, 2011 17:16:31

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

P.S. Приветствую, кстати.. :beer:

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

Чт ноя 24, 2011 18:09:54

пока мудрил, похоже тема вперед ушла...
ну и мой "ляп" приложу...(атмелевский c51asm+fd51rus)
вариации на тему "пузырьков" ("а минимальное значение вывести на светодиоды порта вывода Р1.") - набросок прицепил в виде листинга для меньшей заморочки - код совершенно неоптимален :cry: но вроде работает... :facepalm:
Вложения
bubl.pdf
(47.15 KiB) Скачиваний: 639

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

Чт ноя 24, 2011 18:17:53

BOB51 писал(а):ну и мой "ляп" приложу.
Это ещё почему - ляп, всё по правильному сделано и в одном цикле..
Ты пушистый, профессионализм свой - не принижай.. :beer:

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

Пт ноя 25, 2011 07:38:27

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