Hola
Codigo:
/****************************************************
*****************************************************
RA0 --> CS
RB1 --> WR
RB2 --> RS0
RB3 --> RD
RB4 --> D0
RB5 --> D1
RB6 --> D2
RB7 --> D3
RB0 --> Libre para Interrupción
Este pin puede accederse mediante
cm.inter
*****************************************************
*****************************************************/
#define set_tris_cm(x) set_tris_b(x)
#define CS_LOW output_low(PIN_A0)
#define CS_HIGH output_high(PIN_A0)
//BYTE dato;
struct cm_pin_map{
BOOLEAN inter;
int cont :3;
int data :4;
} cm;
#byte cm = 6
struct cm_pin_map const CM_WRITE = {1,0,0};
struct cm_pin_map const CM_READ = {1,0,15};
void escr_reg_con(BYTE n){
CS_LOW;
cm.cont=6;
delay_cycles(1);
set_tris_cm(CM_WRITE);
delay_ms(2);
cm.data=n;
delay_ms(10);
CS_HIGH;
cm.cont=5;
delay_ms(10);
set_tris_cm(CM_READ);
}
void escr_reg_dat(BYTE n){
escr_reg_con(1);
CS_LOW;
cm.cont=4;
delay_cycles(1);
set_tris_cm(CM_WRITE);
delay_ms(2);
cm.data=n;
delay_ms(10);
CS_HIGH;
cm.cont=5;
delay_ms(10);
set_tris_cm(CM_READ);
}
BYTE lee_reg_sta(){
BYTE buf;
set_tris_cm(CM_READ);
CS_LOW;
cm.cont=3;
delay_cycles(1);
buf=cm.data;
delay_ms(10);
CS_HIGH;
cm.cont=5;
delay_ms(10);
//set_tris_cm(CM_READ);
return (buf);
}
BYTE lee_reg_dat(){
BYTE buf;
set_tris_cm(CM_READ);
CS_LOW;
cm.cont=1;
delay_cycles(1);
buf=cm.data;
delay_ms(10);
CS_HIGH;
cm.cont=5;
delay_ms(10);
//set_tris_cm(CM_READ);
return (buf);
}
Saludos