Advertisement
Skidlz

1702a Prommer

Jun 11th, 2020
524
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define VPP 3
  2. #define VGG 2
  3.  
  4. byte PORTB_t = 0x00;
  5. byte PORTC_t = 0x00;
  6. byte PORTD_t = 0x00;
  7.  
  8. byte buff[] =
  9.  {0xA0, 0x00, 0xA2, 0x21, 0xA9, 0x01, 0x85, 0xEE, 0xBD, 0x00, 0x08, 0x25, 0xEE, 0xD0, 0x0A, 0xC8,
  10.   0x06, 0xEE, 0x90, 0xF4, 0x8A, 0x0A, 0xAA, 0x90, 0xEB, 0xC4, 0xF8, 0x84, 0xF8, 0x98, 0x60, 0x20,
  11.   0x00, 0x0F, 0xA2, 0x14, 0xA0, 0x3F, 0xB0, 0x03, 0x8C, 0x00, 0x09, 0x88, 0xD0, 0xF8, 0xCA, 0xD0,
  12.   0xF3, 0xB0, 0xEC, 0x60, 0x0A, 0x0A, 0x0A, 0x0A, 0xA0, 0x04, 0x2A, 0xA2, 0xFA, 0x36, 0xF6, 0xE8,
  13.   0xD0, 0xFB, 0x88, 0xD0, 0xF5, 0x60, 0xA9, 0x00, 0x8D, 0xE0, 0x08, 0xF0, 0x08, 0x20, 0x34, 0x0F,
  14.   0xA5, 0xF0, 0x8D, 0x20, 0x08, 0xA6, 0xED, 0x9A, 0x20, 0x1F, 0x0F, 0xC9, 0x10, 0x90, 0xEE, 0xA8,
  15.   0xBE, 0xE2, 0x0F, 0x86, 0xEE, 0xA2, 0xFF, 0x86, 0xEF, 0xE8, 0x6C, 0xEE, 0x00, 0x18, 0xA5, 0xF6,
  16.   0x85, 0xF0, 0xA5, 0xF7, 0x85, 0xF1, 0xB0, 0xD8, 0x90, 0xD8, 0xA5, 0xF0, 0x85, 0xF6, 0xA5, 0xF1,
  17.   0x85, 0xF7, 0xB0, 0x14, 0xA5, 0xF6, 0xD0, 0x02, 0xC6, 0xF7, 0xC6, 0xF6, 0xB0, 0x0A, 0xA5, 0xF0,
  18.   0x81, 0xF6, 0xE6, 0xF6, 0xD0, 0x02, 0xE6, 0xF7, 0xA1, 0xF6, 0x85, 0xF0, 0xB0, 0xB2, 0xD8, 0x18,
  19.   0xA5, 0xF0, 0xE5, 0xF6, 0x85, 0xF0, 0xA5, 0xF1, 0xE5, 0xF7, 0xA8, 0xA5, 0xF0, 0xB0, 0x08, 0x10,
  20.   0x0A, 0xC8, 0x98, 0xD0, 0x06, 0xF0, 0x99, 0x30, 0x02, 0x10, 0xF7, 0x8A, 0x38, 0xB0, 0xDB, 0xEA,
  21.   0x85, 0xF9, 0x84, 0xFA, 0x86, 0xFB, 0x68, 0x85, 0xFF, 0x68, 0xD8, 0x38, 0xE9, 0x02, 0x85, 0xFC,
  22.   0x68, 0xE9, 0x00, 0x85, 0xFD, 0xBA, 0x86, 0xFE, 0xA9, 0xBB, 0xB0, 0xBE, 0xA6, 0xFE, 0x9A, 0xA5,
  23.   0xF1, 0x48, 0xA5, 0xF0, 0x48, 0xA5, 0xFF, 0x48, 0xA6, 0xFB, 0xA4, 0xFA, 0xA5, 0xF9, 0x40, 0x4C,
  24.   0x00, 0x0E, 0xDC, 0x7A, 0x84, 0x8E, 0x6D, 0x6E, 0xEF, 0x9E, 0x03, 0x00, 0x46, 0x0F, 0x00, 0x00};
  25.  
  26. void write_data_bus(byte data){
  27.   PORTD_t &= 0b11001111; //bits 7 & 6
  28.   PORTD_t |= (data >> 2) & 0b110000;
  29.   PORTC_t = data & 0b00111111; //bit 5-0
  30.   PORTD = PORTD_t;
  31.   PORTC = PORTC_t;
  32. }
  33.  
  34. void set_address_bus(int address){
  35.   PORTB_t = ~address >> 2; //bits 7-2
  36.   PORTD_t &= 0b00111111; //bits 1 & 0
  37.   PORTD_t |= (~address << 6) & 0b11000000;
  38.   PORTB = PORTB_t;
  39.   PORTD = PORTD_t;
  40. }
  41.  
  42. void fast_write(int address, byte data){
  43.   write_data_bus(data);   //set data bus
  44.   set_address_bus(~address); //set comp address bus
  45.   delayMicroseconds(40);
  46.  
  47.   bitSet(PORTD_t, VGG); //set Control VDD/VGG ON
  48.   bitSet(PORTD, VGG); //set Control VDD/VGG ON
  49.   delayMicroseconds(150);
  50.  
  51.   set_address_bus(address); //set address bus
  52.   delayMicroseconds(40);
  53.  
  54.   bitSet(PORTD, VPP); //set Program Pulse ON
  55.   delayMicroseconds(2700);
  56.  
  57.   bitClear(PORTD, VPP); //set Program Pulse OFF
  58.   delayMicroseconds(40);
  59.  
  60.   bitClear(PORTD_t, VGG); //set Control VDD/VGG OFF
  61.   bitClear(PORTD, VGG); //set Control VDD/VGG OFF
  62.   write_data_bus(0);   //powerdown
  63.   set_address_bus(255); //powerdown
  64.   delay(12);
  65.  
  66.   //Serial.print('#'); //progress indicator
  67. }
  68.  
  69. void setup(){
  70.   //IO
  71.   DDRB = 0b00111111; //Addr 2-7
  72.   DDRD = 0b11111110; //Addr 0-1, Data 6-7, VPP, VGG, TX, RX
  73.   DDRC = 0b00111111; //Data 0-5
  74.  
  75.   write_data_bus(0);   //powerdown
  76.   set_address_bus(255); //powerdown
  77.  
  78.   //Serial.begin(57600);  //set speed of serial connection
  79.   delay(1000);
  80. }
  81.  
  82. void loop(){
  83.   int dataLength = 256;
  84.   //fill buffer
  85.   /*
  86.   for(int bytes; bytes < dataLength; bytes++)if(Serial.available())buffer[bytes] = Serial.read();
  87.   Serial.println("Received 256 Bytes\n Writing to EPROM");
  88.   */
  89.   //program all addresses 32 times
  90.   for(int x = 0; x < 32; x++)for(int i = 0; i < dataLength; i++)fast_write(i,buff[i]);
  91.  
  92.   //Serial.println('%');
  93.   while(1); //done
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement