dllbridge

EXT_RAM_Rom_032

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