#include const unsigned char rxdata[128] = { // Paste RXDATA here }; const unsigned char txdata[128] = { // Paste TXDATA here }; #define WE RD0 #define OE RD1 #define CE RD2 unsigned char chn,j; unsigned long int i,chn_addr; void main (void) { __CONFIG(0x3F79); INTCON = 0; ADCON0 = 0; // ADC off ADCON1 = 0b00000110; //PortA all digital TRISB = 0; PORTB = 0; TRISA = 0; PORTA = 0; PORTA = 0b111111; for (i=0;i<10000;i++); TRISD = 0; PORTD = 0; CE = 1; OE = 1; WE = 1; /***************** Write rxdata ****************/ for (chn=0;chn<16;chn++) { for (j = 0;j<8;j++) { chn_addr=chn; chn_addr=chn_addr<<4 ; chn_addr=chn_addr+j; // Write data PORTB = chn_addr; PORTA = rxdata[j+(chn*8)]; for (i=0;i<200;i++); CE = 0; for (i=0;i<200;i++); WE = 0; for (i=0;i<200;i++); WE = 1; for (i=0;i<200;i++); CE = 1; for (i=0;i<200;i++); PORTA = 0b111111; for (i=0;i<500;i++); // Now read data and wait till valid OE = 0; CE = 0; for (i=0;i<200;i++); TRISA = 0b111111; while (PORTA != rxdata[j+(chn*8)] ); OE = 1; CE = 1; for (i=0;i<200;i++); TRISA = 0; } } //Long flash PORTA = 0b111111; for (i=0;i<10000;i++); /***************** Write txdata ****************/ for (chn=0;chn<16;chn++) { for (j = 0;j<8;j++) { chn_addr=chn; chn_addr=chn_addr<<4 ; chn_addr=chn_addr+j+8; // Write data PORTB = chn_addr; PORTA = txdata[j+(chn*8)]; for (i=0;i<200;i++); CE = 0; for (i=0;i<200;i++); WE = 0; for (i=0;i<200;i++); WE = 1; for (i=0;i<200;i++); CE = 1; for (i=0;i<200;i++); PORTA = 0b111111; for (i=0;i<500;i++); // Now read data and wait till valid OE = 0; CE = 0; for (i=0;i<200;i++); TRISA = 0b111111; while ( PORTA != txdata[j+(chn*8)] ); OE = 1; CE = 1; for (i=0;i<200;i++); TRISA = 0; } } PORTA = 0b111111; for (i=0;i<20000;i++){i++;}; for (i=0;i<20000;i++){i++;}; for (i=0;i<20000;i++){i++;}; for (i=0;i<20000;i++); for (i=0;i<60000;i++); for (i=0;i<20000;i++); for (i=0;i<20000;i++); for (i=0;i<20000;i++); for (i=0;i<20000;i++); }