Hardware-dependent addresses shall be defined symbolically to avoid change errors later. Data items that are mapped to actual hardware must have the volatile attribute. Bit masks shall be used instead of Bit field variables when possible to avoid hardware dependencies. Generating delays by counting clock cycles shall be avoided since the timing of a clock cycle can differ from one platform to another.