Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ответ: Код программы

Отправлено Fisherman 23 марта 2007 г. 16:59
В ответ на: Сдохнуть не могла(+) отправлено <font color=gray>АДИКМ</font> 23 марта 2007 г. 14:28

void NAND_Set_Block(void)
{
NAND_Block=NAND_iData.Addres.b[b4]&NAND_Set_Block_B_b;
NAND_Block_C=NAND_iData.Addres.b[b4]&NAND_Set_Block_C_b;
NAND_Chip=NAND_iData.Addres.b[b4]&NAND_Set_Chip_1_b;
}//void NAND_Set_Block()

void NAND_Command_Latch(byte command)
{
if(NAND_Chip)
XBYTE[_NAND_Command_Latch_Chip1]=command;
else
XBYTE[_NAND_Command_Latch_Chip2]=command;
//NAND_CLE_Pin=1;
//Write_NAND(command);
//NAND_CLE_Pin=0;
}//void NAND_Command_Latch(byte command);

void NAND_Set_Addr(bit f)
{
if(NAND_Chip)
{
if (f)
NAND_CS_1_Block=NAND_CS_Block_Enable;
XBYTE[_NAND_Addr_Latch_Chip1]=NAND_iData.Addres.b[b1];
XBYTE[_NAND_Addr_Latch_Chip1]=NAND_iData.Addres.b[b2];
XBYTE[_NAND_Addr_Latch_Chip1]=NAND_iData.Addres.b[b3];
XBYTE[_NAND_Addr_Latch_Chip1]=NAND_iData.Addres.b[b4]&NAND_Mask_Hi_b;
}
else
{
if (f)
NAND_CS_2_Block=NAND_CS_Block_Enable;
XBYTE[_NAND_Addr_Latch_Chip2]=NAND_iData.Addres.b[b1];
XBYTE[_NAND_Addr_Latch_Chip2]=NAND_iData.Addres.b[b2];
XBYTE[_NAND_Addr_Latch_Chip2]=NAND_iData.Addres.b[b3];
XBYTE[_NAND_Addr_Latch_Chip2]=NAND_iData.Addres.b[b4]&NAND_Mask_Hi_b;
}
//while(!NAND_Busy_Pin);// LED_Work=~LED_Work; //æä¸ì ãîòîâíîñòè
//while(NAND_RD_Status()!=0xC0);//æä¸ì ãîòîâíîñòè
NAND_CS_2_Block=NAND_CS_Block_Disable;
NAND_CS_1_Block=NAND_CS_Block_Disable;
}//void NAND_Set_Addr()

bit NAND_Write(bit f_set_block,bit f_done_write,char* idata buf)
{
byte idata command;
//while(NAND_RD_Status()!=0xC0);//æä¸ì ãîòîâíîñòè
while(!NAND_Busy_Pin);//æä¸ì ãîòîâíîñòè

if(f_set_block)
{
NAND_Set_Block();
//???????????????????????????????????????????????????????
/* if(NAND_Block_C)
{
command=_NAND_Page_C;
}
else
{
if(NAND_Block)
command=_NAND_Page_B;
else
command=_NAND_Page_A;
}
NAND_Command_Latch(command);
*/
//???????????????????????????????????????????????????????
NAND_Command_Latch(_NAND_Write_1cycle);
NAND_Set_Addr(0);
}//if(f_set_block)

//LED_Work=1; //æä¸ì ãîòîâíîñòè
if(NAND_Chip)
{
for(;NAND_iData.Count-->0;)
{
XBYTE[_NAND_Data_Rd_Wr_Chip1]=*buf++;
}
}
else
{
for(;NAND_iData.Count-->0;)
{
XBYTE[_NAND_Data_Rd_Wr_Chip2]=*buf++;
}
}
//Write_NAND(*buf++);
//LED_Work=0;

if(f_done_write)
{
NAND_Command_Latch(_NAND_True);//(_NAND_True);
Delay_uS(10);
while(!NAND_Busy_Pin);// LED_Work=~LED_Work; //æä¸ì ãîòîâíîñòè
//P10=1;
NAND_Command_Latch(_NAND_Read_Status);
Delay_uS(10);
if(NAND_Chip)
{
command=XBYTE[_NAND_Data_Rd_Wr_Chip1];
}
else
{
command=XBYTE[_NAND_Data_Rd_Wr_Chip2];
}
//P10=0;//æä¸ì ãîòîâíîñòè
//while(TI_0);
//SBUF0=command;//
//Count_write_Block++;
}//if(f_set_block)
return(command);
//return(command&1);
}//void NAND_Write(byte command,int count,byte* buf,union long_char addr)

//byte NAND_Read()
byte NAND_Read(bit f_set_block,char* idata buf)
{
byte idata crt=0;
byte idata temp;
byte idata command;
while(!NAND_Busy_Pin);//æä¸ì ãîòîâíîñòè
if(f_set_block)
{
NAND_Set_Block();
}//if(f_set_block)

if(NAND_Block_C)
{
command=_NAND_Page_C;
}
else
{
if(NAND_Block)
command=_NAND_Page_B;
else
command=_NAND_Page_A;
}
NAND_Command_Latch(command);//(command);
//NAND_CS_1_Block=NAND_CS_Block_Enable;
NAND_Set_Addr(1);
Delay_uS(10);
while(!NAND_Busy_Pin);// LED_Work=~LED_Work; //æä¸ì ãîòîâíîñòè
//NAND_CS_1_Block=NAND_CS_Block_Disable;
for(;NAND_iData.Count-->0;)
{
if(NAND_Chip)
{
temp=XBYTE[_NAND_Data_Rd_Wr_Chip1];
}
else
{
temp=XBYTE[_NAND_Data_Rd_Wr_Chip2];
}
//Read_NAND(temp);
*buf++=temp;
crt^=temp;
}////for(;NAND_iData.Count-->0;)
NAND_Command_Latch(_NAND_Read_Status);
Delay_uS(10);
if(NAND_Chip)
{
command=XBYTE[_NAND_Data_Rd_Wr_Chip1];
}
else
{
command=XBYTE[_NAND_Data_Rd_Wr_Chip2];
}
//while(TI_0);
//SBUF0=command;
return(crt);
}//void NAND_Read1()


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 2 на три:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru