Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/20: Рейтинг темы: голосов - 20, средняя оценка - 4.95
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677

(AT89C51, стенд СУ-МК51) Очистить семисегментный дисплей и вывести на него какую нибудь цифру

13.03.2013, 13:02. Показов 3991. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.Данный код компилируется в ProView32, но проблема в том что мы получаем .HEX файл, а не .com/.exe.
Вопрос: в какой среде можно скомпилировать данный код в .com/.exe файл?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MOV A,  #25
ADD A,  #13 
PUSH    ACC     
MOV A,  #23
SUBB    A,  #8  
POP B       
MUL AB      
SWAP    A       
ANL A,  #11110000b  
PUSH    ACC     
MOV A,  P0
ANL A,  #00001111b  
MOV R0, A
POP ACC
ORL A,  R0
MOV P0, A   
STOP:   JMP STOP    
END
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2013, 13:02
Ответы с готовыми решениями:

(AT89C51, стенд СУ-МК51) Что означает "#"?
MOV A, #25 ADD A, #13 ;Выполнение первого действия PUSH ACC ;Сохранение результата MOV A, #23 SUBB A, #8 ;Выполнение второго...

(AT89C51, стенд СУ-МК51) Что означает символ "двойная стрелка" в скане листинга
Здравствуйте. Пишу код в ProView32, и в коде есть двойная стрелка(изображение ниже). Пытался найти коды(alt+*) на эту стрелку, но все не...

Как из Корела программно очистить какую нибудь папку?
Всем привет! После переустановки Винда10 Корел перестал через раз понимать команду: On Error Resume Next Kill...

