keypad.tmb for the IC51 Reads a 4 by 4 matrix keypad (Industrologic KP16 or equiv.) connected to the digital I/O and sends characters out the serial port. Exits program if character is received at serial port (key pressed on PC). ------------------------------- NEW 1 A=KEY --- continue if no key pressed 2 IF A=0 5 3 END --- read keypad subroutine 5 GOSUB 100 --- zero if no key pressed 6 IF A=0 1 --- print ASCII value 7 PRINT (A) 8 DELAY 2 9 GOTO 1 ------------------------------- --- Read 4 by 4 matrix keypad --- connected to digital I/O, --- return ASCII character or --- zero if no key pressed. --- Keypad to digital I/O: --- Col 1 DI1 Row 1 DI5 --- Col 2 DI2 Row 2 DI6 --- Col 3 DI3 Row 3 DI7 --- Col 4 DI4 Row 4 DI8 --- (This is the pinout of the --- Industrologic KP16 keypad) ------------------------------- 100 A=0 --- DI1 low, the rest high 101 DI=254 --- check row 1 102 IF DI5=1 105 103 A="1" 104 RETURN --- check row 2 105 IF DI6=1 108 106 A="4" 107 RETURN --- check row 3 108 IF DI7=1 111 109 A="7" 110 RETURN --- check row 4 111 IF DI8=1 121 112 A="*" 113 RETURN --- DI2 low, the rest high 121 DI=253 --- check row 1 122 IF DI5=1 125 123 A="2" 124 RETURN --- check row 2 125 IF DI6=1 128 126 A="5" 127 RETURN --- check row 3 128 IF DI7=1 131 129 A="8" 130 RETURN --- check row 4 131 IF DI8=1 141 132 A="0" 133 RETURN --- DI3 low, the rest high 141 DI=251 --- check row 1 142 IF DI5=1 145 143 A="3" 144 RETURN --- check row 2 145 IF DI6=1 148 146 A="6" 147 RETURN --- check row 3 148 IF DI7=1 151 149 A="9" 150 RETURN --- check row 4 151 IF DI8=1 161 152 A="#" 153 RETURN --- DI4 low, the rest high 161 DI=247 --- check row 1 162 IF DI5=1 165 163 A="A" 164 RETURN --- check row 2 165 IF DI6=1 168 166 A="B" 167 RETURN --- check row 3 168 IF DI7=1 171 169 A="C" 170 RETURN --- check row 4 171 IF DI8=1 173 172 A="D" 173 RETURN