با سلام خدمت دوستان
من ميخواستم كيبورد كامپيوتر را به avr متصل كنم. مداري ساده بستم تا كليد هاي فشار داده شده در كيبورد را در LCD نمايش بده كه موفق هم شدم. در اينترنت گشتم دو نمونه كد را پيدا كردم كه هر دوتا كد به خوبي كار نميكند و مشكل دارد. كد اولي كه اينجا ميذارم كار ميكنه فقط كليد هاي عددي سمت راست كيبورد با اين كد كار نميكنه. و براي تايپ اعداد حتما بايد از كليد هاي اعداد بالاي حروف ها استفاده شود. در حالي كه من علاوه بر تايپ توسط اعداد بالاي صفحه كليد ميخوام از اعداد و كليد هاي اعداد سمت راست كيبورد هم استفاده كنم در حالي كه با اين كد فقط حروف و اعداد بالاي حروف و كليد هاي تركيبي و f ها قابل تشخيص است.
دوستان اگه ممكنه راهنمايي كنيد كد هاي كليد هاي سمت راست اگر ميدادنيد اعلام كنيد. كارم بدجور گيره. هركاري ميكنم صفحه كليد اعداد سمت راست راه نمي افته و در lcd چيزي نشان نميده.

يك كد ديگه هم دارم كه باز اعداد سمت راست صفحه كليد را فعال ميكنه ولي كليد هاي تركيبي را خراب ميكنه و درست كار نميكنه. مثلا علامت @ را درست نشان نميده و ....

ولي كد اولي كه گذاشتم كامل تره ولي فقط تنها مشكل اينه كه اعداد صفحه كليد سمت راست كيبورد را فعال نميكنه.
دوستان راهنمايي كنيد ممنون ميشم.


كد اولي :


$regfile = "m32def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , _
Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
Config Lcd = 16 * 2

Config Keyboard = Pind.2 , Data = Pind.3 , Keydata = Keydata
'clock=pind.2 , data=pind.3

Dim K As Byte

Waitms 100
Cls

Main:
K = Getatkbd()
Select Case K:
Case 44:
Cls
Home
Case 13:
Lowerline
Case 9:
Shiftcursor Right
Shiftcursor Right
Shiftcursor Right
Shiftcursor Right
Case 8:
Shiftcursor Left
Lcd " ";
Shiftcursor Left
Case 141:
Cls
Lcd " Press F1"
Case 142:
Cls
Lcd " Press F2"
Case 143:
Cls
Lcd " Press F3"
Case 144:
Cls
Lcd " Perss F4"
Case 152:
Cls
Lcd " Press F5"
Case 153:
Cls
Lcd " Press F6"
Case 154:
Cls
Lcd " Press F10"
Case 158:
Cls
Lcd " Press F8"
Case 159:
Cls
Lcd " Press F9"
Case 163:
Cls
Lcd " Press F11"
Case 164:
Cls
Lcd " Press F12"
Case 10:
Cls
Lcd " Press ESC"
Case 28:
Home
Case 30:
Upperline
Case 31:
Lowerline
Case 134 :
Shiftcursor Left
Case 135:
Shiftcursor Right
Case Else Lcd String(1 , K)
End Select
jmp main
End
'end program

Keydata: 'designed by ETRmodern
'normal keys lower case
Data 0 , 159 , 0 , 152 , 143 , 141 , 142 , 164 , 0 , 154 , 158 , 153 , 144 , 9 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 0 , 0 , 0 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 0 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 47 , 108 , 59 , 112 , 45 , 0
Data 0 , 0 , 39 , 0 , 91 , 61 , 0 , 0 , 0 , 0 , 13 , 93 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 0 , 0 , 134 , 28 , 0 , 0 , 0
Data 0 , 44 , 31 , 0 , 135 , 30 , 10 , 0 , 163 , 0 , 0 , 0 , 0 , 0 , 0 , 0


'shifted keys UPPER case
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 64 , 0
Data 0 , 67 , 88 , 68 , 69 , 36 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 94 , 0 , 0 , 0 , 77 , 74 , 85 , 38 , 42 , 0
Data 0 , 60 , 75 , 73 , 79 , 41 , 40 , 0 , 0 , 62 , 63 , 76 , 58 , 80 , 95 , 0
Data 0 , 0 , 34 , 0 , 123 , 43 , 0 , 0 , 0 , 0 , 13 , 125 , 0 , 166 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 44 , 0 , 0 , 0 , 0 , 10 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0


كد دوم :

$regfile = "m32def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , _
Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0

Config Keyboard = Pind.2 , Data = Pind.3 , Keydata = Key

Dim A As Byte
Do
A = Getatkbd()
If A <> 0 Then
Lcd String(1 , A)
End If
Loop
End

Key:
Keydata:

'normal keys lower case

Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0

Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0

Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0

Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0

Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0

Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0

Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0

Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0



'shifted keys UPPER case

Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0

Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0

Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0

Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0

Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0

Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0

Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0

Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0