
Das Blinkenlights 15
limited to a few lines of C or assembly, so there is very little room for program-
ming errors to occur. And because almost all embedded systems have LEDs, the
underlying concept is extremely portable.
The superstructure of the Blinking LED program is shown below. This part of the
program is hardware-independent. However, it relies on the hardware-dependent
functions toggleLed and delay to change the state of the LED and handle the tim-
ing, respectively.
/**********************************************************************
*
* Function: main()
*
* Description: Blink the green LED once a second.
*
* Notes: This outer loop is hardware-independent. However,
* it depends on two hardware-dependent functions.
*
* Returns: This routine contains an infinite loop.
*
**********************************************************************/
void
main(void)
{
while (1)
{
toggleLed(LED_GREEN); /* Change the state of the LED. */
delay(500); /* Pause for 500 milliseconds. */
}
} /* main() */
toggleLed
In the case of the Arcom board, there are actually two LEDs: one red and one
green. The state of each LED is controlled by a bit in a register called the Port 2
I/O Latch Register (P2LTCH, for short). This register is located within the very
same chip as the CPU and takes its name from the fact that it contains the latched
state of eight I/O pins found on the exterior of that chip. Collectively, ...