Septambic Keyer HOWTO

Tue Jan 30 18:58:24 EST 2001
James Fung ( and Steve Mann (

Programming the PIC

The latest code is on this WWW site, at This is the current version of the PIC 16C63 assembly code the class will first use. Feel free to make changes, bug fixes, or modify this GPL FreeSource program.

Many PICs are supported in GNU Linux, but unfortunately we needed to use a PIC that had enough input pins, and have not been able to find nonviral support for it. If anyone finds nonviral support for it, please let us know.

Go to the Bluetooth lab, in Sandford Fleming Building Room SF2202, and use the Virus2000, and run the 'MPLAB' software.

Go to 'file' and 'Create a New Project'. This opens up a dialogue box. Near the bottom, click on the .hex file, and click the bottom right button which opens up another dialogue box. Click ok. Then, click on the .hex file again, and, to the right, click on 'Add file' or whatever. Find the .asm file you're using.

Then find the 'Build All' option from the top drop down menus, and click it.

Then, find the 'Start Programmer' (or something similar) click it. Insert the PIC. The PIC has a gold mark on the top near pin 1. Place the PIC in the programmer so PIC pin 1 is in the corresponding pin 1 slot on the programmer.

There's a set of 5 options: Clock, Watchdog, Code Protect and so on. Look in your .asm file and see what it says about setting these. For instance a line like:

#include "P16C63.INC" __config _HS_OSC | _WDT_ON | _PWRTE_OFF | _CP_OFF | _BODEN_OFF
means you should set the Clock to "HS", Turn on Watchdo timer, and turn off everything else.

Click 'blank' to see if the device is erased.

Click 'Program' to program it with whatever is in the hex mapping window. (which'll be the hex code of the .asm program we just compiled).

Click 'verify' to make sure it worked ok.

And now you have a programmed PIC. Put it in an existing one-handed keyboard to verify everything is OK with the PIC.

Finally, to erase the PIC, place it in the UV erase, with the window facing down and turn on the eraser.

Wire up one of our printed circuit boards

Parts list

Get a blank circuit board.

Wire in the IC socket, resistors, capacitors, crystal, LED socket (RJ11), and keyer socket (RJ45). Until we get a picture up here, take a look at someone else's board to see how to place the components.

You have a choice to either connect a PS/2 cord directly to the board, or to solder a socket to the board. We prefer to solder the wires directly to the board. In this case, take a standard PS/2 cable (cord with male connector at both ends) and cut it in half. This can be used for 2 keyers (one half for each keyer). Connect the PS/2 cable by cutting the cable and connecting the wires directly to the board. Check the continuity to preserve the way that a PS/2 connector should be connected. NOTE THAT COLORS IN THE PS/2 CABLES ARE OFTEN ARBITRARY AND INCONSISTENT, E.G. THE RED WIRE IS OFTEN GROUND, OR THE BLACK WIRE MAY BE +5VOLTS, ETC.; IN GENERAL CHECK THE CONTINUITY AND DON'T TRUST OR GO BY THE COLORS OF THE PS/2 CABLE WIRES. For the PS/2 pinout, you can consult the Hardware Book. A search on "hwb" and "hardware book" on altervista ( should do the trick.

A strain relief for the PS/2 cable is a good idea.

Leave a good amount of cable when you wire cables up. This will help keep strain away from the board and the solder connections.

Connect the RJ45 cable to the board as follows:

KEYER wiring convention

This is our convention: Looking in the male RJ45 connector, with the clicky little handle on the top, lets name pin 1 the connection on the left, and proceed the number them to the right, with pin 8 the rightmost connection.

solder female for pcb mount, pins facing you, and the pins correspond to common, key7, key6, key5, key4, key3, key2, key1, as follows:

 c k k k k k k k
 o e e e e e e e
 m y y y y y y y
 m 7 6 5 4 3 2 1

|o   o   o   o   |
|                |
|  o   o   o   o |
|                |
|                |
|                |
|                |
|                |
|                |
|                |

For compatibility with previous keyers (e.g. if you meet one of us at a confernece or in class and want to swap keyers), you should adhere to this pinout convention, and so mount the keyer socket backwards on the bottom of the board. Ask one of us in class how to mount the RJ44 socket.

The switch numbers correspond to the left hand buttons, as shown in the following figure:

(for the benefit of the visually challenged, the above jpeg contents are roughly as follows)

finger          key switch number
------          --------
Pinkey finger = key1
Ring finger   = key2
Middle finger = key3
Index finger  = key4
Thumb switches = 5,6,7, with key5 being closest as the bug crawls
along the keyer from key4 (index finger key) to that switch.

Get a working handset, your working PIC, and test your board out.

making the handgrip for the keyer

Get some mouldable plastic, 7 switches and have fun!

Take a look at the septambic howto link from for more info.


This project has got this far thanks to the efforts of Adam Wozniak, and various students in the ECE1766 class over the past three years including Eric Moncrieff, Taneem Ahmedt, and numerous others who've contributed.


  2. keyers article ("keyers to the castle")

keyers2001.htm: examples from this year's class