Corrections or clarifications to the contents of the published book will be posted here on an as-needed basis. If you find any errors in the book or find areas that could be made more understandable, please contact the author.
ERRATA
- Section 14.2.10 - Reset Circuit: RC Network, MN13811 Reset Supervisor, and Manual Reset - Page 141-142
-
Documented error: This section of the book, and the schematic on page 128, indicate that an MN13811
reset supervisor should be used on the SBC. This is incorrect. The MN13811 is open
drain in its inactive positon but asserts a low signal rather than a high signal
when a reset is required. Since the 8052 uses an active-high reset signal, the MN13811
will not properly reset the microcontroller. For this reason, the MN13811 should not
be used.
Further explanation: A suitable replacement may be the MAX810 which performs an identical function and is active-high, but the MAX810 is not available in the TO-92 package that the SBC was designed for--MAX810 is only available as a surface-mount part which may be difficult for the novice to solder onto a PCB. In any case, the PCB for the 8052.com SBC is not designed for the MAX810 package. However, both the Atmel AT89S8253 and the Dallas DS89C420 for which the SBC was designed have internal power-on reset circuits that make the power-up assertion of reset unnecessary. This means the only function of the reset supervisor is to reset the microcontroller if the power supply voltage goes out of tolerance. Since the SBC is powered by a typical power adapter (as opposed to a battery), the likelihood of a low-voltage situation is low.
Correction/Solution: If the SBC is being used simply for learning and experimenting with the 8052, the MN13811 may be completely omitted and the jumper JP5 put in the 1-2 position to enable the Resistor-Capacitor network. However, if either the Atmel AT89S8253 or the Dallas DS89C420 are being used, the RC network is not necessary to perform a power-on reset so jumper JP5 may be left completely unconnected. If the design of the SBC is being implemented in a new circuit, a suitable voltage supervisor (such as the MAX810) should be used instead of the MN13811.
- Appendix A - Instruction Set Table, DJNZ instructions - Page 289
-
Documented error: The instruction set table in Appendix A indicates incorrect
instruction mnemonics for instructions D8h through DFh, corresponding to the DJNZ
instructions stating that they are, for example, "DJNZ A,R0" when they should be
"DJNZ R0,relAddr". The detailed description of the DJNZ instruction on page 297 is,
however, correct.
- Chapter 12.5 - 16-bit division - Page 108, in "step 1" listing
-
Documented error: In the "Step 1: Shift Divisor as far left as possible", the third
and fourth lines of code are "MOV R2,#00h" and "MOV R3,#00h". Since the routine is
designed to be passed the divisor in R2 and R3, this will effectively clear the divisor
before the calculation begins. These two lines should be replaced with "MOV R4,#00h"
and "MOV R5,#00h" which will clear the internal working variables as was intended.
- Chapter 9.3 - Setting Serial Port Baud Rate - Page 53, in program listing
-
Documented error: The second line of the listing reads "MOV SMOD,#80h" which is
supposed to set the SMOD bit of the PCON SFR. Since SMOD is a bit, not an SFR, the
above instruction is invalid. It should be replaced with "ORL PCON,#80h" which will
set the high bit of PCON (which is the SMOD bit) by ORing it with the value #80h.
- Chapter 12.3 - 16-bit Subtraction - Page 104, in program listing
-
Documented error: The second comment reads ";Load the first value into R6 and
R7." It should read "; Load the second value into R4 and R5." As this is a comment
it does not affect the operation of the program but it may confuse understanding
of the instructions that follow.