Перейти к содержанию

Преобразование Знакового Числа Из Дополнительного Кода В Прямой


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов 226
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

А куда ведёт

JMP $

?

Нет, всё не так.

MOVC A, @A+DPTR
CJNE A, #1Bh, write_char
JMP $
write_char:
mov R0,A
mov A,@R0
MOV SBUF, A

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

А куда ведёт

JMP $

?

Ну это бесконечный цикл, надо будет его заменить меткой, чтобы перейти на выход после того, как температура выведется в терминал. Правильно? :) А вот мне еще нужно сделать временную задержку в 30 секунд. Это получается мне надо включать второй таймер надо будет и в него забивать задержку эту?

если у меня вот такая строка которую я передаю

txt: DB 047h,04Dh,04Ch,04Bh,04Ah,049h,048h, 1Bh

то почему мы пишем mov A, @r0 ? у нас же там нули везде. И в акк постоянно 0 загружается а не мои числа :)

Вот полная прога, которую хочу в протеус загрузить. Но тут косяк с этим регистром r0 и еще вопрос такой. Нужно аппаратно сбрасывать флаг TI постоянно?

CALCBUFL		 DATA 044h   ;младший байт двоично-десятичного
CALCBUFM		 DATA 045h   ;средний байт двоично-десятичного
CALCBUFH		 DATA 046h   ;старший байт двоично-десятичного
CALCBUFZN   DATA 047h   ;знак
mov CALCBUFL,#23
mov CALCBUFM,#35
mov CALCBUFH,#11
mov CALCBUFZN,#2
;загружаем знак
mov A, CALCBUFZN
add A,#2Bh	   ;число знака	 
mov 047h,A
;загружаем младший байт
mov A, CALCBUFL
ANL A,#00001111B
add A,#30h	    ;работаем с младшей тетрадой		 
mov 048h,A 
mov A, CALCBUFL  
ANL A,#11110000B   ;работаем со старшей тетрадой 
swap A
add A,#30h
mov 049h,A
;загружаем средний байт
mov A, CALCBUFM
ANL A,#00001111B   ;работаем с младшей тетрадой
add A,#30h	   
mov 04Ah,A	
mov A, CALCBUFM  
ANL A,#11110000B ;работаем со старшей тетрадой
swap A
add A,#30h
mov 04Bh,A
;загружаем старший байт
mov A, CALCBUFH
ANL A,#00001111B ;работаем с младшей тетрадой
add A,#30h	   
mov 04Ch,A	
mov A, CALCBUFH  
ANL A,#11110000B ;работаем со старшей тетрадой
swap A
add A,#30h
mov 04Dh,A
;подпрограмма отправки строки в терминал
JMP start
start:
MOV SCON, #50h
MOV TH1, #0FDh
ORL TMOD, #20h
SETB TR1
MOV DPTR, #txt
again:
CLR TI
CLR A
MOVC A, @A+DPTR
mov R0,A
mov A,@R0
CJNE A, #1Bh, write_char
JMP loop
write_char:
mov R0,A
mov A,@R0
MOV SBUF, A
JNB TI, $
INC DPTR
SJMP again
txt: DB 047h,04Dh,04Ch,04Bh,04Ah,049h,048h, 1Bh
loop:
END

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

Hongfa для различных применений в Компэл. Большой выбор в наличии!

Компания HONGFA - это не только крупнейший в мире производитель электромеханических реле, но также производитель конденсаторов, вакуумных прерывателей, трансформаторов и низковольтного коммутационного оборудования. На складе КОМПЭЛ регулярно поддерживаются около 100 самых популярных позиций электромеханических реле. Реле Hongfa могут заместить многие изделия производства недоступных брендов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

если у меня вот такая строка которую я передаю

txt: DB 047h,04Dh,04Ch,04Bh,04Ah,049h,048h, 1Bh

то почему мы пишем mov A, @r0 ? у нас же там нули везде. И в акк постоянно 0 загружается а не мои числа :)

txt - это адрес таблицы, с адресами ваших данных. Командой

MOVC A, @A+DPTR

вы заносите в А один из адресов. По этому адресу хранится нужное для передачи число. Вот оно и выбирается командой

mov R0,A
mov A,@R0

Она нужна один раз, я же исправил выше.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Тренды и лучшие решения для разработки зарядных станций в России

К 2029 году в России прогнозируется увеличение числа зарядных станций до 40 000. При этом отечественный рынок электротранспорта имеет климатические, потребительские и географические особенности. Для успешной разработки и построения инфраструктуры станций заряда в России идеальным вариантом является использование решений и электронных компонентов китайских производителей – лидеров индустрии электротранспорта и возобновляемой энергетики, которые уже представлены в КОМПЭЛ. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Ну, так это уже хорошо! :)

Вы убрали лишние

mov R0,A
mov A,@R0

?

И добавьте перенос строки после вывода последнего разряда данных.

Изменено пользователем Григорий Т.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Так, у вас программа работает абсолютно правильно. Просто, терминат принимает каждый символ с единицей в старшем разряде. Нужно согласовать разрядность передачи данных и длину старт-стопов. Если убрать этот бит, то получится -0;2317, что соответствует тому, что вы задали в начале программы.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

