dllbridge

Ext_RAM_Rom_031

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