When you're working embedded, most of the time (even in C) you won't find boilerplate functions like InitializeADC() or ReadADC(). You may be able to use C syntax for reading/writing processor peripheral registers but you'll still need to handle much of the grunt work yourself.
General purpose functions *could* be used but that means hauling around the extra code in the function for such things as argument validation and error trapping/reporting.
One thing you might want to do is download a demo version of the Imagecraft AVR C compiler. It's a full version but time limited to 30 days. It includes a GUI "Application Builder" where you specify the chip you're using and the clock speed and then point'n'click through the peripheral setup. When you're done it can write the skeleton of the C code (complete with a stub for main()) that handles the peripheral initialization.
RVKBASIC is a good starting place and there are a number of great articles on the program from Nuts and Volts. I can see if I can get permission to send them to you. I am waiting on permission to post them on the bastoc.com site, but I think the author will send them to you. I can ask if I can. There is an update coming out sometime today on RVKBASIC.