На світлодіодній лінійці засвітити біжучу точку.
// 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, коли всі світлодіоди погаснуть повертаємось в початковий стан) |
|
|
|
|