You need to create a C-language source file. You can use any editor to create your file, but the Imagecraft ICC11 integrated development environment has a program editor built into it, so we suggest you use that one.
To use the Imagecraft ICC11, you first need to click on
the ICC11 icon in the computer's desktop. You then need
to create a new file in the projects
directory.
For starters, try typing in the following program.
#include"kernel.c" void main(void){ int i; init(); OutString("Hello World"); OutChar(CR);OutChar(LF); PORTA = 0x00; while(1){ i++; if(i==0){ PORTA ^= 0xFF; OutString("Goodbye CRUEL World"); OutChar(CR);OutChar(LF); } } } #include"vectors.c"
The preceding program is somewhat more involved than the usual "Hello World" program you might have written for a UNIX operating system (OS) and it is significantly less complex than the program you would have written for the Windows OS.
The preceding program has two include files. The include
file kernel.c
contains the listing of several kernel functions. The kernel functions are special
subroutines that constitute something like a rudimentary
operating system for the MicroStamp11. Essentially these
functions encapsulate the interface to certain
micro-controller resources such as timers and I/O lines.
The other include file is vector.c
. This file
defines the absolute address for the program's start
position as well as certain interrupt vectors. In this
learning module, the only part of the program you need to
worry about lies within the scope of the main
program.
The function main
begins by declaring the integer
variable and by initializing the kernel functions.
This initialization is performed by the kernel function
init()
. The function init()
must always be
the first executable line in your program. After
initializing the kernel, your program uses kernel
functions OutString
and OutChar
to send
characters over the serial line to the PC. The function
OutString
sends a character string whereas
OutChar
sends a single character. In this program
we use OutChar
to send special characters CR
and LF
. CR
and LF
are logical names
for ASCII characters corresponding to line feed and
carriage return. So the end effect of sending these two
characters over the serial line is to cause the
Hyperterm
shell to start a new line.
After your program writes "Hello World" to the Hyperterm window, it sets all of the bits in the output port PORTA to zero. Remember PORTA is the logical name associated with pins 1-8 on the MicroStamp11. By setting these bits to zero we are setting the "output" pins on PORTA to their low TTL-logic value of zero volts. Remember that we've attached an LED to PA5 (pin 3), so when this command is executed, you'd expect the LED to be switched off.
After clearing PORTA, your program enters a
non-terminating while
loop. In this loop you first
increment the integer i
and then check to see if
i
is zero. If i==0
, then you toggle the
state of PORTA (causing the LED to blink) and output a
different string to Hyperterm. Remember that is a 16
bit word. This means that if
, then adding
one to this variable will reset the variable to zero. So
we expect the
condition to be periodically
satisfied. The end result is that you should see the LED
blinking on and off and the Hyperterm will spit out the
string "Goodbye CRUEL World" every time the LED blinks.