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

Помогите сориентироваться с чего начать решение вопроса. Или возможно есть уже похожие написанные программы. 

Нужно для микроконтроллера семейства MCS-51 составить программу, которая выполняет логическую операцию "И" над числами 5416 и 8716.

Указанные числа необходимо предварительно записать в регистр R6 и R7 нулевого банка регистров, а результат операции разместить в регистр R7 второго банка регистров.

Составить двоичный и шестнадцатеричный код каждой команды.

Изменено пользователем Elite_Knight
ошибка

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


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

https://www.mikroe.com/mikroc/#8051

Я сам пока изучаю Си и на компьютер уже написал несколько программ. 

Мне кажется что для мк программа выглядеть будет так.

#include <8051.h>

int main (void){
    register int r6=0x54, r7=0x87;
    r7 &= r6 ;
return (0);    
}

А микро си уже покажет коды и в ассемблере и машинных кодах.

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

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


Ссылка на сообщение
Поделиться на других сайтах
o_l_e_g    1 642
28 минут назад, Elite_Knight сказал:

с чего начать решение вопроса

Нужно было с посещения лекций!

Бери систему команд, алгоритм описан, осталось взять нужные и выстроить программу. Она займет пять-семь строк.
 

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


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

Честно говоря микроси  интересненько всё делает.

Вот эту команду    r7 &= r6 ; , вместо того чтоб сделать по честному ,

вычисляет значение 4 где то в препроцессоре , А зарем перегоняер его через 27 регистр в 7.

Это у него в порядке вешей , такие фокусы?

 

1.png

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


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

Найдите миллионы труднодоступных

электронных компонентов

musa56    181
55 минут назад, SDD39 сказал:

Это у него в порядке вешей , такие фокусы?

А что вы хотите. Вы пишете программу на "С" а компилятор пытается команды "С" выполнить используя асемблер. К программированию на асемблере это отношения не имеет. На Асемблере вы оперируете регистрами напрямую и программа использует коды Асемблера вашего процесора.

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


Ссылка на сообщение
Поделиться на других сайтах
SDD39    148
2 часа назад, musa56 сказал:

К программированию на асемблере это отношения не имеет.

 

Попробовал облегчить задачу сменив верхние  регистры , на полнофункциональные 16 и 17.

Код стал проще . Но всё равно та же песня с &= 

1.png

А  вкдь по идее , вместо  LDI  R17, 4  

Ему и надо то всего лишь прописать     AND R17 , R16 

Что не требует вообще ни каких усилий и даже высисления значения 4.

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

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


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, o_l_e_g сказал:

Нужно было с посещения лекций!

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

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


Ссылка на сообщение
Поделиться на других сайтах
SDD39    148
2 часа назад, Elite_Knight сказал:

Можно по сути отвечать.

А по сути ,ваша задача не реализуема. По скольку у этого процессора есть только два регистра . Регистр А - аккумулятор и вспомогательный регистр В. 

Цитата

Арифметико-логическое устройство (ALU) представляет собой параллельное восьмиразрядное устройство, обеспечивающее выполнение арифметических и логических операций. АЛУ состоит из:

регистров аккумулятора, регистров временного хранения TMP1 и TMP2,

ПЗУ констант,

сумматора,

дополнительного регистра (регистра В),

аккумулятора (ACC),

регистра состояния программ (PSW).

Регистр аккумулятор и регистры временного хранения - восьмиразрядные регистры, предназначенные для приема и хранения операндов на время выполнения операций над ними. Эти регистры программно не доступны.

ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.

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

Регистр B - восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.

Аккумулятор - восьмиразрядный регистр, предназначенный для приема и хранения результата, полученного при выполнении арифметико-логических операций или операций сдвига

http://www.computer-museum.ru/technlgy/proclect/mcs51/mcs_51.htm

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


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

Могу написать.

Отлично, и все же знаний у меня не прибавится. Подскажите пожалуйста тогда с чего это все начинается. Там что-то сперва заносим в аккумулятор? Используем именно здесь команду ANL? 

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


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

