When opportunity arose to provide a second reviewed by Francis Glassborow nor the comments in Mr Pont's letter, to which I intend to respond in the letters section of this issue.
The author first explains the scope of the book, and it's here that we find out that the title is not entirely representative of the book's content. "Using the Keil C compiler for the 8051-series Microprocessor in Simple Embedded Devices" would be more descriptive of what is actually present. Indeed, there is no focus on teaching C here, not even aspects of the C language or library that are affected by the embedded environment. This may be why the intended audience for the book is programmers familiar with desktop programming in C, C++ or Java. Given this assumption of previous programming background, some of the points made in the book are somewhat basic, and it would be useful for programmers with a mainstream background to be told why it is a sane idea to attempt to produce a time delay with an empty look that most familiar compilers would optimize away. The author has deliberately concentrated on a single 8-bit processor family, a reasonable choice but it really should be stated more prominently.
This is a book about software, not embedded hardware, though the examples given do include a fair amount of coverage of the physical details of devices the code is intended to control. There is also a considerable amount of coverage of the capabilities of the various devices in the 8051 family of 8-bit microprocessors, and it is here that the book's greatest strength lies. The author makes a point that this is not a book about hardware, and yet there is much background discussion of simple hardware devices. This is useful to provide context for the example code, but the introduction did lead me to expect a book focusing more on the software aspects and less on hardware.
Note that much of the book consists of printouts of code which is on the accompanying CD. This is not a decision which seems wise to me. The code is not particularly readable on paper, being printed entirely in a monospaced font, and there is no reason for any reader to type in out. The code is fairly well commented, but it was disappointing to see the author using names such as _MAIN_H for include guards. Authors should make more of an effort not to write code which is needlessly flirting with undefined behaviour. Too much of the code I see falls into this particular trap [of using reserved names for include guards] and I would have hoped that an experienced author would have warned against it, rather than propagating the bad practice. An explanatory note of why "void main" is used (a permitted extension in C, though not in C++) would be helpful, given that it is common in embedded programming but not on the desktop.
In conclusion: if you are inquisitive about some of the quirks of 8-bit microprocessors and would be interested to learn about one particular family of such processors, then the included Keil compiler and simulator may make this book worthwhile for you. If you are looking for a book offering an overview of how to use C in embedded systems, or a general text covering the huge variety of embedded systems, you should look elsewhere.