;des is sisch ultrakrasse lischterkedde XDEF main PBODR EQU $000216C2 ;/* Port B Open Drain */ PBPAR EQU $000216CB ;/* Port B Pin Assignment */ PBDIR EQU $000216B8 ;/* Port B Data Direction */ PBDAT EQU $000216C4 ;/* Port B Data */ CodeSec: SECTION 1 main: CLR.L D1 MOVE.L #$000000FF,PBDIR.L MOVE.L #$00000000,PBPAR.L MOVE.W #$0000,PBODR.L MOVE.L #$00000000,PBDAT.L MOVE.B #$01,D1 BACK: ROR.B #$01,D1 ;rotiere D1 um 1 nach links MOVE.L D1,PBDAT.L ;copy d1 nach pbdat MOVE.L #$00000000,D4 ;wartezähler init BRA.W WAIT WEITER: ROL.B #$01,D1 ;rotiere D1 um 1 nach links MOVE.L D1,PBDAT.L ;copy d1 nach pbdat MOVE.L #$00000000,D4 ;wartezähler init BRA.W WAIT WAIT: ADD.L #$00000001,D4 ;wartezähler +1 CMP.L #$0003FFFF,D4 ;check ob warteende erreicht BNE.W WAIT ;springe wieder in warteschleife wenn !ende CHECK: MOVE.L PBDAT.L,D2 ;copy pbdat nach d2 OR.W #$EFFF,D2 ;check in d2 ob pd12=1 CMP.W #$EFFF,D2 ;siehe oben BEQ.W CHECK ;springe wieder CHECK wenn taster immer noch gedrückt MOVE.L PBDAT.L,D2 ;copy pbdat nach d2 OR.W #$DFFF,D2 ;check in d2 ob pd12=1 CMP.W #$DFFF,D2 ;siehe oben BEQ.W CHECK ;springe wieder CHECK wenn taster immer noch gedrückt BRA.W LOOP ;springe LOOP wenn taster offen LOOP: MOVE.L PBDAT.L,D2 ;copy pbdat nach d2 OR.W #$EFFF,D2 ;check in d2 ob pd12=1 CMP.W #$EFFF,D2 ;siehe oben BEQ.W WEITER ;wenn pb12=1 springe WEITER MOVE.L PBDAT.L,D2 ;copy pbdat nach d2 OR.W #$DFFF,D2 ;check in d2 ob pd12=1 CMP.W #$DFFF,D2 ;siehe oben BEQ.W BACK ;wenn pb12=1 springe WEITER BRA.W LOOP ;wenn nich dann wieder loop END ;GANZ WISCHTISCH!!!