Designing and implementing software for embedded systems with limited power resources is a challenging task. This paper focuses on software development problems in systems powered by harvested ambient energy. Software modularity and platform independence are critical design aspects of such systems. The first part of the paper is a short introduction to embedded systems with limited power resources. The second part discusses methods of efficient software development using C language for energy-critical systems.