Я не знаю где вы физически возьмёте регистры 6 и 7 . Но выглядит так.

Значение регмстра 7 помещаете в аккумулятор .

значение регистра 6 в регистр В

Проводите операцию И между А и В 

Ну и перемещаете аккумулятор в регистр 7 .

Да в начале надо еще число 0х54 записать в аккумуятор , 

затем поместить значение в регистр 6 

то же самое со вторым числом

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


Ссылка на сообщение
Поделиться на других сайтах
o_l_e_g    1 642
24 минуты назад, SDD39 сказал:

только два регистра

Гораздо больше.
 

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


Ссылка на сообщение
Поделиться на других сайтах
SDD39    148
2 часа назад, o_l_e_g сказал:

Гораздо больше.

Разве у него ядро не Z80 го?

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


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

У них, даже архитектура разная Фон Нейман и Гарвард.
 

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


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

За то принцип работы через аккумулятор  один и тот же.

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


Ссылка на сообщение
Поделиться на других сайтах
o_l_e_g    1 642
Только что, SDD39 сказал:

через аккумулятор

Опять нет. Спокойненько пишем ANL R6,R7 
 

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


 

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


Ссылка на сообщение
Поделиться на других сайтах
SDD39    148
2 часа назад, o_l_e_g сказал:

койненько пишем ANL R6,R7 

По этой ссылке получается что можем http://www.gaw.ru/html.cgi/txt/doc/micros/mcs51/arh/mem.htm

А по этой не можем http://www.computer-museum.ru/technlgy/proclect/mcs51/mcs_51.htm

И чему верить ?

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


Ссылка на сообщение
Поделиться на других сайтах
o_l_e_g    1 642
9 минут назад, SDD39 сказал:

И чему верить ?

Компилятору!
 

Сори, один операнд, всё же должен быть А.  Правильно ANL A, R7
 

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


Ссылка на сообщение
Поделиться на других сайтах
SDD39    148
2 часа назад, o_l_e_g сказал:

Компилятору!

Так я же его и предлагал в самом первом посту.)))

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


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

Джентельмены, я конечно рад что вы нашли общий язык, и при этом не тяните кота за хвост -- скажите код раз все ясно!

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


Ссылка на сообщение
Поделиться на других сайтах
o_l_e_g    1 642
2 минуты назад, Elite_Knight сказал:

скажите код раз

А ключи от квартиры? :)
 

Сам то, хоть попытайся!
 

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


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

Через аккумулятор надо

MOV  A  , 36H

MOV R6 , A

MOV A  , 57

ANL A , R6

