Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Приклад програми для лабораторної роботи №6




Приклад програми для лабораторної роботи №6

Написати програму для роботи з енкодером. При повертані ручки за годинниковою стрілкою збільшувати значення і значення виводити у двійковому вигляді на світлодіодну лінійку, при повертанні прити годинникової стрілки зменшувати значення.

 

$include (mod841)

  DAT equ R7

ADDR equ R6  

 

  State data 9

 

 

org 0

JMP BEGIN

 

ORG 030H

BEGIN:

mov SP,   #2fh

mov State, #0

 

loop:

call ReadEnc

mov a, State

add a, R7

mov State, a

mov DAT, a

mov ADDR, #7

call write

call Zatr

jmp loop

            

ZATR:

MOV R7, #0H

DJNZ R7, $

RET

        encA bit 0

        encB bit 1

 

ReadEnc:

mov a, #0

mov c, encA

rlc a

mov c, P3. 4

mov encA, c

rlc a

cjne a, #1, ReadEnc_NotFirst

; first

mov c, P3. 5

mov encB, c

ReadEnc_NotFirst:   

cjne a, #2, ReadEnc_NotSecond

; second

mov a, #0

mov c, encB

rlc a

mov c, P3. 5

rlc a

cjne a, #1, ReadEnc_NotCW

; CW

mov R7, #1

ret

ReadEnc_NotCW:

; CCW

cjne a, #2, ReadEnc_NotCCW

mov R7, #255

ret

ReadEnc_NotCCW:

ReadEnc_NotSecond:   

mov R7, #0

ret

; ===**END**===

write: setb P3. 6     //Set Data bus buffer to TX

        mov P0, DAT   //moving data to bus buffer

        mov P2, ADDR //set periferals address

        nop                    //wait

        nop

        mov P2, #0x00 //clock pulse for device latch

            

ret                       //exit from subroutine

end

 

Варіанти індивідуальних завдань

Текст індивідуального завдання
При натисканні кнопки на енкодері інкрементувати змінну і виводити на молодший розряд статичного індикатора. Змінна приймає значеня 0…99, прогарма не повинна реагувати на тривале натискання на кнопку. Початковий стан на статичному індикаторі засвічено 00 на молодшому розряді, старший розряд погашено, при досягненні значення 100 на індикаторі засвічується 00.
При натисканні кнопки на енкодері декрементувати змінну, яка відображається на старшому розряді статичного індикатора, при натисканні кнопки на джойстику декрементується змінна, яка відображається на старшому розряді статичного індикатора. Змінні приймають значеня 99…00, при досягненні значення –1 засвічується 99, прогарма не повинна реагувати на тривале натискання на кнопки. Початковий стан на статичному індикаторі засвічено 00 на старшому розряді, молодший розряд погашено.
При обертанні ручки енкодера в напрямку за годинниковою стрілкою переміщати на свілодіодній лінійці засвічену точку вверх, при обертанні ручки енкодера в напрямку проти годинникової стрілки переміщати точку на світлодіодній лінійці вниз, при досягненні крайного положення точка переводиться на протилежний край.
При обертанні ручки енкодера в напрямку за годинниковою стрілкою переміщати на свілодіодній лінійці погашену точку вниз, при обертанні ручки енкодера в напрямку проти годинникової стрілки переміщати погашену точку вверх, при досягненні крайного положення точка переводиться на протилежний край.
При натисканні кнопки на енкодері переміщувати засвічену точку на матричному світлодіодному індикаторі, початковий стан: засвічена точка знаходить в лівому нижньому куті. При натисканні на кнопку енкодера точка переміщується по стовпці вверх, при досягненні верхнього положення точка переміщається на нижній рядок і на один стовпець вправо, при закінченні останього стовпця, точка повертається в початкове положення
При натисканні кнопки на джойстику переміщувати загашену точку на матричному світлодіодному індикаторі, початковий стан: загашена точка знаходить в правому верхньому куті. При натисканні на кнопку джойстика точка переміщується по стовпці вниз, при досягненні нижнього положення точка переміщається на верхній рядок і на один стовпець вліво, при закінченні останього стовпця, точка повертається в початкове положення.
На світлодіодному індикаторі запустити “біжучу точку”, напрямок знизу вгору, швидкість переміщення задавати обертанням ручки енкодера, максимальна швидкість 8 сегментів за 1с., мінімальна швидкість 1 сегмент за 8с., при обертанні ручки енкодера за годинниковою стрілкю швидкість збільшується в двічі відносно встановленої, при обертанні ручки проти годинникової стрілки швидкість зменшується вдвічі відносно встановленої. При досягненні мінімального або максимального значення швидкість у відповідному напрям не міняється.
На світлодіодному індикаторі запустити погашену “біжучу точку”, напрямок зверху вниз, швидкість переміщення задавати обертанням ручки енкодера, максимальна швидкість 16 сегментів за 1с., мінімальна швидкість 1 сегмент за 4с., при обертанні ручки енкодера за годинниковою стрілкю швидкість збільшується в двічі відносно встановленої, при обертанні ручки проти годинникової стрілки швидкість зменшується вдвічі відносно встановленої. При досягненні мінімального або максимального значення швидкість у відповідному напрям не міняється.
Засвічувати світлодіодии на індикаторі за допомогою дискретних кнопок. При натисканні кнопки на енкодері збільшувати число засвічених індикаторів на один, при натисканні кнопки на джойстику зменшувати число засвічених індикаторів на один. При засвіченні всіх індикаторів програма ігнорує натискання кнопки енкодера, при погашенні всіх індикаторі програма ігнорує натискання кнопки джойстика. Початковий стан: світлодіодна лінійка погашена.
При обертанні ручки енкодера за годинниковою стрілкою інкрементувати значення змінної, яка виводиться на молодший розряд семигегментного індикатора, при обертанні ручки енкодера проти годинникової стрілки декрементувати значення змінної. При досягнення значення 100 змівнна приймає значення 00, при досягненні значення –1 змінна приймає азначення 99.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...