TX
The ticks variable is used in an ISR so should be declared volatile.
Not sure what the interrupts(), nointerrupts() is about.
I would not use delay(), but the blink without delay method of timing.
RX
Why reinitialize the LCD in loop()? I think that clear() is faster.