URL
https://opencores.org/ocsvn/usb_nand_reader/usb_nand_reader/trunk
Subversion Repositories usb_nand_reader
[/] [usb_nand_reader/] [trunk/] [mini32/] [NandDataLine.cp] - Rev 7
Compare with Previous | Blame | View Log
#line 1 "H:/MINI32/MINI-32 Examples/MINI-32 mikroC PRO for PIC32 Examples/MINI32_NAND_Controller/NandDataLine.c"
#line 1 "h:/mini32/mini-32 examples/mini-32 mikroc pro for pic32 examples/mini32_nand_controller/nanddataline.h"
void init_nand_data_line();
void init_nand_control_line();
void data_line_write_byte(unsigned char b);
unsigned char data_line_read_byte();
#line 5 "H:/MINI32/MINI-32 Examples/MINI-32 mikroC PRO for PIC32 Examples/MINI32_NAND_Controller/NandDataLine.c"
sbit nand_b0 at LATE2_bit;
sbit nand_b1 at LATE3_bit;
sbit nand_b2 at LATG7_bit;
sbit nand_b3 at LATG8_bit;
sbit nand_b4 at LATF5_bit;
sbit nand_b5 at LATF4_bit;
sbit nand_b6 at LATE4_bit;
sbit nand_b7 at LATE5_bit;
void init_nand_data_line()
{
TRISE = 0;
TRISF = 0;
TRISG = 0;
LATE = 0;
LATF = 0;
LATG = 0;
nand_b0 = 0;
nand_b1 = 0;
nand_b2 = 0;
nand_b3 = 0;
nand_b4 = 0;
nand_b5 = 0;
nand_b6 = 0;
nand_b7 = 0;
}
int data_line_last_op = 2 ;
void data_line_write_byte(unsigned char b)
{
if(data_line_last_op != 1 )
{
TRISE2_bit = 0; TRISE3_bit = 0; TRISE4_bit = 0; TRISE5_bit = 0;
TRISF4_bit = 0; TRISF5_bit = 0;
TRISG7_bit = 0; TRISG8_bit = 0;
data_line_last_op = 1 ;
}
nand_b0 = (b) & 1;
nand_b1 = (b >> 1) & 1;
nand_b2 = (b >> 2) & 1;
nand_b3 = (b >> 3) & 1;
nand_b4 = (b >> 4) & 1;
nand_b5 = (b >> 5) & 1;
nand_b6 = (b >> 6) & 1;
nand_b7 = (b >> 7) & 1;
asm NOP;
asm NOP;
asm NOP;
}
unsigned char data_line_read_byte()
{
unsigned char d = 0;
if(data_line_last_op != 0 )
{
TRISE2_bit = 1; TRISE3_bit = 1; TRISE4_bit = 1; TRISE5_bit = 1;
TRISF4_bit = 1; TRISF5_bit = 1;
TRISG7_bit = 1; TRISG8_bit = 1;
data_line_last_op = 0 ;
}
d |= (unsigned char)PORTE.B2;
d |= ((unsigned char)PORTE.B3 << 1);
d |= ((unsigned char)PORTG.B7 << 2);
d |= ((unsigned char)PORTG.B8 << 3);
d |= ((unsigned char)PORTF.B5 << 4);
d |= ((unsigned char)PORTF.B4 << 5);
d |= ((unsigned char)PORTE.B4 << 6);
d |= ((unsigned char)PORTE.B5 << 7);
return d;
}