volatile - "изменчивая" во времени - употребляется для указания типа доступа "всегда обращаться". В явном виде это относится к портам и счётчикам/таймерам. Доступ к переменным без модификатора volatile оптимизатор может организовать по своему усмотрению. И не важно глобальная переменная или нет