Jump to content

Recommended Posts

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

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

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

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

Edited by Elite_Knight
ошибка

Share this post


Link to post
Share on other sites

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

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

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

#include <8051.h>

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

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

Edited by SDD39

Share this post


Link to post
Share on other sites
28 минут назад, Elite_Knight сказал:

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

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

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

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

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

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

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

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

 

1.png

Share this post


Link to post
Share on other sites
55 минут назад, SDD39 сказал:

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

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

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

2 часа назад, musa56 сказал:

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

 

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

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

1.png

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

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

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

Edited by SDD39

Share this post


Link to post
Share on other sites
2 часа назад, o_l_e_g сказал:

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

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

Share this post


Link to post
Share on other sites
2 часа назад, Elite_Knight сказал:

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

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

Цитата

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

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

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

сумматора,

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

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
1 минуту назад, солар сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
24 минуты назад, SDD39 сказал:

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

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

Share this post


Link to post
Share on other sites
2 часа назад, o_l_e_g сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Только что, SDD39 сказал:

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

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

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


 

Share this post


Link to post
Share on other sites
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

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

Share this post


Link to post
Share on other sites
9 минут назад, SDD39 сказал:

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

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

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

Share this post


Link to post
Share on other sites
2 часа назад, o_l_e_g сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
2 минуты назад, Elite_Knight сказал:

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

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

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

Share this post


Link to post
Share on other sites

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

MOV  A  , 36H

MOV R6 , A

MOV A  , 57

ANL A , R6

MOV R7 , A

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

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

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



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

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






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

×
×
  • Create New...