Fiz umas modificações no código. Fiz um pequeno teste e as saídas estão coerentes. Como estou usando um potenciômetro na entrada do ADC (como posição atual), a medida que vou aproximando da referência o sinal do erro e de controle vão diminuindo. O que eu achei estranho na simulação no proteus foi o fato de "ativar" o PWM só quando posiciona o potenciômetro na referência. Pelo código não tem como acontecer isto, pode algo do proteus ou so. Usei o hyperterminal tbm.
Quando o senhor puder, eu lhe envio os arquivos.
Att