{\rtf1\ansi\ansicpg1252\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier;}} {\colortbl\red0\green0\blue0;} \deflang2057\pard\plain\f2\fs20 \par ; +5 >--------------------.--------------------. \par ; 1N4148 | | \par ; RX >------|>|--. .|. | \par ; TX <---. | 4K7 | | | 4 x 10K \par ; | .--' |_| PICAXE-18X | \par ; | | 1N4148 | .----..----. | .-------------.-------===---. \par ; KI >---^----|-----------|--->| A2 A1 |<---|--' .---------.-|-------===---\{ \par ; KO <---.----^----|<|----|----| SO A0 |<---|----' .-------|-|---.---===---\{ \par ; | .-----------|--->| SI I7 |<---|------' .-----|-|-.-|---===---\{ \par ; .|. | `--->| RST I6 |<---|--------' | | | | | \par ; 10K | | \}----------------| 0V +V |----' .-^-^-^-^-. | \par ; |_| | .-------------| O0 O7 |-----------|>|---| 7 8 9 A | | \par ; | | | .----------| O1 O6 |-----------|>|---| 4 5 6 B | | \par ; | | | | .-------| O2 O5 |-----------|>|---| 1 2 3 C | | \par ; | | | | | .----| O3 O4 |-----------|>|---| * 0 # D | | \par ; | | | | | | `----------' .--------|>|---| E F G H | | \par ; | | | | | `------------------' .------|>|---| I J K L | | \par ; | | | | `-----------------------' .----|>|---| M N O P | | \par ; | | | `----------------------------' .--|>|---| Q R S T | | \par ; | | `---------------------------------' `---------' | \par ; | | 8 x 1N4148 | \par ; | | | \par ; 0V >---^----^---------------------------------------------------------------^-- \par \par \par SYMBOL byte = b0 \par SYMBOL lookupPtr = b1 \par SYMBOL rowBits = b2 \par SYMBOL colBits = b3 \par \par SYMBOL RX = 2 \par SYMBOL RX_BAUD = N4800 ' 9600 baud @ 8MHz \par \par PowerOnReset: \par \par SETFREQ M8 \par \par ReadyForKeyPress: \par \par pins = $FF \par \par WaitForkeyRelease: \par \par byte = pins & %11000011 \par IF byte <> 0 THEN WaitForKeyRelease \par \par WaitForKeyPress: \par \par byte = pins & %11000011 \par IF byte = 0 THEN WaitForKeyPress \par \par HandleKeyPress: \par \par byte = byte / %01000000 | byte & $0F \par READ byte,lookupPtr \par LOOKUP lookupPtr,(%00000001,%00000010,%01000000,%10000000),colBits \par lookuPPtr = lookupPtr + %11000011 + 1 \par \par rowBits = %1000000 \par \par CheckIfThisRowHasKeyPress: \par \par pins = rowBits \par byte = pins & colBits \par IF byte <> 0 THEN FoundKeyPress \par \par rowBits = rowBits / 2 \par lookupPtr = lookupPtr + 4 \par IF rowBits <> %00000000 THEN CheckIfThisRowHasKeyPress \par \par GOTO WaitForKeyRelease \par \par FoundKeyPress: \par \par READ lookupPtr,byte \par \par SERTXD(byte) \par SERIN RX,RX_BAUD,(byte) \par \par GOTO ReadyForKeyPress \par \par EEPROM %00000001,(0) \par EEPROM %00000010,(1) \par EEPROM %00000011,(0) \par EEPROM %01000000,(2) \par EEPROM %01000001,(0) \par EEPROM %01000010,(1) \par EEPROM %01000011,(0) \par EEPROM %10000000,(3) \par EEPROM %10000001,(0) \par EEPROM %10000010,(1) \par EEPROM %10000011,(0) \par EEPROM %11000000,(2) \par EEPROM %11000001,(0) \par EEPROM %11000010,(1) \par EEPROM %11000011,(0) \par \par EEPROM ("789A") \par EEPROM ("456B") \par EEPROM ("123C") \par EEPROM ("*0#D") \par EEPROM ("EFGH") \par EEPROM ("IJKL") \par EEPROM ("MNOP") \par EEPROM ("QRST") \par \par \par }