короче я вроде понял в чем проблема :) мы же забили программу, начиная с двоично-десятичного (якобы) представления. А сам процесс перевода в двоично-десятичный код мы не забили :) Вот сейчас добавлю, посмотрим, что выйдет.

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

Выйдет то-же самое. После программы разбиения на тетрады, старший бит отсутствует по определению. А на терминале русские буквы. Делайте выводы. Эта часть программы работает правильно.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Нужно согласовать разрядность передачи данных и длину старт-стопов.

Кстати, зачем вам 6-ти разрядные значения, ведь температура максимум 3-х разрядная.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

так а как мне на экран выводить? После перевода в ASCII у меня сохранилось в ОЗУ 3 байта, разбитые на старшую и младшую тетрады + знак. Что мне тогда из всего этого загружать в терминал?

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

Самый старший байт выбросить, а из среднего выводить только младшую тетраду.

Ещё до перевода в ASCII.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Вы знаете, мне это знакомо.

Помог как-то парнишке. Он, молодец, сам учиться. Только мелкие вопросы по теме задвал. И задает. Сам все делает. А еще,.. я удивлся.

Борец, из южных республик, И радиотехника!!!

Толковый парень!

" СХЕМУДАЙ", - нет!

Извините, мне кажется, у Вас тоже "ностальжи" . Иначе как бы Вы ...

:)

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

Дедуш, все получилось :D Поменял скорость передачи в терминале и убрал 3 первых байта. Только вот температура бежит и бежит. Как бы теперь так сделать, чтобы одно число показала и все?

post-180778-0-45528500-1401002417_thumb.jpg

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

Ну, хоть мозгом начал работать.

В чем я собственно, сомневаюссь.

Ну, не дано хлопчику программулечки писать!

Не его это!

Pragmatik91, учитесь улицу мести. Думаю, под силу.

Уж, извините за откровенность. :)

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

Ну, хоть мозгом начал работать.

В чем я собственно, сомневаюссь.

Ну, не дано хлопчику программулечки писать!

Не его это!

Pragmatik91, учитесь улицу мести. Думаю, под силу.

Уж, извините за откровенность. :)

Я научился это делать еще в армии :) Вы знаете, что у нашего поколения нет будущего. У нас нет никакого желания и склонности к обучению, в моей группе из 10 человек только один выполнил эту курсовую. И я пытаюсь во всем разобраться, не без вашей помощи. Я похож на ребенка, который еще не стал на ноги в области схемотехники и программирования :) Но мне нравится разбираться в этих вещах, нравится узнавать что-то новое, и я обязательно научусь всему, пускай не сразу. Ведь главное - это желание и стремление человека к познанию. Но придется быть терпеливым. И я готов к этому всему. Я готов развиваться в этой области, познавать новое для себя. И я благодарен тем людям, которые помогают мне встать на ноги, вылезти из пеленок :) Благодаря вашему форуму я уже многое постиг, чего сам бы в жизни не сделал :) Поэтому прошу, не нужно указывать, чем мне в жизни заниматься :) Я уже выбрал свой Путь и двигаюсь по нему, пусть и медленно. Кто знает, может быть мне суждено стать таким же отцом электроники, как Вы :) Мое почтение :buba:

Помог как-то парнишке. Он, молодец, сам учиться.

Я же не говорю вам про правильность написания данного слова, хотя оно мне и режет глаз :) Потому что отношусь здесь ко всем с уважением и знаю, что здесь почти все умнее меня :) Иначе я бы к вам за помощью не обращался :)

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

-Pragmatik91, видете-ли.

То, что я усмотрел в данной теме - это Григорий Т. , наверное, как и я, помогли Вам хоть в чем-то.

Нынче, я так вижу, Вы сели на плечи.

Григорий Т., я не знаю, как отнестись к данному респондненту, но лично мое мнение - пусть пока сам порешает. А то мягкими словами и запросами решает суть своего дилома.

Туда их, в качель!

:diablo:

А тупизм -выше крыши! Я, тупой в программировании, и то больше понимаю. :(

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

Если вам не хватает терпения на таких людей, как я, то зачем тогда все это писать? :) Я и сам знаю, что я неопытен в этой сфере деятельности, но это не повод смешивать меня с остальными глупыми людьми. Может с вашей точки зрения вам все и понятно, а для меня это - темный лес. Торжество разума в том и состоит, чтобы уживаться с людьми, не имеющими его. (С) Вольтер вот в чем вся суть :)

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

Как бы теперь так сделать, чтобы одно число показала и все?

Вам её нужно зациклить через 30 сек. Можно на тех же таймерах сделать задержку, пока они не используются, можно программно.

mvkarp, если он только начал программировать , а похоже что так оно и есть, то всё понятно. Лучше бы раньше, но без соответствующих условий это не просто. Я, например, своего с восьмого класса учил программировать. Так он спокойно окончил ВМК МГУ и продолжает там-же в аспирантуре. Главное - пнуть в нужном направлении :)

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Вам её нужно зациклить через 30 сек. Можно на тех же таймерах сделать задержку, пока они не используются, можно программно.