18
1184 / 673 / 113
Регистрация: 15.05.2012
Сообщений: 4,085
13.03.2013, 16:00
Это код для MCS-микроконтроллеров, а не для процессоров Интел. Только хекс или что-то подобное, никак не ексе или ком.
1
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
14.03.2013, 05:51
Утилита Hex2Bin.exe поможет перегнать Hex в Bin. А это почти то-же, что Com. Т.е. просто двоичный образ.
Только у меня большое подозрение, что Linked собрался ЭТО на персоналке запускать.
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
14.03.2013, 16:46  [ТС]
Ethereal, вы правы.. У меня лабораторная работа, ну и задания, переделать код с "C" языка на Assembler. Вот и думаю, как выполнить сие чудо..Там лабораторные работы идут на стенде, и там инициализация файлов и пр. для работы со стендом, а как такое в асе мделать - я не знаю(
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
14.03.2013, 17:38
Так на КАКОЙ ассемблер ?
У микроконтроллера MCS-51 и персоналки IBM PC архитектуры разные, а значит и ассемблеры тоже разные. Если ты напишешь на том ассемблере, что в первом сообщении топика, то запустить результат на персоналке ты не сможешь. Потому-что получишь код не для того процессора.
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
14.03.2013, 19:53  [ТС]
Ethereal, вот оно что..Спасибо! Кое-что начинает проясняться..
Да, тогда вопрос: например в "C" я для инициализации работы со стендам делал чтото вроде этого:
include "namefile.h";
и в нужном моменте вызывал нужную функцию:
init_stand();
То как подобное делается в ассемблере(код пишется в ProView32)? Файлы теже самые есть, только с форматом inc.
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
15.03.2013, 00:52
namefile.h - это .h файл, т.е. заголовочный файл. Он содержит всякие описания, нужные
для Си, но никакого кода не порождает.

init_stand();
Вызов этой функции породит код при компиляции. Поскольку эта функция вызывается без
параметров, то ее вызов породит только одну инструкцию в коде.
Которая на ассемблере будет выглядеть так :
lcall init_stand

Само тело функции init_stand() будет, естественно, состоять из целой кучи кода, но
поскольку текста этой функции я не вижу, то и какой это код сказать не могу.
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
15.03.2013, 06:30  [ТС]
Цитата Сообщение от Ethereal Посмотреть сообщение
Которая на ассемблере будет выглядеть так :
lcall init_stand
А как в ассемблере подгрузить файл, из которого я собираюсь вызвать эту функцию?
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
15.03.2013, 16:18
Ты этот файл сначала напиши.
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
15.03.2013, 17:04  [ТС]
Всё, разобрался..Знак "$" перед include надо ставить..
Ребят..Вот есть код на С, и его надо перевести в ассемблер, для микроконтроллеров(8051) MCS(на скоко помню) - 8 бит..Вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void conv(unsigned char A, unsigned char data * D)
{ 
 D[0]=A/100;
 A=A-D[0]*100;
 D[1]=A/10;
 D[2]=A-D[1]*10;
}
 
void main(void)
{
 unsigned char data D[3];
conv (0x80, D);
 while (1);
}
Как это будет выглядеть на ассемблере?Используется стенд СУ-МК51
Да, и вот пример кода который выполняет действие (*+*)*(*-*) =??? числа.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
MOV A,  #25
ADD A,  #13 ;Выполнение первого действия
PUSH    ACC     ;Сохранение результата
MOV A,  #23
SUBB    A,  #8  ;Выполнение второго действия
POP B       ;Вызов результата первого действия
MUL AB      ;Третье действие
SWAP    A       ;Обмен тетрад
ANL A,  #11110000b  ;Нам нужна старшая тетрада
PUSH    ACC     ;Сохранение результата
MOV A,  P0
ANL A,  #00001111b  ;Сохраняем младшую тетраду порта
MOV R0, A
POP ACC
ORL A,  R0
MOV P0, A   ;Результат в порт
 
STOP:   JMP STOP    ; Программа должна завершаться именно так
 
END
Вот в этом коде можете пожалуйста пояснить, причём тут тетрады и для чего они нужны?Это вроде в 16-й системе счисления используется?
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
15.03.2013, 17:31
Итак, процессор (и компьютер в целом) использует двоичную систему, которая оперирует всего двумя цифрами: 0 и 1. И поэтому основание двоичной системы равно 2. Аналогично, основание десятичной системы равно 10, так как там используются 10 цифр.

Каждая цифра в двоичном числе называется бит (или разряд). Четыре бита – это полубайт (или тетрада), 8 бит – байт, 16 бит – слово, 32 бита – двойное слово. Запомните эти термины, потому что в программировании они используются очень часто.
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
16.03.2013, 13:43  [ТС]
Ethereal, как понять "слово" и/или "двойное слово"?
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
16.03.2013, 15:03
Linked, два байта - это слово, четыре байта - это двойное слово.
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
16.03.2013, 16:55  [ТС]
Fatal Error, мм.понятно. Буду считать что просто так их принято называть - "Словом")
Вот ещё вопрос, я этот код пишу на стенде, а как мне на индикатор вывести что либо?Мне нужно читать уже о самом стенде, как и какие функции использовать для инициализации работы со стендом, когда и как?

Добавлено через 55 секунд
Цитата Сообщение от Linked Посмотреть сообщение
void conv(unsigned char A, unsigned char data * D)
{
*D[0]=A/100;
*A=A-D[0]*100;
*D[1]=A/10;
*D[2]=A-D[1]*10;
}
void main(void)
{
*unsigned char data D[3];
conv (0x80, D);
*while (1);
}
Да, и как будет выглядеть этот код на ассемблере?
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
19.03.2013, 03:34
Цитата Сообщение от Linked Посмотреть сообщение
Fatal Error, мм.понятно. Буду считать что просто так их принято называть - "Словом")
Ты бы пару книжек каких-нибудь по основам программирования для начала прочел, что-ли.

