Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > ASSEMBLER


Автор: noxior 13.2.2012, 21:36
есть задача по ассемблеру на мкс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 

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