Breaking a while loop

Did you wonder why your code looks like this?

OCR1A = 207;// = (1610^6) / (96008) - 1 (must be <256)

It's because you didn't put code tags around your code:

[code]
   OCR1A = 207;// = (16*10^6) / (9600*8) - 1 (must be <256)
[/code]

... so it looks like this when you click Preview:

   OCR1A = 207;// = (16*10^6) / (9600*8) - 1 (must be <256)

This is explained in How To Use the Forum.

And I hope your code is indented properly. Without code tags, all the leading spaces are removed. Type control-T in the IDE editor to format it before posting.

To answer your question, you must use the volatile attribute on variables that are shared between interrupt routines and non-interrupt code (e.g., loop or anything called from loop).

volatile int timer;

Read more about it here, here and here.