Запомни : СНАЧАЛА учится таблица умножения и только ПОТОМ квантовая механика.
Зачем тебе ассемблер, если ты еще не прочитал про двоичную систему счисления, тетраду, байт и слово ?
Или залезай обратно на баобаб с которого спустился или иди книги читай.
2
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
19.03.2013, 06:42  [ТС]
Ethereal, спорить я с тобой не собираюсь, но просто скажу, что времени читать у меня книг нету. Зачем читать, если есть возможность получить ответы сразу на то, что тебе и нужно? Не хочу лишней кашей себе голову забивать, у меня других забот полно.

Добавлено через 20 минут
Ethereal, + Я этому жизнь посвящать не собираюсь. Мне поставили задачу в один момент времени - я её просто и пытаюсь решить, читать массу книг по основам и пр. это как-то глупо было-бы с моей стороны.
По теме:

Цитата Сообщение от Linked Посмотреть сообщение
Вот ещё вопрос, я этот код пишу на стенде, а как мне на индикатор вывести что либо?Мне нужно читать уже о самом стенде, как и какие функции использовать для инициализации работы со стендом, когда и как?
Вопрос решён на "C", вопрос как сделать на ассемблере.
В общем на стенде есть 2 индикатора: динамический 7-ми сегментный индикатор (8 символов)(SSI) и жидкокристаллический матричный индикатор (2 строки по 16 символов)(MJKI). На "C" там есть готовые функции, что-то вроде mjki_clear() - очистка индикатора, mjci_pos(x,y) - установка позиции на нужную строку нужный столбец индикатора и т.д., но там нет нигде самих расписанных этих функций(т.е. просмотрев все подключаемые файлы - я их не нашёл).
Вопрос: где могут быть записаны эти функции, не могут ли они быть записаны где-нибудь внутри стенда?(т.е. готовые функции, которым остаётся только передавать параметры)?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
19.03.2013, 06:46
Linked,
а смысл объяснять, если тебе ЭТО не нужно? Интернет большой, ищи и получай ответы на вопросы сразу про то, что ТЕБЕ нужно -- зачем забивать ТВОЕЙ кашей мозги чужих людей?
2
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
19.03.2013, 16:08  [ТС]
Mikl___, вот именно в этом то и проблема, что по данному стенду - в интернете ничего и нет.. Программы писали Белорусские прогеры, они написали на "С", а Ассемблер - мол надо - делайте сами.. Вот и пытаюсь

Добавлено через 5 часов 50 минут
Mikl___, пожалуй вы правы, я погорячился. Извиняюсь за происходящий "флудобред", в котором я мог бы сам разобраться погуглив.. А касательно стенда пожалуй пойду сам разбираться, ведь всётаки мой курсовой.
Спасибо ещё раз! В кое-чём всётаки разобрался.
0
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
08.04.2013, 09:14  [ТС]
Микроконтроллер AT89С51, как очистить семисегментный дисплей и вывести на него какую нибудь цифру?Приведите пожалуйста пример
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.04.2013, 09:14
Помогаю со студенческими работами здесь

Семисегментный дисплей на 4 цифры. Как с этим работать?
Есть дисплей Kingbright CA56-125 RWA R. Работаю с подобными впервые - не ругайте за тупизну, пожалуйста. Там 4 цифры (на каждую по 7...

Как, используя клавиатуру, преобразовать цифру в ASCII-код и вывести на дисплей?
Как, используя клавиатуру, преобразовать цифру в ASCII-код и вывести на дисплей? С подсказками, которые есть на сайте не получается там...

С использованием клавиатуры ввести цифру и преобразовать в ASCII-код, потом вывести на дисплей
Как в comp model с использованием клавиатуры ввести цифру и преобразовать в ASCII-код, а потом вывести на дисплей? Мне надо сделать эту...

Как создать класс текста и вывести из него текст на дисплей?
С обычным выводом проблем нет. Реализовывал это по-разному, но ошибка всегда была одна : (см. на прикрепл.фото) struct tx { Text...

Очистить экран и вывести на него свою фамилию
Нужно написать программу - Очистить экран и вывести на него свою фамилию. хелп плз.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru