πŸ“‚ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚: orion128-clava-atmega-168_clean.html


Β 

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° Π½Π° ΠžΡ€ΠΈΠΎΠ½-128 - atmega-168

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π° atmega-168 ΠΈ МВ8816 - ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π° ΠžΡ€ΠΈΠΎΠ½-128

Π”Π°Ρ‚Π° обновлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ 12.06.2022

И Π²ΠΎΡ‚ сСгодня 12/06/2022 Π½Π°ΠΊΠΎΠ½Π΅Ρ† Ρ‚ΠΎ добрался Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ»Π°Ρ‚ΠΊΠΈ. ΠŸΠ»Π°Ρ‚ΠΊΡƒ ΠΏΠΎΠΊΡƒΠΏΠ°Π» Π΅Ρ‰Π΅ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ Ρƒ Рустама ΠΈΠ· Π’ΠΎΠ»ΡŒΡ‚Ρ‚ΠΈ. АтмСгу ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π» Рустам.

ДокумСнтация ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π½Π° zx-pk Π²ΠΎΡ‚ ссылка:

ΠŸΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° АтмСги 168

Моя сборка

https://zx-pk.ru/threads/33211-universalnyj-kontroller-ps-2-klaviatury-dlya-kompyuterov-s-matrichnymi-klaviaturami.html

НСмного Ρ†ΠΈΡ‚ΠΈΡ€ΡƒΡŽ с сайта:

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ PS/2 ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² с ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°ΠΌΠΈ. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ΡΡ простая схСма ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π±Π΅Π·Π²Π΅ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° PS/2 ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, подходящСго для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° "Π΄Ρ€Π΅Π²Π½ΠΈΡ…" Π±Ρ‹Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° Π‘ΠΏΠ΅ΠΊΡ‚Ρ€ΡƒΠΌ, ΠžΡ€ΠΈΠΎΠ½, ΠšΠΎΡ€Π²Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π² конструкции ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… использовалась матричная ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π΄ΠΎ 8*16. Код написан Π² срСдС Ардуино для ядра MiniCore, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с АтмСга8, 48, 168, 328 Π±Π΅Π· ΠΊΠ²Π°Ρ€Ρ†Π° , Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π½Π° стандартном Ардуино Нано ΠΈΠ»ΠΈ Π£Π½ΠΎ. Π― использовал АтмСгу168. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ систСмы - ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ MT8816. На Али ΠΈΡ… ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‚ сотнями ΠΏΠΎ бросовым Ρ†Π΅Π½Π°ΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° проста ΠΈ написана Π² индийском стилС. Она содСрТит массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСт соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ сканкодом ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π±Π΅Π·Π²Π΅ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ. Π’ΡƒΠΏΠΎ Π·Π°ΠΌΡ‹ΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹. Π’Π΅ΡΡŒ сСкрСт Π² микросхСмС MT8816. Π­Ρ‚ΠΎ управляСмая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠ· 128 ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π›ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΎΠΌΠΊΠ½ΡƒΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Π½Π΅ трСбуСтся Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сигналов ΠΎΡ‚ процСссора. Волько ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ 5Π’. И ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ. МоТно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ с нСсколькими, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π΅ΠΆΠΈΠΌΡ‹ "горячСй" клавишСй.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠžΡ€ΠΈΠΎΠ½128 - atmega168 сборка ΠΊΠ°ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π° ΠžΡ€ΠΈΠΎΠ½-128

Ко ΠΌΠ½Π΅ ΠΏΠ»Π°Ρ‚ΠΊΠ° ΠΏΡ€ΠΈΡˆΠ»Π° ΡƒΠΆΠ΅ с впаяной Π°Ρ‚ΠΌΠ΅Π³ΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΡˆΠΈΡ‚ΠΎΠΉ. МнС ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠžΡ€ΠΈΠΎΠ½128 - atmega168 сборка ΠΊΠ°ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π° ΠžΡ€ΠΈΠΎΠ½-128

Вакая ΠΏΠ»Π°Ρ‚ΠΊΠ° Ρƒ мСня

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠžΡ€ΠΈΠΎΠ½128 - atmega168 сборка ΠΊΠ°ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π° ΠžΡ€ΠΈΠΎΠ½-128Β  Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ схСму Π² *.pdf

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ сборки ΠΏΠ»Π°Ρ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² PS/2 , C1,C2,C3 - Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ кондСнсаторы. ΠšΠ΅Ρ€Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ 0.01ΠΌΠΊΠ€ ΠΈ Π±ΠΎΠ»Π΅Π΅.

