Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2012, 21:16   #1
leva290791
 
Регистрация: 30.10.2011
Сообщений: 5
По умолчанию Программирование микроконтроллера MCS–51 (решение учебной задачи на Ассемблере)

Начнём с того что я студент.У нас в лабораторной работе есть индивидуальное задание, выглядит оно так:

Заполнить все четные элементы РПД логическими нулями,а нечетные - единицами;

микроконтроллер MK51.

Дело в том,что я хочу разобраться как выполнить это задание,а не просто получить готовое решение и сдать его... надеюсь на вашу помощь дорогие профессионалы.Если не хотите мне помогать, хоть намекните,где я могу получить ответы(я имею ввиду литературу)

п.с.: спасибо модераторам,что отредактировали заголовок. Будет мне примером на будущее.

Последний раз редактировалось leva290791; 06.11.2012 в 10:04.
leva290791 вне форума Ответить с цитированием
Старый 06.11.2012, 00:09   #2
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Привет!

Если есть какая-то железка и есть название проца (контроллера) в ней - то первый шаг - это скачка даташита на данный проц (контроллер). Так как оно совковое, знчит можно без особых заморочек найти (это не китайский ноунейм с закрытй докой за ~50000 $) В доке помимо вводов-выводов и прочих температурных режимов обычно пишут команды. Команды = прога. Что такое РПД ваще не ведомо мне.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 06.11.2012, 08:08   #3
leva290791
 
Регистрация: 30.10.2011
Сообщений: 5
По умолчанию

Резидентная память данных (РПД) в первых моделях микроконтроллеров семейства MCS–51 имела объем 128 байт. Младшие 32 байта РПД являются одновременно и регистрами общего назначения – РОН (4 банка по 8 РОНов). Программа может обратиться к одному из 8–ми РОНов активного банка. Выбор активного банка РОНов осуществляется программированием двух бит в регистре состояния процессора – PSW.

Обращение к РПД возможно с использованием косвенной или прямой байтовой адресации (прямая байтовая адресация позволяет обратиться только к первым 128-ми байтам РПД).

то есть как я понял, 4 банка в РПД являются элементами этого РПД и нужно Банки 0,1,3(то есть нечетные) заполнить единицами,а Банк 2 заполнить нулями? У каждого регистра есть адрес, но не буду же я в каждый регистр заносить нули и единицы?!Или все таки буду? тогда какой командой это можно реализовать .... рассуждаю я наверное со стороны программиста не логично)

Последний раз редактировалось leva290791; 06.11.2012 в 10:12.
leva290791 вне форума Ответить с цитированием
Старый 06.11.2012, 12:20   #4
leva290791
 
Регистрация: 30.10.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Tronix Посмотреть сообщение
Привет!

Если есть какая-то железка и есть название проца (контроллера) в ней - то первый шаг - это скачка даташита на данный проц (контроллер). Так как оно совковое, знчит можно без особых заморочек найти (это не китайский ноунейм с закрытй докой за ~50000 $) В доке помимо вводов-выводов и прочих температурных режимов обычно пишут команды. Команды = прога. Что такое РПД ваще не ведомо мне.
по вашей рекомендации скачал даташит и потехоньку начал разбираться... но зная список команд и не зная как их применять, прогу не составить =\

прикрепляю документацию, может кому-нибудь пригодиться.
Вложения
Тип файла: rar MSC 51 teh. doc.rar (955.8 Кб, 39 просмотров)
leva290791 вне форума Ответить с цитированием
Старый 06.11.2012, 13:31   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Возможно вам будет полезно первое сообщение моей темы:

http://programmersforum.ru/showthread.php?t=215554

Появятся контретные вопросы - так будет легче вам помочь.
8Observer8 вне форума Ответить с цитированием
Старый 15.11.2012, 20:03   #6
leva290791
 
Регистрация: 30.10.2011
Сообщений: 5
По умолчанию

Возвращаюсь к не закрытой теме.

