Hey again,
I actually assist in teaching a course on programming the dragon12+ board. Here
are some ideas that I use with my students. They are enjoyable to program and
will hopefully help develop your programming skills as well as your knowledge of
the HCS12.
1) Simon Game
Have you ever played Simon? If not, play it for free here...
http://www.freegames.ws/games/kidsgames/simon/simon.htm
Once you understand how the game works, program it! There are 4 switches
(attached to Port H) on the dragon board. Use 4 of the LEDs (attached to Port
B) and if you feel like getting fancy, make 4 unique sounds with the speaker
(attached to Port T).
You should be able to make a fully functional Simon game on your board complete
with "random" sequences (I think math.h or one of those libraries has a rand()
function to return a random int).
This is a good lab for learning how to use nested loops, for loops, while loops,
and arrays.
2) Speed Game
Make a game that allows two players to test their reflexes. Give the players a
signal that the game has started (Turn LEDs on and/or make a beep on the
speaker). When the game has started, the players race to hit a button as fast
as they can.
Have the players play a best 3 out of 5 match and display the score actively on
the 7 segment LEDs.
If you can get your hands on some assembly libraries, you can get functions that
help you keep track of time (sorta). For instance, a function that lets you
pause for 1 ms can be useful in measuring the time it takes for a player to
respond and then you can display their reaction time to them. This is a fun
project.
Honestly, the speed game is an easier project. If it seems to trivial, try the
simon game. If that seems too trivial, then try programming space invaders or
something (I saw this done using the 8 LEDs and the 7 segment LEDs). I've
often thought about the code required to write Dance Dance Revolution on the
Dragon12 board using the 7 segments, the LEDs, and the 4 PTH switches.
If you want a smaller challenge, try writing your own function for the keypad on
the dragon12+. Or, if you have the regular Dragon12, try adding a keypad (You
can buy them for cheap on Jameco) and then write a function that uses it.