Начиная со второй строки все CNPUB заменяются на CNPUB... Но по
мне, если это пункт 2 -- то тоже сомнительно. Лучше сделать
feature-макросы и писать что-то вроде #if MCU_HAVE_SUPER_TIMER...
Потому, что во-первых очевидней, во-вторых бывают неочевидные
зависимости, когда какая-либо функция (feature) контроллера может
потянуть за собой взаимосвязь сразу нескольких SFR-регистров или
наоборот, быть независимой от регистров. Я всё же склоняюсь к
варианту 4.