Blink program for a Christmas tree.

I have used this small program during Christmas holidays to have some blinking tree. I've used EBCS 68HC11 board (SCz board).

The program controls an IO port and makes that port blink at various speeds. The IO port is the port A, bit 5 (or 6). That port directly controls a triac via an optocoupler (MOC3041). You can check this bootstrap program by connecting a led on bit 5 or 6 of port A.

Implementation Notes:

  1. This program must not be linked with a startup file. It implements the startup entry point.
  2. The _start function must be at beginning of this file. By doing so, it will be mapped at address 0 by the linker and we avoid to have some jump to call it (since the boot will jump there).
  3. It must be compiled with -mshort -Os -fomit-frame-pointer to make sure it fits in less than 240 bytes (keep a few bytes at end for the stack).
  4. It must be compiled with -msoft-reg-count=0 or =1 to reduce the use of soft-registers (since they are mapped in RAM in .page0).
  5. The soft registers must be located at beginning of the .page0. This will clobber the beginning of the _start function. We don't care because this clobbers some initialisation part.
Source file: blink.c