Так и будет всегда, пока пишешь дурацкие циферки вместо символических имен: Это написано через жопу:
OC1init:
clr OC1CON1 // нах не нужно
clr OC1CON2 // нах не нужно
clr OC1TMR // нах не нужно
mov # 100, W0 // давно пора заменить на макрос movi
mov W0, OC1R //
mov # 100, W0 // нах не нужно в Single Compare Single-Shot mode
mov W0, OC1RS //
mov # 0b0000000010010000, W0 ; trig from IC1 // давно пора заменить на макрос movi
mov W0, OC1CON2 //
mov # 0b0001110000000001, W0 ; one shot, clk-Tcy // давно пора заменить на макрос movi
mov W0, OC1CON1 //
clr OC1TMR
return
А это написано по-людски:
//----------------------------------------------------------------------------------------------
.macro movi lit16,file
mov #\lit16,w0
mov w0,\file
.endm
// Set desired pulse duration
movi #100,OC1R
// Trigger mode, trigered from IC1
movi #(1 << OCTRIG)|(16 << SYNCSEL0),OC1CON2
// Clocked by Fp, Single Compare Single-Shot mode: init OCx pin low, compare forces OCx pin high
movi #(7 << OCTSEL0)|(1 << OCM0),OC1CON1
clr OC1TMR
return
//----------------------------------------------------------------------------------------------
Разница заметна?