'DURCH SENDERN DES BUCHSTABEN l ( klein L ), r oder # Wird der Schrittmotor in die jeweilige richtung bewegt 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32 $regfile = "m644def.dat" 'Stackanweisungen, die eigentlich nur bei größeren Programmen $framesize = 64 $swstack = 128 $hwstack = 64 'Die Frequenz des verwendeten Quarzes $crystal = 18432000 $baud = 57600 Enable Interrupts 'Config Timer1 = Timer , Prescale = 1024 'Enable Timer1 Config Portc.0 = Output 'X DIR Config Portc.1 = Output 'X CLK Config Portc.2 = Output 'SLEEP 1 = Sleep 0 = Betrieb Config Portc.3 = Output 'Y DIR Config Portc.4 = Output 'Y CLK Config Pina.7 = Input Portc.0 = 0 Portc.1 = 0 Portc.2 = 1 Portc.3 = 0 Portc.4 = 0 Porta.7 = 0 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Lcdbus = 4 'Dim I As Byte Dim S As String * 1 On Urxc Onrxd 'Interrupt-Routine setzen Enable Urxc 'Interrupt URXC einschalten 'Interrupts global zulassen Cls Locate 1 , 1 Lcd "SYSTEM START..." Print "SYSTEM STARTS UP ..." S = "" Wait 3 Cls Lcd "ONLINE..." Print "ONLINE..." Do If Pina.7 = 1 Then S = "" Portc.0 = 0 Portc.1 = 0 Portc.2 = 1 Portc.3 = 0 Portc.4 = 0 Print "NOTAUS" Locate 2 , 1 Lcd "+++++NOTAUS+++++" End If If S = "l" Then ' kleines L Portc.0 = 0 Portc.2 = 0 Toggle Portc.1 'TOGGLE BEFEHL SCHALTET DEN PORT AUTOMATISCH ZWISCHEN 0 und 1 um Elseif S = "r" Then Portc.0 = 1 Portc.2 = 0 Toggle Portc.1 Elseif S = "v" Then Portc.3 = 0 Portc.2 = 0 Toggle Portc.4 Elseif S = "b" Then Portc.3 = 1 Portc.2 = 0 Toggle Portc.4 Elseif S = "#" Then Portc.0 = 0 Portc.1 = 0 Portc.2 = 1 End If Waitus 500 Loop Onrxd: S = Chr(udr) If S = "#" Then Print "MASCHINE STOP" Locate 2 , 1 Lcd "MASCHINE STOP " Elseif S = "l" Then ' kleines L Print "TURN LEFT" Locate 2 , 1 Lcd "TURN LEFT " Elseif S = "r" Then Print "TURN RIGHT" Locate 2 , 1 Lcd "TURN RIGHT " Elseif S = "v" Then Print "VORWARD" Locate 2 , 1 Lcd "VORWARD " Elseif S = "b" Then Print "BACKWARD" Locate 2 , 1 Lcd "BACKWARD " End If Return