ВУЗ:
Составители:
59
pop TEMP
ret
RETURN_CURSOR_4:
push PARAM
ldi PARAM, 0x40
rcall LCD_CURSOR
pop PARAM
ret
CURSOR_TO_FIRST_STRING:
push PARAM
ldi PARAM, 0x00
rcall LCD_CURSOR
pop PARAM
ret
LCD_TXT_READY:
rcall CURSOR_TO_FIRST_STRING
ldi ZH, HIGH(2*TXT_READY)
ldi ZL, LOW(2*TXT_READY)
rcall L3A
ret
LCD_TXT_STARTED:
rcall CURSOR_TO_FIRST_STRING
ldi ZH, HIGH(2*TXT_STARTED)
ldi ZL, LOW(2*TXT_STARTED)
rcall L3A
ret
LCD_TXT_PAUSED:
rcall CURSOR_TO_FIRST_STRING
ldi ZH, HIGH(2*TXT_PAUSED)
ldi ZL, LOW(2*TXT_PAUSED)
rcall L3A
ret
LCD_TXT_STOPPED:
rcall CURSOR_TO_FIRST_STRING
ldi ZH, HIGH(2*TXT_STOPPED)
ldi ZL, LOW(2*TXT_STOPPED)
rcall L3A
ret
60
L3A:
ldi PARAM, 0x00
rcall LCD_CURSOR
L3B:
lpm ; From prog mem into R0
mov PARAM, R0
tst PARAM
brne L3C
rjmp L4
L3C:
rcall LCD_DATA
L3D:
adiw ZL, 1 ; Increment pointer. This neat instruction does
rjmp L3B ; w16 bit addition to pointer ZHI:ZLO.
L4:
ret ; Done
TXT_READY:
.DB "Press a key to start",0x00
TXT_STARTED:
.DB "Stopwatch started ",0x00
TXT_PAUSED:
.DB "Stopwatch paused ",0x00
TXT_STOPPED:
.DB "Stopwatch stopped ",0x00
;********************************************************
; Sends a control function to the display (comes in PARAM)
LCD_CMD:
push PARAM
mov TEMP, PARAM
andi PARAM, 0xF0 ; Mask off lower 4 bits
sbr PARAM, 8 ; OE bit high (bit 3)
out PORTA, PARAM ; Send upper 4 bits to display
nop ; Brief delay to give reasonable OE
nop ; pulse width
cbi PORTA,3 ; OE goes low to clock in data
mov PARAM, TEMP ; Data back
swap PARAM ; Lower 4 bits
andi PARAM, 0xF0
sbr PARAM, 8 ; OE high (bit 3, port D)
out PORTA, PARAM ; Write lower 4 bits to LCD
Страницы
- « первая
- ‹ предыдущая
- …
- 28
- 29
- 30
- 31
- 32
- …
- следующая ›
- последняя »