Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Подредактировать код программы (MCS-51)


Автор: Jead 27.11.2011, 14:40
Ребят, подмогите пожалуйста. Что-то у меня идеи совсем закончились.. В общем у нас имеется микроконтроллер серии MCS-51, который нужно запрограммировать.
Задание
Используя модуль ввода-вывода первого типа, обеспечить 
при отпущенных кнопках S1, S2 и S3 свечение светодиода VD1.
 При нажатии любой (одной) из кнопок свечение светодиода VD2. 
При нажатии любой пары кнопок свечение светодиода VD3.
 В случае одновременного нажатия трех кнопок должен гореть
 светодиод VD4.



 Так же имеется модуль ввода-вывода вот с такой структурной схемой
http://radikal.ru/F/s007.radikal.ru/i300/1111/50/8deb4c2abfcd.jpg.html
Я сделал для нее структурную схему подсистемы
http://radikal.ru/F/s46.radikal.ru/i114/1111/51/bba43a7571a9.png.html
В итоге разработал алгоритм.
http://radikal.ru/F/s55.radikal.ru/i148/1111/ce/6c53b8f8198c.jpg.html
Извиняюсь за корявость, делал на скорую руку.

В общем я по нему написал программу на Ассемблере, но с кучей ошибок. Ну не очень силен я в нем =(
Код

SJMP BEGIN
BEGIN:       MOV                  P1,#00001000b
                  M4:
                  PERM                 equ 03h
                  MOV                  A,P1.0
                  JZ                      M1
                  INC                   PERM
                  M1:
                  MOV                  A,P1.1
                  JZ                      M2
                  INC                   PERM
                  M2:
                  MOV                  A,P1.2
                  JZ                      M3
                  INC                   PERM
                  M3:
                  MOV                  A,PERM
                  JZ                      M4
                  MOV                  P1,#00000000b
                  CMP                  PERM,1
                  JE                      M5
                  JNE                    M6
                  M5:
                  MOV                  P1,#00010000b
                  JMP                   M4
                  M6:
                  CMP                  PERM,2
                  JE                      M7
                  JNE                    M8
                  M7:
                  MOV                  P1,#00100000b
                  JMP                   M4
                  M8:
                  MOV                  P1#01000000b
                  JMP                   M4


В общем пара ошибок в том, что я не знаю как считать значение порта Р1.1 (н-р) и поэтому в коде написал просто  Р1.1 ( Р1.2), естественно в аккумулятор ничего не копируется. Еще проблема в том что для мк серии МЦС-51 нету таких команд как CMP, JNE,JE и я не знаю чем их заменить... не подскажете?


Цитата



Автор: Jead 27.11.2011, 20:43
Никто не подскажет? Тут же для понимающих людей три минуты потратить...

Автор: xvr 28.11.2011, 15:04
Цитата(Jead @  27.11.2011,  20:43 Найти цитируемый пост)
Тут же для понимающих людей три минуты потратить... 

'Понимающие люди' пишут на С, а на ассемблере пишут любители головоломок. Ждите, пока они сюда заглянут  smile 

Автор: Kuka555 4.11.2012, 20:11
Jead, я сама только начала программировать на ассемблере, но попробую помочь: напрямую с портом P1 у меня тоже не получилось работать, поэтому я забила значение порта в регистр (например  R0) и дальше работала уже с ним

Автор: irina8317 4.11.2012, 21:25
Добрый вечер. Очень нужна помощь по Архитектуре ЭВМ, а точнее необходимо исправить ошибки в уже готовой семестровой работе. 
ООООООООООЧЕНЬ НУЖНО. ПОМОГИТЕ. 
Пишите в личку [email protected]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)