The wikipedia page on binomial distributions has several measures of confidence intervals. In R, they, and others, are implemented in the binom.confint
command in the binom package. There are costs and benefits to them all. You should look into them further and select the one you like the best.
Now that I've given the standard advice...I tend to believe that the extensive work on binomial CI's clearly demonstrate that trying to get an exact one is pointless. While they often can vary considerably in the proportion of coverage that's only because the tails can change dramatically for the distribution with p values that deviate by small amounts and the distribution of real values is discrete (i.e. the actual p-values really aren't that different reported by them).
When N is small you can usually just pick any CI and round it to values supported by your actual distribution and you get the same result. If you have an N of 10 and p = 0.2 there is no way you will ever replicate that experiment and get p = 0.04588727 (Wilson interval lower bound) because the number can't possibly appear. It's as impossible as the -0.04791801 from the CLT based interval you want to avoid because it's negative. Just enter 0 for the lower bound and 0.5 for the upper. The true proportion for your experiment can't be a value that can't be produced by the experiment, and the 95% CI is about what the results are of the experiment when repeated, not what mu is. If n is large then the CLT works pretty well anyway. It may not be the best but just round away from the mean one point and you'll usually be fine with a lot less effort than working out the other values (and it's often recommended to be conservative).