MOV R7 , A

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


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

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Catana
      Определить ток через сопротивление R. 
       

    • Автор: Litregol
      Здравствуйте! 
      Помогите пожалуйста с задачей.
      Дана схема, напряжение питания известно, известны входные и выходные характеристики транзистора. Транзистор работает в линейном режиме.
      Нужно найти сопротивления на резисторах.
      (На картинке сопротивления на резисторах выставлены для галочки)



    • Автор: Vlad Zubarev
      Доброго времени суток!  Кто разбирается с Atmega128,  ассемблером и кому не жалко времени,  пожалуйста помогите. 
      Как можно корректировать скорость падения маятника (он должен постеменно набирать скорость падения и плавно замедляться к верхней точке)... Какие данные нужно менять?!  Спасибо! 
      логин маятник 2.zip

    • Гость Анна
      Автор: Гость Анна
      Здравствуйте, такое дело, нужно разработать активный полосовой фильтр второго порядка с многопетлевой обратной связью
      Все данные уже рассчитаны, теоретические графики АЧХ и ФЧХ получены, а в тине непонятно какой ОУ брать, известно, что ширина полосы пропускания ОУ должна быть более чем в 50QF^2 раз больше коэффициента передачи фильтра в полосе пропускания для всего диапазона частот входных сигналов(равен 5)
      На схеме взят рандомный усилитель






    • Автор: Akerman
      Задачи 127-132
      В цепь транзистора включенного по схеме с общим эмиттером, включено сопротивление нагрузки, которое изменяется по величине от Rк1до Rк2. Заданы: ток базы Iб и напряжение источника питания Ек. Используя выходные характеристики определить:
      - напряжение UK1 и UK2;
      - коэффициент усиления  h21э;
      - мощность на коллекторе Рк1 и Рк2.
      дано:     Iб=1мA
          Рк1=0.1 кОм
          Рк2=0.2 кОм
         Ек=40 В

  • Сообщения

    • А это зависит от того, что в твоём случае будет уметь сам оптрон(Riso), на какой ток рассчитан фотодиод(-транзистор) оптрона, и какой ток необходим для отпирания симистора. К примеру, у pc817(который  спокойно принимает на свою тощую хрудь 500V) максимальный ток "транзистора" всего 50mA, а у КУ208 управляющий ток около 100, до160 mA - не срастётся, 817-ый дрищ бабхнет; поэтому ему необходим дополнительный драйвер, способный рулить КУ-шкой  
    • Я бы твёрдотельные реле поставил. Есть даже трёхфазные.  
    • Хочу сделать универсальный блок питания для подключения разных потребителей, от светодиода до моторчика. Сколько у нас в стране Кулибиных. Во-первых сначала попробуйте в интернете поискать такие БП. Во-вторых в мире не было и никогда не будет ничего универсального и ничего эталонного. В-третьих нужны хоть какие-то знания или азы. И последнее лучше собрать несколько БП на разную нагрузку и ток. Для маломощных потребителей собрать ПИДБ (Простой и доступный БП 0...50В) с этого сайта на напряжение 0-30В и ток до 3А - этого хватит за глаза. Вольтамперметр можно приобрести на Али, но для него нужно отдельное питание (тогда будет работать с 0В, потому что без отдельного питания они работают только с 4В), то есть на трансформаторе должно быть две обмотки (1 - 22-25В до 5А для силовой части БП и 2 - 7-9В для прибора). Я использую стрелочники, для них питания не нужно, но нужна правильная калибровка. После этого у вас просто возникнет вопрос, а нужно ли делать БП ампер на 20 или 30. https://ru.aliexpress.com/store/product/1-DIY-DC100V-10A/3515078_32855699179.html?spm=a2g0v.search0104.3.178.171a7b44siIdBw&ws_ab_test=searchweb0_0%2Csearchweb201602_4_10065_10068_10059_10884_10887_10696_100031_10084_10083_10103_10618_10307_5723520_10301_448%2Csearchweb201603_45%2CppcSwitch_2&algo_expid=0b8f65e2-da92-4169-9de4-6d4f404f0cd6-25&algo_pvid=0b8f65e2-da92-4169-9de4-6d4f404f0cd6&transAbTest=ae803_2&priceBeautifyAB=0
    • Тут меня начальство озаботило делать ящик на городскую елку. Собственно "моргалка" давно сделана, осталось сделать силовые ключи. Задача - "раскидать" почти 20 кВт на три фазы Вот такого оптосимисторного ключа будет достаточно или еще какая-то развязка будет нужна?
    • off-ом. Мне тоже так подумалось -  попутал, видимо, чел - на первых "шохах" такие же РР-ы ставились, позже заменённые на "внешние" электронные, а затем и вовсе на "внутренние", интегрированные с блоком щёток. Но потом решил, типа - мало ли что у него в голове творится(с моего стула всего не рассмотреть), может быть ему от отца на самом деле досталась переделанная каким-то кулибиным "шестёрка" с механическим выпрямителем, которые когда-то, до конца 50-ых, начала 60-ых применялись-таки, пока не было освоено производство мощных полупроводниковых вентилей.  Принцип действия механического выпрямителя поясняет картинка -  Но это применялось в промышленных э/машинах переменного тока, и в бортовых схемах авто, насколько помнится(а" уничтожил по акту" я в своё время всяких разных списанных газов-зисов-бэмсов не один десяток) не применялось, тем более не могло быть использовано в "шохе" ни каким образом.