ΠšΠ²Π°Ρ€Ρ† -16 ΠΌΠ³Ρ†

R2- 1 Мом

R1 - 10 ΠΊΠΎΠΌ

C3, C4 -0.1 ΠΌΠΊΡ„

ЭлСктролитичСский ΠΎΡ‚ 100ΠΌΠΊΠ€ 10Π’. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ Π² основном зависит ΠΎΡ‚ качСства источника питания. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ J2 ΠΈ J3 слуТат для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ. РазъСм H2 Π½Π° ΠΏΠ»Π°Ρ‚Π΅ DIP-40 - ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ. ΠšΠ²Π°Ρ€Ρ† ΠΈ Π΅Π³ΠΎ обвязку Π½Π° ΠΎΠ±Π΅ΠΈΡ… ΠΏΠ»Π°Ρ‚Π°Ρ… Π·Π°ΠΏΠ°ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ - МК Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° 8ΠœΠ“Ρ†.

И Ρ‚Π°ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ сборку...

И Ρ‚Π°ΠΊ ΠΏΠΎΠΊΠ° ΠΊΠ²Π°Ρ€Ρ† ΠΈ Π΅Π³ΠΎ обвязку Π½Π΅ ΡΡ‚Π°Π²Π»ΡŽ. (Если Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ). ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ сборки.

Β 

Β 

ΠŸΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° для ΠžΡ€ΠΈΠΎΠ½Π°-128

#include <PS2KeyRaw.h>
#define AX0 4
#define AX1 5
#define AX2 6
#define AX3 7
#define AY0 8
#define AY1 9
#define AY2 10
#define RSTMT 14
#define CSMT  15
#define DATMT 16
#define STBMT 17
#define DATAPIN 2
#define IRQPIN  3

volatile boolean d = HIGH;

uint8_t table[128] = {127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,0,127,127,32,48,127,127,127,1,17,16,33,49,127,
127,3,2,18,34,51,50,127,127,112,4,19,36,35,52,127,127,115,116,100,20,84,68,127,127,127,114,99,83,67,66,127,
127,127,98,82,81,64,65,127,127,127,127,97,127,80,127,127,127,127,127,127,127,127,127,127,127,113,96,127,127,127,127,127,
127,127,127,127,127,127,64,127,127,127,127,52,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127};

PS2KeyRaw keyboard;
void setup() {
  //Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠΎΡ€Ρ‚ΠΎΠ²
  pinMode(AX0, OUTPUT);   //AX0
  pinMode(AX1, OUTPUT);   //AX1
  pinMode(AX2, OUTPUT);   //AX2
  pinMode(AX3, OUTPUT);   //AX3
  pinMode(AY0, OUTPUT);   //AY0
  pinMode(AY1, OUTPUT);   //AY1
  pinMode(AY2, OUTPUT);   //AY2
  pinMode(RSTMT, OUTPUT); //RES
  pinMode(CSMT, OUTPUT);  //CS
  pinMode(DATMT, OUTPUT); //DAT
  pinMode(STBMT, OUTPUT); //STB
  //Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹
  keyboard.begin( DATAPIN, IRQPIN );
  //Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ MT8816
  SetAddr(0);
  digitalWrite(RSTMT, LOW);
  digitalWrite(CSMT, LOW);
  digitalWrite(DATMT, LOW);
  digitalWrite(STBMT, LOW); //инициализация
  digitalWrite(CSMT, HIGH); //Π²Ρ‹Π±ΠΎΡ€ Ρ‡ΠΈΠΏΠ°
  digitalWrite(RSTMT, HIGH);
  digitalWrite(RSTMT, LOW);  //сброс
  digitalWrite(CSMT, LOW);
  
  SetAddr(table[0x12]);
  SetKey(LOW);
}
void SetAddr(uint8_t addr) {
  digitalWrite(AX0,bitRead(addr,0));
  digitalWrite(AX1,bitRead(addr,1));
  digitalWrite(AX2,bitRead(addr,2));
  digitalWrite(AX3,bitRead(addr,3));
  digitalWrite(AY0,bitRead(addr,4));
  digitalWrite(AY1,bitRead(addr,5));
  digitalWrite(AY2,bitRead(addr,6));
}
void SetKey(boolean data){
   digitalWrite(CSMT, HIGH); //Π²Ρ‹Π±ΠΎΡ€ Ρ‡ΠΈΠΏΠ°
   digitalWrite(STBMT, HIGH); //строб on
   digitalWrite(DATMT, data); //Π΄Π°Π½Π½Ρ‹Π΅
   digitalWrite(STBMT, LOW); //строб off    
   digitalWrite(CSMT, LOW);   
}
void loop()
{
  if( keyboard.available() ){
    int c = keyboard.read(); //Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
    switch (c) {
      case 0xE0:              //Ссли считался прСфикс 0xE0
        break;
      case 0xF0:              //Ссли считался прСфикс 0xF0 (отпусканиС клавиши)
        d = LOW;
        break;
      case 0x66:              //Ссли считался ΠΊΠΎΠ΄ 0x66 [BS]
        SetAddr(table[0x12]);
        SetKey(d);
        SetAddr(table[0x45]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x6B:              //Ссли считался ΠΊΠΎΠ΄ 0x6B [Left]
        SetAddr(table[0x12]);
        SetKey(d);
        SetAddr(table[0x2E]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x72:              //Ссли считался ΠΊΠΎΠ΄ 0x72 [Down]
        SetAddr(table[0x12]);
        SetKey(d);
        SetAddr(table[0x36]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x75:              //Ссли считался ΠΊΠΎΠ΄ 0x75 [Up]
        SetAddr(table[0x12]);
        SetKey(d);
        SetAddr(table[0x3D]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x74:              //Ссли считался ΠΊΠΎΠ΄ 0x74 [Right]
        SetAddr(table[0x12]);
        SetKey(d);
        SetAddr(table[0x3E]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x76:              //Ссли считался ΠΊΠΎΠ΄ 0x76 [Edit]
        SetAddr(table[0x12]);
        SetKey(d);
        SetAddr(table[0x16]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x58:              //Ссли считался ΠΊΠΎΠ΄ 0x58 [Caps lock]
        SetAddr(table[0x12]);
        SetKey(d);
        SetAddr(table[0x1E]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x0D:              //Ссли считался ΠΊΠΎΠ΄ 0x0D [Ext mode]
        SetAddr(table[0x12]);
        SetKey(d);
        SetAddr(table[0x59]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x41:              //Ссли считался ΠΊΠΎΠ΄ 0x41 [,]
        SetAddr(table[0x59]);
        SetKey(d);
        SetAddr(table[0x31]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x49:              //Ссли считался ΠΊΠΎΠ΄ 0x49 [.]
        SetAddr(table[0x59]);
        SetKey(d);
        SetAddr(table[0x3A]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x4C:              //Ссли считался ΠΊΠΎΠ΄ 0x4C [;]
        SetAddr(table[0x59]);
        SetKey(d);
        SetAddr(table[0x44]);
        SetKey(d);
        d = HIGH;
        break;
      case 0x52:              //Ссли считался ΠΊΠΎΠ΄ 0x52 ["]
        SetAddr(table[0x59]);
        SetKey(d);
        SetAddr(table[0x4D]);
        SetKey(d);
        d = HIGH;
        break;
      default:  
        SetAddr(table[c]);
        SetKey(d);
        d = HIGH;
    }
  }
}

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° РК86

ΠœΠΈΠΊΡ€ΠΎΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠ½ΠΎΠΏΠΊΠ°Ρ… РК86

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π° Atmega48 PC/2 ΠΎΡ‚ IBM Π² Π”Π˜ΠŸΠ΅

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ МБ7007

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° РК86 Π½Π° мСханичСских ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ…

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ ΠšΠΎΡ€Π²Π΅Ρ‚Π°

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° Π½Π° АтмСга168

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° РК86+PC Π½Π° мСханичСских ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ…

Β 

Β 

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈ интСрСсныС ΡΡ‚Π°Ρ‚ΡŒΠΈ

На ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ страницу  На Π³Π»Π°Π²Π½ΡƒΡŽ страницу  На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ страницу

Β