Die Funktion wird im Modul Goto Position (siehe Menüstruktur in Abb. 7.8), entsprechend der Assemblerdatei mod/got_posn.asm direkt gestartet und benötigt außer der Definition des Zielwinkels keine weiteren Eingaben mehr.
Die Routine beginnt mit einem Assembler-Label nach der Namenskonvention aus Absch. 7.5.6, nämlich mit select_position_main.
; ====================================================================
; goto positon main entry point
; ----------------------------------
; directly called from mainmenu 'Goto Positn.'
; 3 options:
; 1. (Enter) execute select next position
; 2. (Back) leave select_position_main
; 3. (Next) goto position select menu
; ----------------------------------
; input: none
; output: none
; affected: flags
; ----------------------------------
select_position_main:
push temp1
; ....................................................................
select_position_id:
rcall next_notempty_angle
rcall goto_pos_main_menu
WAIT_MENU select_position_main
rcall wait_key_release
cpi temp1, key_next
breq select_position_id
; ....................................................................
rcall wait_key_release
; set preset position (end value)
lds ltmp1, last_position
rcall restore_angle_positon
MOVWR REG_A, REG_Z ; REG_A is the required "next" position
rcall select_position_enter ; accept "enter next position"
; rjmp select_position_main_ret
; ....................................................................
select_position_main_ret:
STSB glb_menu_mode, menumode_idle
pop temp1
ret
Dieser Programmteil dient nur dazu, eine der max. 16 gespeicherten
Winkelpositionen auszuwählen.
Bemerkungen:
Im Makro ,,WAIT_MENU'' wird bereits auf das Verlassen der Funktion über die ,,Back''-Taste (siehe 7.6.2.1) reagiert, dieses Makro verzweigt zum standardmäßig bezeichneten Exit-Label select_position_main_ret (Name des Assembler Einsprung-Labels mit der Nachsilbe ,,_ret'') wenn die ,,Back''-Taste betätigt wurde.
; ---------------------------------- ; wait for a menu seelction ; ---------------------------------- ; ; Parameter: @0 .. label for select loop and exit label ; ; affected: Z-flag, temp1 .macro WAIT_MENU rcall wait_key_release @0_loop: rcall check_keypress breq @0_loop cpi temp1, key_back breq @0_ret WAIT_LOOP 1 .endmacroNur durch Anwahl dieser Funktion über die ,,Enter'' Taste wird das Unterprogramm select_position_enter angesprungen. In dieser Routine werden die fünf Steuerungsphasen der automatischen Positionskontrolle durchlaufen.