Keyboard PS/2 to Parallel converter
Dave Dunfield
dave06a at dunfield.com
Wed Jan 9 09:46:26 CST 2008
>> If anyone is interested, I have a very small bit of 8051 code which reads an
>> attached PC keyboard, providing the scan codes over an RS-232 link. It also
>> supports commands to set LEDs on/off etc. I specifically avoided using the
>> P1 line in my design (full 8-bits parallel I/O available even on an 8031),
>> so these are free, making it very trivial to modify this to output parallel
>> instead of serial - it would also be very easy to add a translate table
>> and recognition of shift/ctrl modifiers so that it would output fully decided
>> ASCII.
> have you just the code or even the circuit PCB layout?
I've built up hand-wired prototypes, but I have not laid out a PCB.
The schematic is just an 8051 with power/crystal attached, or an 8031
with external ROM and address latch as per any 8051/8031 datasheet.
The PC keyboard clock and data lines are attached to the pins indicated
in the comments in my code. If you want RS-232 levels, you need a level
convertor (MAX232 etc.) on the 8051/31 RX/TX signals.
> And have you an idea to how to transform the circuit from serial to
> parallel?
Instead of polling for TX ready and writing the scancode to SBUF, just
write it to P1 (8-bit parallel output). You will also need a key-down
strobe, which you can implement via another pin, using key-down scancodes
to set, and key-up scancodes to clear.
Assuming you want ASCII instead of scancodes, you would need a translate
table (scancode to ASCII), and to recognize and track the state of the
SHIFT, CTRL keys and CAPS-LOCK state, either using alternate translate
tables (most flexible), or modifying the codes from one table accordingly.
Implementing rollover properly requires a bit more logic - once you have
processed a key-down, you must queue any other scancodes you receive until
you get the corresponding key-up, then process the queued codes after you
have released the strobe.
You can get fancier, implementing auto-repeat etc. if you like, the logic
is pretty straightforward (if key-down persists beyond the initial delay,
begin toggling the strobe at the repeat rate).
Dave
--
dave06a (at) Dave Dunfield
dunfield (dot) Firmware development services & tools: www.dunfield.com
com Collector of vintage computing equipment:
http://www.classiccmp.org/dunfield/index.html
More information about the cctalk
mailing list