schroejahr
11.10.2005, 21:33
Hallo, ich möchte ein on screen menu mit meinem 2zeiligen display realisieren:
Ich habe zwei taster an pb1 und pb2, das lcd ist angeschlossen und funktioniert korrekt.
Ich will die erste zeile mit taster eins umschalten : Hintergrundbeleuchtung und Led soll wahlweise in zeile eins ausgegeben werden.
Zeile 2 möchte ich dann mit taster zwei schalten, (hintergrundbeleuchtung an/aus, und led an/aus).
Habt ihr einen denkanstoss für mich ? ich bin bis jetzt gescheitert...
Leider sind die ports ja nicht interrupt fähig, so das ich sie in einer schleife abfrage... das sollte ca so aussehen (nicht fertig, aber ich denke das es so gehen könnte...) leider bin ich auch am anfang mit den micros also korrigiert mich...
könnte das so funktionieren ?
ldi R16, 0xFF
out ddrd, r16
ldi r16, 0b00000011
out ddrb, r16
ldi r16, 0b11111110
out portb, r16
ldi r17, 0x00
ldi r21, '1'
rcall lcd_init
rcall lcd_clear
;#########################################
;########## Main loop ####################
;#########################################
loop:
sbis portb, 2
rcall switchF
tst r18
brne vergleich1
sbis portb, 3
rcall switchS
tst r20
brne vergleich2
rjmp loop
;####################################
;########## Vergleiche ##############
;####################################
vergleich1:
cpi r17, 0
breq wBacklight ;(hintegrundbel. schreiben)
cpi r17, 1
breq wled ;(led schreiben)
ldi r17, 0x00
ret
vergleich2:
cpi r19, 0
breq woff ;(off in zeile 2 schreiben)
cpi r19, 1
breq won ;(on in zeile 2 schreiben)
ldi r19, 0x00
ret
;#################################
;######### Zähleroperationen #####
;#################################
switchF:
mov r18, r21
cpi r17, '1'
breq del1
cpi r17, '0'
breq add1
ret
del1:
ldi r17, 0x00
ret
add1:
mov r17, r21
ret
switchS:
mov r20, r21
cpi r19, '1'
breq del2
cpi r19, '0'
breq add2
ret
del2:
ldi r17, 0x00
ret
add2:
mov r17, r21
ret
Ich habe zwei taster an pb1 und pb2, das lcd ist angeschlossen und funktioniert korrekt.
Ich will die erste zeile mit taster eins umschalten : Hintergrundbeleuchtung und Led soll wahlweise in zeile eins ausgegeben werden.
Zeile 2 möchte ich dann mit taster zwei schalten, (hintergrundbeleuchtung an/aus, und led an/aus).
Habt ihr einen denkanstoss für mich ? ich bin bis jetzt gescheitert...
Leider sind die ports ja nicht interrupt fähig, so das ich sie in einer schleife abfrage... das sollte ca so aussehen (nicht fertig, aber ich denke das es so gehen könnte...) leider bin ich auch am anfang mit den micros also korrigiert mich...
könnte das so funktionieren ?
ldi R16, 0xFF
out ddrd, r16
ldi r16, 0b00000011
out ddrb, r16
ldi r16, 0b11111110
out portb, r16
ldi r17, 0x00
ldi r21, '1'
rcall lcd_init
rcall lcd_clear
;#########################################
;########## Main loop ####################
;#########################################
loop:
sbis portb, 2
rcall switchF
tst r18
brne vergleich1
sbis portb, 3
rcall switchS
tst r20
brne vergleich2
rjmp loop
;####################################
;########## Vergleiche ##############
;####################################
vergleich1:
cpi r17, 0
breq wBacklight ;(hintegrundbel. schreiben)
cpi r17, 1
breq wled ;(led schreiben)
ldi r17, 0x00
ret
vergleich2:
cpi r19, 0
breq woff ;(off in zeile 2 schreiben)
cpi r19, 1
breq won ;(on in zeile 2 schreiben)
ldi r19, 0x00
ret
;#################################
;######### Zähleroperationen #####
;#################################
switchF:
mov r18, r21
cpi r17, '1'
breq del1
cpi r17, '0'
breq add1
ret
del1:
ldi r17, 0x00
ret
add1:
mov r17, r21
ret
switchS:
mov r20, r21
cpi r19, '1'
breq del2
cpi r19, '0'
breq add2
ret
del2:
ldi r17, 0x00
ret
add2:
mov r17, r21
ret