Консультация № 187642
26.11.2013, 11:19
92.47 руб.
0 8 0
Здравствуйте! Прошу помощи в следующем вопросе:
имеется программа(в приложении), в этой программе требуется найти sin суммы чисел до 3 знака которые записаны в память, и записать в память

микроконтроллер мк-51 программа где делается uVision и dScope

Приложение:
ORG 0H
AJMP START
ORG 30H
START: MOV P1,#10110000b
MOV 20H,#01h
MOV 21H,#02h
MOV 22H,#03h
MOV R1,#20h ;начальный адрес
SUM: MOV R3,20H
MOV A,R3
ADD A,21H
ADD A,22H
MOV 40H,A
MOVC A,40H

OUTB: MOV A,@R1 ;записали в А упаковонное число
ACALL SEND
JNB P1.7,START ;если 1, то продолжает, если 0 то на начало проги
MOV A,@R1
SWAP A
ACALL SEND
INC R1 ;переход на след адрес
JB P1.7,OUTB ;если 1, то вывод след цифры, если 0, то на начало
AJMP START
SEND: MOV R2,#4 ;счетчик бит в цифре
IN: JB P1.5,IN ;запрос от ВУ
CLR P1.4 ;готов от МК
RLC A
MOV P1.0,C ;вывод бита
SETB P1.4 ;снятие готовности от МК
JNB P1.5,$ ;ожидание снятие запроса от ВУ
DJNZ R2,IN
RET
END




Обсуждение

давно
Посетитель
7438
7205
26.11.2013, 13:22
общий
Какое отношение имеет предложенная программа (с ошибками!) к решаемой задаче?
Она привязана к конкретной отладочной среде. Посему невозможно что-либо сделать без описания, так понимаю dScope.
Ждем описание. Это во-первых.
Во-вторых, не совсем понятно условие "требуется найти sin суммы чисел до 3 знака которые записаны в память"
Какие числа, сколько их, в каком формате? Что значит найти sin? Найти сумму ряда? С точностью до 3 знака после запятой?
Просто интересно, как Вы лично это себе представляете в целочисленной арифметике, еще и на 8-битном процессоре? Это вполне решаемо, но далеко неочевидно. Это не просто сложить два числа :)
А может вообще надо реализовать работу с вещественными числами? Тоже неслабая задача для начинающего программиста...
Кстати, можно сделать вычисление из таблицы, дешево и сердито (главное - быстро)...
Короче, ждем методичку с подробным изложением материала...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
26.11.2013, 17:19
общий
в приложении подкреплено задание, задача сама сделана, задали дополнительный вопрос, рассчитать sin x
под х понимается сумма чисел которые записаны в память: MOV 20H,#01h MOV 21H,#02h MOV 22H,#03h
Прикрепленные файлы:
7635c1b7d6cacb5980c7e5d19c4c0fcd.docx
давно
Посетитель
7438
7205
26.11.2013, 17:43
общий
26.11.2013, 17:45
Методичку вечерком просмотрю...
Но... Что понимается под X, я понял. Я спрашивал, что понимается под Sin x?
Ваш вариант задания - 12?
Т.е. вводим последовательно биты упакованного BCD байта, начиная со старшего.
Байты вводятся, пока P1.7
Байты складываем, и что потом с делаем с суммой? Ищем sin? (Уточняю, тригонометрическую функцию sin(x))?

И если байты вводятся, то зачем складывать числа по адресам 20h,21h,21h ? Непонятно...
Растолкуйте четко, что должна делать программа...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
26.11.2013, 17:55
общий
26.11.2013, 17:59
А-а-а, немного понял... Программа сохраняет принятые числа, начиная с адреса 20h, потом должна их сложить, и что-то там еще сделать... Жду уточнения, что конкретно надо сделать с суммой принятых байт...
Я почему спрашиваю: нахождение функции sin(x) - весьма нетривиальная задача для целочисленных процессоров. Тем более, основная задача - осуществить обмен данными между процессорами. С трудом верится, чтобы надо было добавлять в учебную задачу нечто, которое сложнее основной задачи.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
26.11.2013, 18:43
общий
да, я уже это понял
требуется просто процедура которая найдет синус запишет в память и все, основную можно даже затереть, основное задание сдано
давно
Посетитель
7438
7205
26.11.2013, 18:56
общий
26.11.2013, 18:57
И опять нет ответа на поставленный вопрос...
Что значит, найдет синус?
Считаем полученный байт, как угол в радианах (или градусах)?
Искать, используя разложение в ряд?
Я понял, что сами не знаете, что требуется... :)
Ладно, идея, естественно, есть. Делаем так:
Считаем полученное число углом в радианах и таки считаем ряд.
Вечерком займусь...

Да, раз основное не трогаем, то делаю только вычисление синуса...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
26.11.2013, 19:10
общий
ну увы да, просто сказали найти синус и все, а вот вспомнил еще кое что, что оно должно совпадет с результатом который получается в калькуляторе до 3 знака в windows,
давайте в радианах
Неизвестный
30.11.2013, 13:51
общий
Здравствуйте, хотелось бы узнать как продвигается работа, просто очень срочно требуется
Форма ответа