Так в том то все и дело, что они у меня используются. Они считают импульсы с термодатчика.

TMPIN bit P1.0 ;порт связи с датчиком
T1H data 40h   ;определение места хранения старшего байта T1
T1L data 41h   ;определение места хранения младшего байта T1
T2H data 42h   ;определение места хранения старшего байта T2
T2L data 43h   ;определение места хранения младшего байта T2
mov TH0,#0	  ;обнуление таймера 0
mov TL0,#0	  ;обнуление таймера 0
mov TH1,#0	  ;обнуление таймера 1
mov TL1,#0	  ;обнуление таймера 1
WAIT_LO:
jb	    TMPIN,WAIT_LO ;ожидание низкого уровня сигнала
mov	  TMOD,#11h		 ;задание 16-разрядного режима работы таймеров
WAIT_HI:
jnb	  TMPIN,WAIT_HI  ;Ожидание высокого уровня
setb  TR0		  ;Включение таймера таймер 0 (Т1)
WAITTIMER0:
jb   TMPIN,WAITTIMER0 ;Ожидание низкого уровня
clr  TR0						  ;Выключение таймера 0
setb  TR1				  ;Включение таймера 1(Т2)
WAITTIMER1:
jnb  TMPIN,WAITTIMER1 ;Ожидание высокого уровня
clr  TR1				   ;Выключение таймера 1
mov A,#0H						  ;Сброс настроек таймеров
mov TMOD,A
ret
end

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Я тебе подскажу как сделать так, чтобы и басы появились, и не были пластмассовыми. Проводочки к ним подпаяны? Тогда берёшь табуретку, садишься на неё, а динамик кладёшь на ноги рядом со своими причиндалами - звук будет ващще оболденный - и бумажный диффузор делает своё дело, и причиндалы отлично работают, создавая эффект присутствия мяса.  Пысы. Глубину объёмного звучания(мясистость) по желанию можно регулировать, слегка разводя ноги, либо полностью сводя, лишь бы причиндалы не защемить. Идею дарю , можешь оформлять авторское свидетельство. 
    • Неправильно и маловероятно. Неправильно потому, что 31-31 В на выходе на 3,7 Ом - это от 31^2/3,7=260 Вт до 32^2/3,7=277 Вт. Никак не 220 - 240 Вт. Маловероятно потому, что при ваших исходных данных выходная мощность должна быть меньше. Наверняка усилитель уже в глубоком клипинге. Необходимо контролировать момент наступления клипа, хотя бы через звуковую карту программным подобием осцилла.
    • Самое забавное в этом случае то, что на PC-ке это делать совершенно бессмысленно. 
    • Энергию на электростанции мало произвести, надо ещё и доставить её к потребителю, в конкретную квартиру дяди Васи. А это сотни подстанций, РУ, опор ЛЭП и миллионы километров различных проводов и кабелей. Всё это тоже не вечное, ветшает, разворовывается, выходит из строя и требует регулярного обслуживания, ремонта или замены. И содержания специально обученных для этого людей, которые тоже хотят кушать. Но, если 40 лет назад дядя Вася платил за всё это опосредованно, через налоги и произведённый труд, видя в квитанции какие-то незначительные копейки, то теперь его труд уходит одному толстосуму, налоги вообще непонятно куда, а расходы на содержание энергосистемы предлагается оплачивать в полной мере - другому толстосуму. Ну или, ещё более простой пример: спросить у любого автовладельца, с машиной старше 3 лет - сколько денег он вваливает за год в содержание авто, помимо покупки бензина?
    • Если настолько "умный", то часто ли в компах или ноутах выходят из строя память, проц или еще чего? Могли сэкономить на охлаждении, тогда засудить к чертям этих бракоделов. Не люблю ничего от Самсунг, ну может, карты памяти и флешки у них норм. 
    • Надеюсь не оффтоп. Я давно это ношу и сомневаюсь, но последние каплей было это:  Весь вопрос,для меня сводится к одному, будет ли магнитное поле в L2 сразу на максимуме, если убрать поле его вычитающее. Это как у света в интерференции. При наложении образуются места с отсутствующим освещением, но это не доказывает что в этом пространстве свет исчез. Поля накладываются и взаимно вычитают друг друга из результата, но они никуда не деваются. И стоит одно поле разомкнуть, как второе проявится сразу и без потерь. Но это только моя трактовка. Ток может создать два противоположных поля почти за мгновение, если не учитывать индуктивность соединительных проводов. Потом когда он достиг максимума можно отказаться от одной полавины и получить максимальный ток в стандартной индуктивной катушке. Profit! Но это не точно.
    • Он нет. А вот те кто про него байки придумывает - да. То есть, вы даёте импульс за счёт заряда конденсатора, после чего коммутирует доп индуктивность и она что-то должна вам дать? У вас же левый вывод L2 в воздухе будет висеть и все изменения напряжения никуда не пойдут. Да и индукция в сердечнике L2 в двое сократится.
  • Похожий контент

×
×
  • Создать...