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

📄 x5045.c

📁 x5045的C51程序
💻 C
字号:
#include "x5045.h"

void outbyte(uchar aa)
{
    uchar i;
    SCK=0;
    for(i=0;i<8;i++)
    {
    	SCK=0;
        if((aa&0x80)==0)SI=0;
        else SI=1;
        Delay(20);                          //取最高位
        SCK=1;
        aa=aa<<1;
    }
    SI=0;
    SCK=0;                                  //使SI处于确定的状态
}

/*
uchar inputbyte(void)
{
    uchar aa,my_flag;
    char i;
    SCK=1;
    aa=0;
    for (i=7;i>=0;i--)
    {
        SCK=1;
        my_flag=(uchar)(SO);
        Delay(20);
        SCK=0;
        Delay(20);
        aa=(aa|(my_flag<<i));
        my_flag=0x00;
    }
    SCK=0;
    return aa;
}
*/

void wren_cmd(void)                         //写使能子程序
{
    CS=1;
    Delay(20);
    CS=0;
    CS=0;
    outbyte(WREN_INST);
    CS=1;
    CS=1;
}
/*
void wrdi_cmd(void)                         //写使能复位子程序
{
    CS=1;
    Delay(20);
    CS=0;
    outbyte(WRDI_INST);
    CS=1;
}
*/
void wrsr_cmd(uchar cmd)                    //写状态寄存器子程序
{                                           //0X00:Watchdog Time Out 1.4 seconds
    wren_cmd( );                            //0X30:Watchdog Time Out disabled
    Delay(20);
    CS=0;
    outbyte(WRSR_INST);
    outbyte(cmd);
    CS=1;
}
/*
uchar rdsr_cmd (void)                       //读状态寄存器,读出的数据放入到aa中
{
    uchar aa;
    CS=1;
    Delay(20);
    CS=0;
    outbyte(RDSR_INST);
    aa=inputbyte();
    CS=1;
    return(aa);
}
*/
/*
uchar readbyte(uint badd)
{
    uchar bb;
    uchar ss;
    CS=1;
    Delay(20);
    CS=0;
    if((badd&0x100)!=0)
    {
    	bb=READ_INST|0x08;
    }
    else
    {
    	bb=READ_INST;
    }
    outbyte(bb);
    outbyte((uchar)badd);
    ss=inputbyte();
    CS=1;
    return(ss);
}

uint readword(uint badd)
{
    uchar bb;
    uint ss=0,ss1=0;
    CS=1;
    Delay(20);
    CS=0;
    if((badd&0x100)!=0)                     //写先导字
    {
    	bb=READ_INST|0x08;
    }
    else
    {
    	bb=READ_INST;
    }
    outbyte(bb);
    outbyte((uchar)badd);                   //写地址
    ss=inputbyte();
    ss1=inputbyte();
    ss=ss|(ss1<<8);
    CS=1;
    return(ss);
}

void writebyte(uint badd,uchar aa)
{
    uchar bb;
    wren_cmd( );                            //写使能
    Delay(20);
    CS=1;
    Delay(20);
    CS=0;
    if((badd&0x100)!=0)
    {
    	bb=WRITE_INST|0x08;
    }
    else
    {
    	bb=WRITE_INST;
    }
    outbyte(bb);
    outbyte((uchar)badd);                   //地址
    outbyte(aa);
    CS=1;
    wip_poll( );
}

void writeword(uint badd,uint aa)
{
    uchar bb;
    wren_cmd();  		            //写使能
    Delay(20);
    CS=0;
    if((badd&0x100)!=0)
    {
   	bb=WRITE_INST|0x08;
    }
    else
    {
   	bb=WRITE_INST;
    }
    outbyte(bb);
    outbyte((uchar)badd);                   //地址
    outbyte((uchar)aa);
    aa=(aa&0xff00)>>8;
    outbyte((uchar)aa);
    CS=1;
    wip_poll( );
}
*/                                            //复位DOG
void rst_wdog(void)
{
    CS=1;
    Delay(20);
    CS=0;
    CS=1;
}
                                            //检测写入的过程是否结束
/*
void wip_poll(void)
{
    uchar aa;
    uchar idata my_flag;
    for (aa=1;aa<MAX_POLL;aa++)
    {
        my_flag=rdsr_cmd();
        if ((my_flag&0x01)==0)              //判断是否WIP=0,即判断是否写入过程已经结束,
        {                                   //若结束就跳出,否则继续等待直到达到最大记数值
     	    aa=MAX_POLL;
        }
    }
    wrdi_cmd();
}
*/
void Delay(uint Del)
{
    uint i;
    for(i=0;i<Del;i++)
    {
      	if(i==30000)
      	{
      	    CS=1;
            CS=0;
            CS=0;
            CS=1;
        }
    }
}

⌨️ 快捷键说明

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