3 Umsetzung der 5-Phasensteuerung

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
	.endmacro 
Nur 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.



Subsections
gerhard.reithofer@tech-edv.co.at