Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define VPP 3
- #define VGG 2
- byte PORTB_t = 0x00;
- byte PORTC_t = 0x00;
- byte PORTD_t = 0x00;
- byte buff[] =
- {0xA0, 0x00, 0xA2, 0x21, 0xA9, 0x01, 0x85, 0xEE, 0xBD, 0x00, 0x08, 0x25, 0xEE, 0xD0, 0x0A, 0xC8,
- 0x06, 0xEE, 0x90, 0xF4, 0x8A, 0x0A, 0xAA, 0x90, 0xEB, 0xC4, 0xF8, 0x84, 0xF8, 0x98, 0x60, 0x20,
- 0x00, 0x0F, 0xA2, 0x14, 0xA0, 0x3F, 0xB0, 0x03, 0x8C, 0x00, 0x09, 0x88, 0xD0, 0xF8, 0xCA, 0xD0,
- 0xF3, 0xB0, 0xEC, 0x60, 0x0A, 0x0A, 0x0A, 0x0A, 0xA0, 0x04, 0x2A, 0xA2, 0xFA, 0x36, 0xF6, 0xE8,
- 0xD0, 0xFB, 0x88, 0xD0, 0xF5, 0x60, 0xA9, 0x00, 0x8D, 0xE0, 0x08, 0xF0, 0x08, 0x20, 0x34, 0x0F,
- 0xA5, 0xF0, 0x8D, 0x20, 0x08, 0xA6, 0xED, 0x9A, 0x20, 0x1F, 0x0F, 0xC9, 0x10, 0x90, 0xEE, 0xA8,
- 0xBE, 0xE2, 0x0F, 0x86, 0xEE, 0xA2, 0xFF, 0x86, 0xEF, 0xE8, 0x6C, 0xEE, 0x00, 0x18, 0xA5, 0xF6,
- 0x85, 0xF0, 0xA5, 0xF7, 0x85, 0xF1, 0xB0, 0xD8, 0x90, 0xD8, 0xA5, 0xF0, 0x85, 0xF6, 0xA5, 0xF1,
- 0x85, 0xF7, 0xB0, 0x14, 0xA5, 0xF6, 0xD0, 0x02, 0xC6, 0xF7, 0xC6, 0xF6, 0xB0, 0x0A, 0xA5, 0xF0,
- 0x81, 0xF6, 0xE6, 0xF6, 0xD0, 0x02, 0xE6, 0xF7, 0xA1, 0xF6, 0x85, 0xF0, 0xB0, 0xB2, 0xD8, 0x18,
- 0xA5, 0xF0, 0xE5, 0xF6, 0x85, 0xF0, 0xA5, 0xF1, 0xE5, 0xF7, 0xA8, 0xA5, 0xF0, 0xB0, 0x08, 0x10,
- 0x0A, 0xC8, 0x98, 0xD0, 0x06, 0xF0, 0x99, 0x30, 0x02, 0x10, 0xF7, 0x8A, 0x38, 0xB0, 0xDB, 0xEA,
- 0x85, 0xF9, 0x84, 0xFA, 0x86, 0xFB, 0x68, 0x85, 0xFF, 0x68, 0xD8, 0x38, 0xE9, 0x02, 0x85, 0xFC,
- 0x68, 0xE9, 0x00, 0x85, 0xFD, 0xBA, 0x86, 0xFE, 0xA9, 0xBB, 0xB0, 0xBE, 0xA6, 0xFE, 0x9A, 0xA5,
- 0xF1, 0x48, 0xA5, 0xF0, 0x48, 0xA5, 0xFF, 0x48, 0xA6, 0xFB, 0xA4, 0xFA, 0xA5, 0xF9, 0x40, 0x4C,
- 0x00, 0x0E, 0xDC, 0x7A, 0x84, 0x8E, 0x6D, 0x6E, 0xEF, 0x9E, 0x03, 0x00, 0x46, 0x0F, 0x00, 0x00};
- void write_data_bus(byte data){
- PORTD_t &= 0b11001111; //bits 7 & 6
- PORTD_t |= (data >> 2) & 0b110000;
- PORTC_t = data & 0b00111111; //bit 5-0
- PORTD = PORTD_t;
- PORTC = PORTC_t;
- }
- void set_address_bus(int address){
- PORTB_t = ~address >> 2; //bits 7-2
- PORTD_t &= 0b00111111; //bits 1 & 0
- PORTD_t |= (~address << 6) & 0b11000000;
- PORTB = PORTB_t;
- PORTD = PORTD_t;
- }
- void fast_write(int address, byte data){
- write_data_bus(data); //set data bus
- set_address_bus(~address); //set comp address bus
- delayMicroseconds(40);
- bitSet(PORTD_t, VGG); //set Control VDD/VGG ON
- bitSet(PORTD, VGG); //set Control VDD/VGG ON
- delayMicroseconds(150);
- set_address_bus(address); //set address bus
- delayMicroseconds(40);
- bitSet(PORTD, VPP); //set Program Pulse ON
- delayMicroseconds(2700);
- bitClear(PORTD, VPP); //set Program Pulse OFF
- delayMicroseconds(40);
- bitClear(PORTD_t, VGG); //set Control VDD/VGG OFF
- bitClear(PORTD, VGG); //set Control VDD/VGG OFF
- write_data_bus(0); //powerdown
- set_address_bus(255); //powerdown
- delay(12);
- //Serial.print('#'); //progress indicator
- }
- void setup(){
- //IO
- DDRB = 0b00111111; //Addr 2-7
- DDRD = 0b11111110; //Addr 0-1, Data 6-7, VPP, VGG, TX, RX
- DDRC = 0b00111111; //Data 0-5
- write_data_bus(0); //powerdown
- set_address_bus(255); //powerdown
- //Serial.begin(57600); //set speed of serial connection
- delay(1000);
- }
- void loop(){
- int dataLength = 256;
- //fill buffer
- /*
- for(int bytes; bytes < dataLength; bytes++)if(Serial.available())buffer[bytes] = Serial.read();
- Serial.println("Received 256 Bytes\n Writing to EPROM");
- */
- //program all addresses 32 times
- for(int x = 0; x < 32; x++)for(int i = 0; i < dataLength; i++)fast_write(i,buff[i]);
- //Serial.println('%');
- while(1); //done
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement