Explain the significance of the volatile keyword in embedded C. Can a variable be both const and volatile?