#include <16F877.h>
#fuses NOWDT, NOPROTECT, XT
#use delay (clock=4000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
#byte addrin = 0x06
#bit write = 0x05.3
#define WE pin_e2
#define RAS pin_e1
#define CAS pin_e0
void main(void)
{
set_tris_a(0b00001000);
set_tris_b(0b00001111);
set_tris_c(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b00000000);
long ADDR=0;
output_bit(WE,1); // E2 =WE
output_bit(RAS,1); // E1 =RAS
output_bit(CAS,1); // E0 =CAS
delay_ms(10);
output_bit(CAS,1);
delay_us(2);
output_bit(RAS,1);
delay_us(2);
while(true)
{
////////////////////////////// Refresh/////////////////////////////////////////////
if(ADDR<511)ADDR++;else ADDR=0;
output_c(ADDR);
output_d(ADDR>>8);
delay_us(1);
output_bit(RAS,0);
delay_us(1);
output_bit(RAS,1);
///////////////////////////////////////////////////////////////////////////////////
output_c(addrin);
output_d(0);
if(!write)
{
delay_us(1); // WRITE
output_bit(RAS,0);
delay_us(1);
output_bit(WE,0);
output_c(0);
output_d(0);
delay_us(1);
output_bit(CAS,0);
delay_us(1);
output_bit(WE,1);
delay_us(1);
output_bit(CAS,1);
delay_us(1);
output_bit(RAS,1);
}
else // READ
{
delay_us(1);
output_bit(RAS,0);
delay_us(1);
output_c(0);
output_d(0);
delay_us(1);
output_bit(CAS,0);
delay_us(1);
output_bit(CAS,1);
delay_us(1);
output_bit(RAS,1);
}
}
delay_us(1);
}