А Вы галочками баловались?
По поводу размера хекса: не обязательно использовать предлагаемые библиотеки, можно писать свои. А можно напрямую конфигурировать МК установкой соответствующих регистров по ходу выполнения программы, тем самым не таща за собой лишние функции библиотек.
к примеру:
Code
sub procedure SetPwm(dim MyData as byte)
CCPR1L=MyData
end sub
sub procedure StartPwm()
PR2 = %01100101
T2CON = %00000101
CCPR1L = %00000000
CCP1CON = %00001100
end sub
sub procedure StopPwm()
CCP1CON = %00000000
end sub
И уж если совсем не доверяете компилятору, можно просмотреть созданный файл ассемблера, поправить свой код.
вот то, что транслирует компилятор в асм:
Code
;MyProject.mbas,10 :: sub procedure SetPwm(dim MyData as byte)
;MyProject.mbas,11 :: CCPR1L=MyData
MOVF FARG_SetPwm_MyData+0, 0
MOVWF CCPR1L+0
;MyProject.mbas,13 :: end sub
L_end_SetPwm:
RETURN
; end of _SetPwm
_StartPwm:
;MyProject.mbas,15 :: sub procedure StartPwm()
;MyProject.mbas,16 :: PR2 = %01100101
MOVLW 101
MOVWF PR2+0
;MyProject.mbas,17 :: T2CON = %00000101
MOVLW 5
MOVWF T2CON+0
;MyProject.mbas,18 :: CCPR1L = %00000000
CLRF CCPR1L+0
;MyProject.mbas,19 :: CCP1CON = %00001100
MOVLW 12
MOVWF CCP1CON+0
;MyProject.mbas,20 :: end sub
L_end_StartPwm:
RETURN
; end of _StartPwm
_StopPwm:
;MyProject.mbas,25 :: sub procedure StopPwm()
;MyProject.mbas,26 :: CCP1CON=%00000000
CLRF CCP1CON+0
;MyProject.mbas,27 :: end sub
L_end_StopPwm:
RETURN
; end of _StopPwm