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

📄 93c46._h

📁 是一款开发板的外围电路试验程序(附有原理图)
💻 _H
字号:
//采用模拟时序

#define Port PORTA

#define CS 1<<0
#define SK 1<<1
#define DI 1<<2
#define DO 1<<3

#define CLEAR_CS() (Port &= ~CS)
#define CLEAR_SK() (Port &= ~SK)
#define CLEAR_DI() (Port &= ~DI)
#define CLEAR_DO() (Port &= ~DO)

#define SET_CS() (Port |= CS)
#define SET_SK() (Port |= SK)
#define SET_DI() (Port |= DI)
#define SET_DO() (Port |= DO)        //定义几个口位的操作

#define uchar  unsigned char
#defube de 100

 //延时程序
void _delay(int LM_us)
 {while(LM_us)
   {
     LM_us--;
	 NOP();
   }
 }
 
            /****************************************
            start bit: 1, op: 10, addr : A6--A0;*****
            addrx=1 10 a6a5a4a3a2a1a0 : 10 number ***
            ******* read_9346()   8bit  
            ****************************************/

            unsigned  char  read_9346(uchar addrx)
            {
            uchar i;
            unsigned char j=0x00;
            SET_CS(); _delay(de);
            CLEAR_SK(); _delay(de);
            SET_DI(); //1 1 0
            SET_SK(); _delay(de);
            CLEAR_SK(); _delay(de);
            SET_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            CLEAR_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            // a6---a0 valid 7 bit data;so follow
            for(i=0;i<7;i++)
            { addrx<<=1;
             di=(addrx&0x80);
              SET_SK();_delay(de);
              CLEAR_SK();_delay(de);
            }
            dod=1;
              // return char 8 bit data;
              for(i=0;i<8;i++)
              {//j=(j<<1)|dod;
              SET_SK();_delay(de);
              j=(j<<1)|dod;
              CLEAR_SK();_delay(de);
            }
            CLEAR_CS();
            return j;
            }


/****************************************
            ********** en_ dis write_ erase()  8bit
            *****************************************/
            void en_dis(uchar a)
            {
            uchar i,en_dis;
            SET_CS(); _delay(de);
            CLEAR_SK(); _delay(de);
            SET_DI(); //1 0 0
            SET_SK(); _delay(de);
            CLEAR_SK(); _delay(de);
            CLEAR_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            CLEAR_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            if(a>=1)en_dis=0xc0;else en_dis=0x00;  //11x_xxxxb
            for(i=0;i<7;i++)
            { 
            di=en_dis&0x80;
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            en_dis<<=1;
            }
            CLEAR_CS();
            }
            /*********************************************
            ******* void erase_all93c46(void)***********
            a>0 write a=0; erase 
            *********************************************/
            void erase(void)
            { 
            uchar i,erase;
            SET_CS(); _delay(de);
            CLEAR_SK(); _delay(de);
            SET_DI(); //1 0 0
            SET_SK(); _delay(de);
            CLEAR_SK(); _delay(de);
            CLEAR_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            CLEAR_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            //if(a>0)erase=0x40;else erase=0x20;
            erase=0x80;
            for(i=0;i<7;i++)
            {
            di=erase&0x80;
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            erase<<=1;
            }
            CLEAR_CS();
            }

            /*****************************************
            ********void  write_all_93c46(uchar a)
            *****************************************/

            void   write_all(unsigned char  ax)
            {
            uchar i,erase;
            CLEAR_CS(); _delay(de);
            CLEAR_SK(); _delay(de);
            SET_CS(); _delay(de);

            SET_DI(); //1 0 0
            SET_SK(); _delay(de);
            CLEAR_SK(); _delay(de);
            CLEAR_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            CLEAR_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            erase=0x40; //01x_xxxxb
            //if(a>0)erase=0x40;else erase=0x20;
            for(i=0;i<7;i++)
            {

            di=erase&0x80;//if((erase&0x80)>0)SET_DI();else CLEAR_DI();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            erase<<=1;
            }
            //dod=1;
            for(i=0;i<8;i++)
            {
            di=ax&0x80;

            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            ax<<=1;

            }
            //ax<<=1;
            //di=ax&0x80;
            CLEAR_CS();_delay(30);dod=1;;SET_CS();
            SET_SK();_delay(de);
            CLEAR_SK();_delay(de);
            //_delay(de);SET_CS();
            /*_delay(de); dod=1;
            SET_CS(); SET_SK();_delay(de);
            while(dod==0) {
            CLEAR_SK();_delay(de);
            SET_SK();_delay(de);
            }
            CLEAR_SK();*/ CLEAR_CS();
            }

            /**********************************
            **********************************/
            

⌨️ 快捷键说明

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