30
RabbitCore RCM2100
4.5 Sample Program: FlashLEDs.c
In addition to Dynamic C’s implementation of C-language programming for embedded
systems, it supports assembly-language programming for very effiicient processor-level
control of the module hardware and program flow. This application is similar to
FlashLED.c
and
ToggleLEDs.c
, but uses assembly language for the low-level port
control within cofunctions, another powerful multitasking tool.
Compile & Run Program
Open the source file
FlashLEDs.c
, located in the
Samples\RCM2100
folder. Press
F9
to compile and run the program.
All the LEDs on the Prototyping Board (including DS4 and DS5, if you have installed
them) will light. DS2 and DS3 will begin flashing at different rates, and will continue
doing so until the program is interrupted.
Program Description
Dynamic C permits the use of assembly language statements within C code. This program
creates three functions using assembly language statements, then creates a C cofunction to
call two of them. That cofunction is then called within
main()
.
Within each of the C-like functions, the
#asm
and
#endasm
directives are used to indicate
the beginning and end of the assembly language statements.
In the function
initialize_ports( )
, port A is initialized to be all outputs while bit 0
of port E is initialized to be an output.
In the function
ledon( )
, a 0 is written to the port A bit corresponding to the desired
LED (0, which equals DS3, or 1 which equals DS4), turning that LED on. The
ledoff( )
function works exactly the same way except that a 1 is written to the bit,
turning the selected LED off.
Finally, in the cofunction
flashled( )
, the LED to be flashed, the on time in millisec-
onds, and the off time in milliseconds are passed as arguments. This function uses an end-
less
for(;;)
loop to call the
ledon( )
and
ledoff( )
functions, separated by calls to
the wait function
DelayMs( )
. This sequence will make the indicated LED flash on and
off.
As is proper in C program design, the contents of
main( )
are almost trivial. The pro-
gram first calls
initialize_ports()
, then begins an endless
for(;;)
loop. Within
this loop, the program:
1. Calls the library function
hitwd()
, which resets the microprocessor’s watchdog timer.
(If the watchdog timer is not reset every so often, it will force a hard reset of the sys-
tem. The purpose is to keep an intermittent program or hardware fault from locking up
the system. Normally, this function is taken care of by the Virtual Driver, but it is called
explicitly here).
Содержание RCM2100
Страница 1: ...RabbitCore RCM2100 C Programmable Module with Ethernet Getting Started Manual 019 0093 010915 C...
Страница 28: ...24 RabbitCore RCM2100...
Страница 43: ...C NONE CONFORMAL COATING BATTERY BACK UP BANK SELECT...
Страница 45: ...B NONE B NONE...
Страница 47: ......