![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 27.11.2011
Сообщений: 28
|
![]()
есть задача по ассемблеру на мкс51
В устройстве имеется два индикатора – красный и зеленый, а также кнопка. Необходимо разработать программное обеспечение, которое обеспечивало бы управление индикаторами по сигналу с кнопки. Оба индикатора работают в «мигающем» режиме с периодом 1С. Скважность импульсов зеленого индикатора постоянна и равна 5. Скважность красного индикатора определяется состоянием кнопки, в исходном состоянии кнопки – скважность равна 5, а в нажатом состоянии кнопки – скважность равна 2. Начало свечения красного и зеленного индикаторов должно быть синхронным. Тактовая частота генератора микроконтроллера – 12МГц. Точность формирования временных интервалов не хуже 0.1С. Вот так сказать начал делать но по ходу дела пару раз запутался немоглибы вы мне помоч исправить, или гдето шото подправить. sjmp prestart org 000BH ljmp InterruptT0 org 0030H prestart: mov p1, #0 mov tmod, #00000001b mov tl0, #0B0h ;#0cbh mov th0, #3ch mov ie, #10000010b mov sp, #60h mov r0, #16 mov r1, #16 sjmp start start: setb tr0 lcall subprogram sjmp start subprogram: cjne r0, #0, next ; Для зелёной лампы mov r0, #16 next: cjne r0, #16, next2 setb p1.0 next2: cjne r0, #12, next3 clr p1.0 next3: jb p1.2, ButOn ; Переход если кнопка нажата cjne r1, #0, way ; Для красной лампы mov r1, #16 way: cjne r1, #16, way2 setb p1.1 way2: cjne r1, #12, way3 clr p1.1 way3: sjmp subprogram ButOn: cjne r1, #0, way11 mov r1, #16 way11: cjne r1, #16, way22 setb p1.1 way22: cjne r1, #8, way3 clr p1.1 sjmp way3 InterruptT0: mov tl0, #0B0h;#0cbh mov th0, #3Ch dec r0 dec r1 reti |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
1) В какой среде писали программу?
2) Какой у вас микроконтроллер 8051 или 8052? Сам имею: 1) среда Keil_51 2) микроконтроллер at89s52 (MCS-51, 8052) у семейства 8052 есть удобный таймер T2. На нем можно будет мигать диодом и его же использовать в режиме захвата (для кнопки). У Юрия Магды по таймерам хорошо написано в книге: "Микроконтроллеры серии 8051. Практический подход". Из этой книги взял код и немного переработал: Код:
В вашей программе не разбирался. Но заметил, что сall у вас есть, а ret'a для него нет. И обработчик прерывания по переполнению T0 не по тому адресу (надо 0BH, а не 30H). И где вы таймер T0 запустили? Последний раз редактировалось 8Observer8; 15.02.2012 в 22:03. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Непонимаю почему не работает(Паскаль) | Cas01 | Помощь студентам | 6 | 12.05.2011 01:57 |
непонимаю.. | feesta | Помощь студентам | 1 | 10.04.2011 02:45 |
C непонимаю почему такой output. | Luxe0n | Помощь студентам | 8 | 10.03.2011 19:47 |
непонимаю как сделать эту задачу может листинг мне нужен(решение) | Юра Кадников | Помощь студентам | 0 | 05.01.2011 19:59 |
Непонимаю условие задачи.... | Карась | Помощь студентам | 2 | 28.11.2007 17:41 |