⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temp.c.bak

📁 一个基于XMODEM协议的下载字库的程序
💻 BAK
字号:
/********************************************************************************************
**函数名:      vSendByte
**功能简介:    向X25645(SPI EEPROM)发送一字节数据
**参数说明:    bCh-需发送的数据
**调用函数:    无
**全局变量:    无
**函数返回:    无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vSendByte(BYTE bCh)
{
  BYTE bI=8;
 
    while(bI--)
    {    
        SCK = 0;
        if((bCh & 0x80) == 0x80)SI = 1;//(bit)(ch&0x80);	
        if((bCh & 0x80) == 0x00)SI = 0;
        SCK = 1;
        bCh <<= 1;
      }
}


/********************************************************************************************
**函数名:      bGetByte
**功能简介:    从X25645(SPI EEPROM)得到一字节数据
**参数说明:    bTemp-得到的数据返回
**调用函数:    无
**全局变量:    无
**函数返回:    无
**最后修改时间:2003-07-21
**********************************************************************************************/
BYTE bGetByte(void)
{
   BYTE bI=8,bTemp=0;
    
    while(bI--)
    {  
        bTemp <<= 1;
        SCK = 1;
        SCK = 0;
        //ch=|SO;
        if(SO == 1)bTemp |= 0x01;
        if(SO == 0)bTemp &= 0xfe;
	}

	SCK = 1;//new add-2003-09-02

	return(bTemp);
}


/********************************************************************************************
**函数名:      bReadStatus
**功能简介:    为检查忙标志,读X25645(SPI EEPROM)的状态寄存器
**参数说明:    无
**调用函数:    vSendByte,bGetByte
**全局变量:    无
**函数返回:    bTemp-读出的状态字节
**最后修改时间:2003-07-21
**********************************************************************************************/
BYTE bReadStatus(void) 
{
  BYTE bTemp;
  WORD wTemp;
  DWORDS dwI=0;
    
	//CS = 0;
	XBYTE[PTR_259_1 + 5] = 0;
    vSendByte(RDSR_INST);
    wTemp = 0xffff;
    ////wTemp = 0xa0;
    
    do
    {
        dwI++;
		if( dwI%50 == 0)
		{
			//WDI = ~WDI;//喂狗
			vHitWatchDog();//喂狗  //死机
		}
		if(--wTemp == 0)break;
        bTemp = bGetByte();
    }while((bTemp & 0x01) == 0x01);
	//CS = 1;
	XBYTE[PTR_259_1 + 5] = 1;
    return(bTemp);
}   


/********************************************************************************************
**函数名:      vProgramStatus
**功能简介:    编程X25645(SPI EEPROM)的状态寄存器
**参数说明:    bCh-需编程的数据
**调用函数:    vSendByte
**全局变量:   
*函数返回:    无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vProgramStatus(BYTE bCh) 
{
	//CS = 0;
	XBYTE[PTR_259_1 + 5] = 0;
    vSendByte(PRSR_INST);
    vSendByte(bCh);
	//CS = 1;
	XBYTE[PTR_259_1 + 5] = 1;
}




/********************************************************************************************
**函数名:      bReadByte
**功能简介:    读X25645(SPI EEPROM)某地址的单字节数据
**参数说明:    wAddr-需要读的地址
**调用函数:    vSendByte,bGetByte
**全局变量:    无?**函数返回:    bTemp-读出的该地址的单字节数据							  .
**最后修改时间:2003-07-21
**********************************************************************************************/
BYTE bReadByte(WORD wAddr)
{
 BYTE bTemp,bAddrh,bAddrl;
       
    bAddrl = (BYTE)wAddr;
    wAddr >>= 8;
    bAddrh = (BYTE)wAddr;
	//CS = 0;
	XBYTE[PTR_259_1 + 5] = 0;
    vSendByte(READ_INST);
    vSendByte(0x00);
    vSendByte(bAddrh);
    vSendByte(bAddrl);
    bTemp = bGetByte();	
	//CS = 1;
	XBYTE[PTR_259_1 + 5] = 1;
    return(bTemp);
}
/********************************************************************************************
**函数名:      vProgramEnable
**功能简介:    X25645(SPI EEPROM)编程使能
**参数说明:    无
**调用函数:    vSendByte
**全局变量:    无
**函数返回:    无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vProgramEnable(void)
{
	//CS = 0;
	XBYTE[PTR_259_1 + 5] = 0;
    vSendByte(PREN_INST);
	//CS = 1;
	XBYTE[PTR_259_1 + 5] = 1;
}


/********************************************************************************************
**函数名:      vProgramDisable
**功能简介:    X25645(SPI EEPROM)编程失效复位
**参数说明:    无
**调用函数:    vSendByte
**全局变量:    无?**函数返回:    无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vProgramDisable(void)
{
	//CS = 0;
	XBYTE[PTR_259_1 + 5] = 0;
    vSendByte(PRDI_INST);
	//CS = 1;
	XBYTE[PTR_259_1 + 5] = 1;
}
  
/********************************************************************************************
**函数名:      vBulkErase
**功能简介:    擦除nx25p40
**参数说明:    无
**调用函数:    vProgramEnable,vSendByte,bReadStatus
**全局变量:    无**函数返回:    无
**最后修改时间:2004-06-15
**********************************************************************************************/
/*
void vBulkErase(void)
{
	//CS = 0;
	vProgramEnable();
	XBYTE[PTR_259_1 + 5] = 0;
    vSendByte(BULK_ERASE);
	//CS = 1;
	XBYTE[PTR_259_1 + 5] = 1;
	bReadStatus();
}
  
/********************************************************************************************
**函数名:      vSectorErase
**功能简介:    扇区擦除nx25p40
**参数说明:    bSecNum扇区号0~7
**调用函数:    vProgramEnable,vSendByte,bReadStatus
**全局变量:    无?**函数返回:    无
**最后修改时间:2004-06-15
**********************************************************************************************/
void vSectorErase(BYTE bSecNum)
{
	//CS = 0;
	vProgramEnable();
	XBYTE[PTR_259_1 + 5] = 0;
    vSendByte(SECTOR_ERASE);
    vSendByte(bSecNum);
    vSendByte(0x00);
    vSendByte(0x00);
	//CS = 1;
	XBYTE[PTR_259_1 + 5] = 1;
	bReadStatus();
	
}


/********************************************************************************************
**函数名:      vProgramByte
**功能简介:    编程X25645(SPI EEPROM)单字节到某地址
**参数说明:    wAddr-需编程的地址,bCh-写入的字节数据
**调用函数:    vProgramEnable,vSendByte,bReadStatus,vProgramDisable
**全局变量:    无
**函数返回:    无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vProgramByte(WORD wAddr,BYTE bCh)
{
  BYTE bAddrh,bAddrl;
       
    vProgramEnable();
    
    bAddrl = (BYTE)wAddr;
    wAddr >>= 8;
    bAddrh = (BYTE)wAddr;
	//CS = 0;
	XBYTE[PTR_259_1 + 5] = 0;
    vSendByte(PROGRAM_INST);
    vSendByte(0x00);
    vSendByte(bAddrh);
    vSendByte(bAddrl);
    vSendByte(bCh);
	//CS = 1;
	XBYTE[PTR_259_1 + 5] = 1;
    bReadStatus();
    vProgramDisable();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -