dllbridge

Ext_RAM_Rom_03_03

Aug 14th, 2025
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.24 KB | None | 0 0
  1.  
  2.  
  3. //  EXT_ROM_Ram_03 2025 August 14 ( 10:24 )
  4. //  КР580ВВ55А РАБОТАЕТ! с резистором pull-up к /WR
  5. //  Записали число 0b10101010 в порт А ( 82С55 )
  6.  
  7. // #2 !!!!
  8.  
  9.  
  10.   const int CS_PIN    = 11;                                                            // /CS (Chip Select)    82C55
  11. //const int RESET_PIN = 19;   //  A5                                                   // Reset                82C55
  12.   #define RESET_PIN     A5                                                             // Reset                82C55
  13.   const int OE_PIN    = 12;                                                            // Output Enable     74HCT573
  14.   const int LE_PIN    = 13;                                                            // Latch  Enable     74HCT573
  15.  
  16.  
  17. const int DATA_PINS[] = {2, 3, 4, 5, 6, 7, 8, 9};                                    // Пины данных для 74HCT573
  18.  
  19.  
  20. ////////////////////////////////////////////////
  21. void setup()
  22. {
  23.  
  24.      pinMode(CS_PIN,    OUTPUT);  digitalWrite(CS_PIN,   1);                            // Запрет выбора ВВ55
  25.      pinMode(RESET_PIN, OUTPUT);
  26.      pinMode(OE_PIN,    OUTPUT);  digitalWrite(OE_PIN, LOW);                            //  74HCT573 output enable
  27.      pinMode(LE_PIN,    OUTPUT);  digitalWrite(LE_PIN,   1);
  28.  
  29.      for(int i = 0; i < 8; i++)
  30.      {
  31.          pinMode(DATA_PINS[i], OUTPUT);
  32.      }
  33.  
  34.  
  35.     digitalWrite(RESET_PIN, 1);        delay(50);                                           //    Сброс КР580ВВ55А
  36.     digitalWrite(RESET_PIN, 0);        delay(50);
  37.      
  38.  
  39.  
  40.      
  41.      // STEP 1                                                    //  запишем байт в 74HCT573 ( /WR, /RD, A1, A0 )
  42.                                                                   // Для управления ВВ55
  43.      set_value(0b00000111);   // delay(30);                         //   A1 = 1, A0 = 1 ( выбирают регистр РУС)
  44.      digitalWrite(LE_PIN,   0);                                   //  /WR = 0, /RD = 1  (разрешение записи)
  45.      
  46.  
  47.      // STEP 2  
  48.  
  49.  
  50.      set_value(0b10000000);    // delay(30);                        // 10000000 - все порты ВВ55, как выходы ( режим 0 )
  51.      digitalWrite(CS_PIN,   0); //delay( 10);                        // Выбран (для записи) ВВ55
  52.      digitalWrite(OE_PIN,   1);  // ??
  53.      digitalWrite(CS_PIN,   1); //delay(30);  
  54.      digitalWrite(OE_PIN,   0); // ??
  55.  
  56.      // STEP 3        Попробуем записать число 85 в порт А
  57.  
  58.      digitalWrite(LE_PIN,   1);   //delay(30);    
  59.      set_value(0b00000100);       //delay(30);                         //   A1 = 0, A0 = 0 ( выбираем порт А )
  60.      digitalWrite(LE_PIN,   0);   //delay(30);                          //  /WR = 0, /RD = 1  (разрешение записи)    
  61.  
  62.      set_value(0b10101010);     //delay(30);                        // 10000000 - все порты ВВ55, как выходы ( режим 0 )
  63.      digitalWrite(CS_PIN,   0);  delay( 40);                        // Выбран (для записи) ВВ55
  64.      digitalWrite(OE_PIN,   1);  // ??
  65.      digitalWrite(CS_PIN,   1); //delay(30);    
  66.      digitalWrite(OE_PIN,   0);  // ??
  67.      digitalWrite(LE_PIN,   1);  
  68.  
  69.      delay(2010);
  70.      to_port_A(0b01010101);  //delay(2010);
  71. }
  72.  
  73.  
  74.  
  75.  
  76. /////////////////////////////////////////////////
  77. void loop()
  78. {
  79.    
  80.  
  81.      for(int i1 = 0; i1 <  8; i1++)   {
  82.      for(int i2 = 0; i2 <  8; i2++)   { to_port_A(1 << i2); delay(250);  }
  83.      for(int i3 = 7; i3 >= 0; i3--)   { to_port_A(1 << i3); delay(250);  }  }  
  84.  
  85.      
  86.  
  87.      for(int i = 0; i < 10; i++)                                           //
  88.      {
  89.          to_port_A(170);   delay( 500);  
  90.          to_port_A( 85);   delay(1000);          
  91.      }
  92.  
  93.      for(int i = 0; i < 256; i++)                                           // Последовательно включаем биты в порту A
  94.      {  
  95.          to_port_A(i);
  96.          delay(100);                                                        //     Задержка для визуального наблюдения
  97.      }
  98.      
  99.      
  100.      
  101. }
  102.  
  103.  
  104.  
  105.  
  106. ////////////////////////////////////////////////
  107. void to_port_A(byte  value)
  108. {
  109.      digitalWrite(LE_PIN,   1); //  delay( 1);    
  110.      set_value(0b00000100);     //  delay( 1);                         //   A1 = 0, A0 = 0 ( выбираем порт А )
  111.      digitalWrite(LE_PIN,   0); //  delay( 1);                          //  /WR = 0, /RD = 1  (разрешение записи)  
  112.  
  113.      set_value(   value);       //  delay( 1);                        // 10000000 - все порты ВВ55, как выходы ( режим 0 )
  114.      digitalWrite(CS_PIN,   0); //  delay( 1);                        // Выбран (для записи) ВВ55
  115.      digitalWrite(OE_PIN,   1);  // Здесь бутет установка /WR_55 в 1 полсле
  116.      digitalWrite(CS_PIN,   1);  // delay( 1);    
  117.      digitalWrite(OE_PIN,   0);  // ??
  118. }
  119.  
  120.  
  121. ////////////////////////////////////////////////
  122. void to_port_B(byte  value)
  123. {
  124.      digitalWrite(LE_PIN,   1); //  delay( 1);    
  125.      set_value(0b00000101);     //  delay( 1);                         //    A1 = 0,  A0 = 1 ( выбираем порт B )
  126.      digitalWrite(LE_PIN,   0); //  delay( 1);                          //  /WR = 0, /RD = 1  (разрешение записи)  
  127.  
  128.      set_value(   value);       //  delay( 1);                        // 10000000 - все порты ВВ55, как выходы ( режим 0 )
  129.      digitalWrite(CS_PIN,   0); //  delay( 1);                        // Выбран (для записи) ВВ55
  130.      digitalWrite(OE_PIN,   1);  // ??
  131.      digitalWrite(CS_PIN,   1);  // delay( 1);    
  132.      digitalWrite(OE_PIN,   0);  // ??
  133. }
  134.  
  135.  
  136.  
  137. ////////////////////////////////////////////////
  138. void set_value(byte value)                                                 //   Функция установки байта на D2 - D9
  139. {
  140.      
  141.      for(int i = 0; i < 8; i++)                                            // Выставляем данные на выходы
  142.      {
  143.          digitalWrite(DATA_PINS[i], bitRead(value, i));
  144.      }
  145. }
  146.  
Advertisement
Add Comment
Please, Sign In to add comment