Разбираясь с данным микроконтроллером я наконец понял суть задания.Нужно написать программу со следующими условиями: 1.Создать массив чисел. 2.Реализовать проверку на четность, то есть: берём первое число массива и делем его на два, таким образом если останется остаток, то это число нечетное. 3.Записать в нечетные числа единицы(аналогично провести и с четными числами,только в четные записать логические нули). 4.Проверка и дальнейшая обработка должна идти до тех пор, пока в массиве не закончатся проверяемые числа(то есть после проверки первого числа массива,программа должна перейти на следующее число и т.д.)

Вопрос в следующем, можно ли в числа(в массиве) заносить логические нули либо единицы?
leva290791 вне форума Ответить с цитированием
Старый 15.11.2012, 20:25   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от leva290791 Посмотреть сообщение
Вопрос в следующем, можно ли в числа(в массиве) заносить логические нули либо единицы?
Лично мне вопрос не понятен. Как в числа можно, что-то занести?

Начните с простого. Поставьте среду, например Keil http://avaxhome.ws/software/ke901.html и запусите программу Hello, World

Код:
NAME        ROCS
ESC         EQU   1Bh
MAIN        SEGMENT CODE
myData      SEGMENT CODE
    CSEG    AT    0
    USING         0
    JMP    start
    RSEG   MAIN
start:
    MOV    SCON, #50h
    MOV    TH1, #0FDh
    ORL    TMOD, #20h
    SETB   TR1
    MOV    DPTR, #text

next_byte:
    CLR    TI
    CLR    A
    MOVC   A, @A+DPTR
    CJNE   A, #ESC, write_char
    SJMP   $

write_char:
    MOV    SBUF, A
    JNB    TI, $
    INC    DPTR
    SJMP next_byte

    RSEG   myData

text: DB   'Hello, Word', ESC
    END
Это уже будет большое достижение. Потом удалите из этой программы всё лишнее. И напишите команду для копирования числа в регистр. Если после выполнения команды MOV R1, #5h (в пошаговом режиме) в R1 окажется число 5, то вы можете приступить к выполнению вашего задания. А пока проделайте, то что я вам написал. У вас появится куча вопросов и мы их здесь обсудим.

P.S. В ассемблере нет понятия логических переменных. Переходы совершаются в результате анализа флагов PSW (могут быть ещё безусловные переходы). А в массив можно заносить и нули и единицы и любые числа (не превышающие допустимые значения для данного массива).

Последний раз редактировалось 8Observer8; 15.11.2012 в 20:36.
8Observer8 вне форума Ответить с цитированием
Старый 15.11.2012, 20:40   #8
leva290791
 
Регистрация: 30.10.2011
Сообщений: 5
По умолчанию

Я и сам много чего не понимаю в этом. Это хорошо,что вы мне указываете на мои ошибки, ибо только так я пойму как правильно(путём совершения этих ошибок).Я пользуюсь ДОСовским ассемблером,он мне привычнее... Попробую сделать то,что вы просили.

п.с.: Файл листинга показал много ошибок. Это специально для того,что бы выявить то самое "Лишнее"?

Последний раз редактировалось leva290791; 15.11.2012 в 20:45.
leva290791 вне форума Ответить с цитированием
Старый 15.11.2012, 20:50   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Пользуйтесь вот этой книжкой, как справочником: Микроконтроллеры серии 8051: практический подход. Магда Ю. С.

Она маленькая и очень полезная. Там для среды Keil. Главное всё на практике пробуйте. Всё, что без практики вылетит из головы. Будет появляться много тупиков. Но каждый тупик это рост! Описывайте тупики здесь, они вас приведут в новые и это хорошо
8Observer8 вне форума Ответить с цитированием
Старый 15.11.2012, 21:50   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от leva290791 Посмотреть сообщение
п.с.: Файл листинга показал много ошибок. Это специально для того,что бы выявить то самое "Лишнее"?
Нет ошибок. Вы что-то не так сделали. Опишите, что вы сделали.

8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование микроконтроллера ros.pro Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 15 26.05.2012 23:45
Решение задачи на ассемблере netdel Помощь студентам 0 29.05.2011 22:04
нужна помощь с программированием микроконтроллера в Ассемблере quart Фриланс 9 10.02.2011 14:49
Программирование микроконтроллера 80С196КС на ассемблере KOCT9IH Фриланс 3 07.11.2008 13:03