40
Jackrabbit (BL1800)
4.2.1 DEMOJR1.C
This sample program can be used to illustrate some of the functions of Dynamic C.
First, open the file DEMOJR1.C, which is in the SAMPLES/JACKRAB folder. The program
will appear in a window, as shown in
Figure 15 below (minus some comments). Use the
mouse to place the cursor on the function name WrPortI in the program and type <Ctrl-H>.
This will bring up a documentation box for the function WrPortI. In general, you can do
this with all functions in Dynamic C libraries, including libraries that you write yourself—
the Dynamic C User’s Manual provides more information. Close the documentation box
and continue.
Figure 15. Sample Program DEMOJR1.C
To run the program DEMOJR1.C, load it with the File > Open menu, then compile and run it
by pressing F9 or by selecting Run in the Run menu. The LED on the Prototyping Board
should start flashing if everything went well. If this doesn’t work review the following points.
The target should be ready, which is indicated by the message “BIOS successfully com-
piled...” If you did not receive this message or you get a communication error, recom-
pile the BIOS by typing <Ctrl-Y> or select Recompile BIOS from the Compile menu.
A message reports that “No Rabbit processor detected” in cases where the Jackrabbit
and Prototyping Board are not connected together, the wall transformer is not con-
nected, or is not plugged in. (The red power LED lights whenever power is connected.)
main(){
WrPortI(SPCR,NULL,0x84);
WrPortI(PADR,&PADRShadow,0xff);
while(1) {
BitWrPortI(PADR,&PADRShadow,1,2);
for(j=0; j<25000; j++);
BitWrPortI(PADR,&PADRShadow,0,2);
for(j=0; j<1000; j++);
} // end while(1)
} //
end of main
C programs begin with main
write to SPCR register to
initialize parallel port A
to turn off all LEDs
Start a loop
Set bit 2 to a “1”
LED DS3 off.
Time delay by counting
to 25,000.
Set bit 2 to a “0”
turning LED DS3 on
Count to 1000 for a shorter
time delay
End of the endless loop
Note: See Rabbit 2000 Microprocessor User’s Manual
(Software Chapter) for details on the routines that read and
write I/O ports.
NULL is a macro for a zero pointer
Write all 1’s to port A