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

На світлодіодній лінійці засвітити біжучу точку.

// address of LEDs 0x07

// define DATA transfer register

DAT EQU R0

// define ADDRESS transfer register

ADDR EQU R1

// define temporary0 register

Temp0 EQU R2

// Address for PUSH and POP commands

_Temp0 EQU 0x02

//Interrupt vector

ORG 0x0000

JMP RESET

ORG 0x0033

RESET:

MOV DAT, #11111111b

MOV ADDR,#00000111b

CALL write

MOV A, #0x01

Forever:

  Rr A

  MOV DAT, A

  MOV ADDR, #0x07

  CALL write

  CALL LDelay

  CALL LDelay

  CALL LDelay

  CALL LDelay

  CALL LDelay

  CALL LDelay

  CALL LDelay

JMP Forever

// Write to periferal device subroutine

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

// Delay 17.9 ms

LDelay:

  MOV Temp0, #0xFF

LD1:

  DEC Temp0

  PUSH _Temp0

        MOV Temp0, #0xFF

        DJNZ Temp0, $

  POP _Temp0

  CJNE Temp0, #0x00, LD1

RET

END

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

Текст індивідуального завдання
1 На світлодіодній лінійці засвітити індикатори (LED 8 …. LED 15) через один, нижній індикатор засвічений, час засвітки 1с., після цього погасити індикатор, час витримати 1с., повторити процедуру спочатку.
2 На світлодіодній лінійці засвітити індикатори (LED 8 …. LED 15) через один, нижній індикатор загашений, час засвітки 2с., після цього засвітити всі індикатори, час світіння 1с. дальше повторити процедуру спочатку.
3 На світлодіодній лінійці засвітити індикатори (LED 8 …. LED 11), потім погасити, процедуру повторювати з частотою 1Гц
4 На світлодіодній лінійці засвітити індикатори (LED 12 …. LED 15), потім погасити, процедуру повторювати з частотою 0,5Гц
5 На світлодіодній лінійці засвітити біжучу точку, напрямок від LED 8 до LED 15, швидкість переміщення 1 сегмент всекенду
6 На світлодіодній лінійці засвітити біжучу точку, напрямок від LED 15 до LED 8, швидкість переміщення 2 сегмент всекенду
7 На світлодіодній лінійці засвітити індикатори в режимі “інкрементного термометра”, напрямок від LED 15 до LED 8, швидкість наростання 1 сегмент в секенду (початковий стан: засвічено LED 15, черз 1 с. засвічено LED 15 і LED 14, коли засвічено всі світлодіоди повертаємось в початковий стан)
8 На світлодіодній лінійці засвітити індикатори в режимі “інкрементного термометра”, напрямок від LED 8 до LED 15, швидкість наростання 2 сегмент в секенду (початковий стан: засвічено LED 8, черз 0,5с. засвічено LED 8 і LED 9, коли засвічено всі світлодіоди повертаємось в початковий стан)
9 На світлодіодній лінійці засвітити індикатори в режимі “декриментно термометра”, напрямок від LED 15 до LED 8, швидкість спадання 2 сегмент в секенду (початковий стан: засвічено всі світлодіоди, черз 2 с. засвічено з LED 15 по LED 9, коли всі світлодіоди погаснуть повертаємось в початковий стан)
10 На світлодіодній лінійці засвітити індикатори в режимі “декриментно термометра”, напрямок від LED 8 до LED 15, швидкість спадання 1 сегмент в секенду (початковий стан: засвічено всі світлодіоди, черз 1 с. засвічено з LED 14 по LED 8, коли всі світлодіоди погаснуть повертаємось в початковий стан)

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: