/**********************************************************/
/* Auslesen des IR-Empfaengers des RUG WARRIOR */
/* und Decodieren der empf. FB-Signale */
/* Katja Steuernagel, Michael Kapp */
/* SS99 */
/**********************************************************/
org MAIN_START
/* Port PE4 ist active low ! */
subroutine_GetIR:
sei /* alle IRQ`s abschalten */
jsr get_start
end:
cli /* Interrupts wieder zulassen */
rts
get_start:
std val
ldx val
ldaa $01,x
staa len
staa variable_xy+1
lp1:
ldaa $100A /* Port PE4 auslesen */
anda #16 /* und auf High warten */
bne lp1
lp2:
inx
inx
jsr z1 /* High-Zeit bestimmen */
std $00,x
inx
inx
jsr z0 /* Low-Zeit bestimmen */
std $00,x
dec len
bne lp2
rts
z1:
ldd #0 /* counter resetten */
std counter
pl2:
ldd counter /* High-Zeit zaehlen */
addd #1
cmpd #10000 /* auf time-out testen */
bhi xyz
std counter
ldaa $100A /* Port PE4 auslesen */
anda #16
beq pl2
ldd counter
rts
z0:
ldd #0 /* counter resetten */
std counter
pl3: /* Low-Zeit zaehlen */
ldd counter
addd #1
cmpd #10000 /* auf time-out testen */
bhi xyz
std counter
ldaa $100A /* Port PE4 auslesen */
anda #16
bne pl3
ldd counter
rts
xyz: rts /* time-out: Programm beenden */
counter: /* Variablen */
fdb 0
val:
fdb 0
len:
fdb 0
variable_xy:
fdb 0
|