Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // EXT_ROM_Ram_03 2025 August 14 ( 10:24 )
- // КР580ВВ55А РАБОТАЕТ! с резистором pull-up к /WR
- // Записали число 0b10101010 в порт А ( 82С55 )
- // #2 !!!!
- const int CS_PIN = 11; // /CS (Chip Select) 82C55
- //const int RESET_PIN = 19; // A5 // Reset 82C55
- #define RESET_PIN A5 // Reset 82C55
- const int OE_PIN = 12; // Output Enable 74HCT573
- const int LE_PIN = 13; // Latch Enable 74HCT573
- const int DATA_PINS[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Пины данных для 74HCT573
- ////////////////////////////////////////////////
- void setup()
- {
- pinMode(CS_PIN, OUTPUT); digitalWrite(CS_PIN, 1); // Запрет выбора ВВ55
- pinMode(RESET_PIN, OUTPUT);
- pinMode(OE_PIN, OUTPUT); digitalWrite(OE_PIN, LOW); // 74HCT573 output enable
- pinMode(LE_PIN, OUTPUT); digitalWrite(LE_PIN, 1);
- for(int i = 0; i < 8; i++)
- {
- pinMode(DATA_PINS[i], OUTPUT);
- }
- digitalWrite(RESET_PIN, 1); delay(50); // Сброс КР580ВВ55А
- digitalWrite(RESET_PIN, 0); delay(50);
- // STEP 1 // запишем байт в 74HCT573 ( /WR, /RD, A1, A0 )
- // Для управления ВВ55
- set_value(0b00000111); // delay(30); // A1 = 1, A0 = 1 ( выбирают регистр РУС)
- digitalWrite(LE_PIN, 0); // /WR = 0, /RD = 1 (разрешение записи)
- // STEP 2
- set_value(0b10000000); // delay(30); // 10000000 - все порты ВВ55, как выходы ( режим 0 )
- digitalWrite(CS_PIN, 0); //delay( 10); // Выбран (для записи) ВВ55
- digitalWrite(OE_PIN, 1); // ??
- digitalWrite(CS_PIN, 1); //delay(30);
- digitalWrite(OE_PIN, 0); // ??
- // STEP 3 Попробуем записать число 85 в порт А
- digitalWrite(LE_PIN, 1); //delay(30);
- set_value(0b00000100); //delay(30); // A1 = 0, A0 = 0 ( выбираем порт А )
- digitalWrite(LE_PIN, 0); //delay(30); // /WR = 0, /RD = 1 (разрешение записи)
- set_value(0b10101010); //delay(30); // 10000000 - все порты ВВ55, как выходы ( режим 0 )
- digitalWrite(CS_PIN, 0); delay( 40); // Выбран (для записи) ВВ55
- digitalWrite(OE_PIN, 1); // ??
- digitalWrite(CS_PIN, 1); //delay(30);
- digitalWrite(OE_PIN, 0); // ??
- digitalWrite(LE_PIN, 1);
- delay(2010);
- to_port_A(0b01010101); //delay(2010);
- }
- /////////////////////////////////////////////////
- void loop()
- {
- for(int i1 = 0; i1 < 8; i1++) {
- for(int i2 = 0; i2 < 8; i2++) { to_port_A(1 << i2); delay(250); }
- for(int i3 = 7; i3 >= 0; i3--) { to_port_A(1 << i3); delay(250); } }
- for(int i = 0; i < 10; i++) //
- {
- to_port_A(170); delay( 500);
- to_port_A( 85); delay(1000);
- }
- for(int i = 0; i < 256; i++) // Последовательно включаем биты в порту A
- {
- to_port_A(i);
- delay(100); // Задержка для визуального наблюдения
- }
- }
- ////////////////////////////////////////////////
- void to_port_A(byte value)
- {
- digitalWrite(LE_PIN, 1); // delay( 1);
- set_value(0b00000100); // delay( 1); // A1 = 0, A0 = 0 ( выбираем порт А )
- digitalWrite(LE_PIN, 0); // delay( 1); // /WR = 0, /RD = 1 (разрешение записи)
- set_value( value); // delay( 1); // 10000000 - все порты ВВ55, как выходы ( режим 0 )
- digitalWrite(CS_PIN, 0); // delay( 1); // Выбран (для записи) ВВ55
- digitalWrite(OE_PIN, 1); // Здесь бутет установка /WR_55 в 1 полсле
- digitalWrite(CS_PIN, 1); // delay( 1);
- digitalWrite(OE_PIN, 0); // ??
- }
- ////////////////////////////////////////////////
- void to_port_B(byte value)
- {
- digitalWrite(LE_PIN, 1); // delay( 1);
- set_value(0b00000101); // delay( 1); // A1 = 0, A0 = 1 ( выбираем порт B )
- digitalWrite(LE_PIN, 0); // delay( 1); // /WR = 0, /RD = 1 (разрешение записи)
- set_value( value); // delay( 1); // 10000000 - все порты ВВ55, как выходы ( режим 0 )
- digitalWrite(CS_PIN, 0); // delay( 1); // Выбран (для записи) ВВ55
- digitalWrite(OE_PIN, 1); // ??
- digitalWrite(CS_PIN, 1); // delay( 1);
- digitalWrite(OE_PIN, 0); // ??
- }
- ////////////////////////////////////////////////
- void set_value(byte value) // Функция установки байта на D2 - D9
- {
- for(int i = 0; i < 8; i++) // Выставляем данные на выходы
- {
- digitalWrite(DATA_PINS[i], bitRead(value, i));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment