A programmer for 89c51/52.
Use MAX 232 instead of DS232.
can be easily wired up on breadboard.
http://chaokhun.kmitl.ac.th/~kswichit/easy2/easy2.htm
The home page of the above link also list some interesting microcontroller based projects.
http://www.kmitl.ac.th/~kswichit/