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

📄 x5045.c.bak

📁 此程序用于恒温箱控制
💻 BAK
字号:
#include"main.h"
#include<intrins.h>
#include"x5045.h"
#define uchar unsigned char

#define WREN 0X06
#define WRDI 0X04
#define RDSR 0x05
#define WRSR 0x01
#define READ 0x03		
#define WRITE 0x02
	
#define NOP  _nop_()

#define WD1_4S  0x00
#define WD600ms 0x10
#define WD200ms 0x20
#define WDDISABLE 0x30  

sbit cs_dog=P1^2;//p2.4
sbit sck_dog=P1^3;
sbit si_dog=P1^4;
sbit so_dog=P1^5;
//extern delay_ms(uchar Count);

/*************************************************************************
*           函数原型:void  STAR_25045(void)
*           功    能:启动看门狗
*           返 回 值:无
**************************************************************************/
void STAR_25045()//被调用的函数必须放在调用函数之前。
{
  cs_dog=1;
  NOP;
  sck_dog=0;
  NOP;
  cs_dog=0;
 }

/*************************************************************************
*           函数原型:uchar  Byte_In()
*           功    能:从so_dog脚接收数据。
*           返 回 值:I_Data(一个字节)
**************************************************************************/
 uchar Byte_out()
{	
	uchar i,I_Data=0;
	//P0=0xff;//这就一定要
	for(i=0;i<8;i++)
	{
	   sck_dog=1;
          NOP;
	   NOP;
	   NOP;
	   sck_dog=0;
       I_Data=I_Data<<1;
	   if(so_dog)
        {
	       I_Data++; 	   
		 }
        }
	return(I_Data);
}
/*************************************************************************
*           函数原型:void  Byte_Out(uchar I_Data)
*           功    能:从si_dog脚发送数据
*           参    数:I_Data
*           返 回 值:无
**************************************************************************/
void Byte_in(uchar I_Data)
{
	uchar i ;
	
	for(i=0;i<8;i++)
	{
	   sck_dog=0;
	   if(0x80&I_Data) 
	      {si_dog=1;}
       else 
	      {si_dog=0;}
	   NOP;
	   NOP;
	   NOP;
       sck_dog=1;
	   I_Data=I_Data<<1;
         }
       
   si_dog=0;
}

/*************************************************************************
*           函数原型:void  Wren_25045()
*           功    能:打开看门狗写使能。
*           返 回 值:无
**************************************************************************/
void Wren_25045()//Open write enable
{
  	STAR_25045();
	Byte_in(WREN);
	//sck_dog=0;
//	_nop_();
          NOP;
	   NOP;
	   NOP;
	cs_dog=1;
}		
/*************************************************************************
*           函数原型:uchar  RDSR_25045()
*           功    能:读看门狗状态寄存器。
*           返 回 值:返回Status看门狗的状态。
**************************************************************************/
uchar RDSR_25045()//Read statinon regester
{
	uchar Status=0;
       // sck_dog=0;
	cs_dog=0;
	Byte_in(RDSR);
	Status=Byte_out();
	//sck_dog=0;
	cs_dog=1;
    return(Status);
}
/*************************************************************************
*           函数原型:uchar  WIP_POLL()
*           功    能:看门狗写检查。
*           返 回 值:无
**************************************************************************/
void WIP_POLL()
{
   	uchar i,Status;
	for(i=0;i<150;i++)
	{
    	Status=RDSR_25045();
	   if(!(Status&0x01)) 
         {return;}
     }
}
/*************************************************************************
*           函数原型:uchar  Byte_Write(uchar DPH,DPL,DATA)
*           功    能:写看门狗。
*           参    数:DPH写地址高位,DPL写地址低位,DATA写数据。
*           返 回 值:无。
**************************************************************************/
void Byte_Write(uchar DPH,DPL,DATA)
{
   // EA=0;
	Wren_25045();
	STAR_25045();
	//cs_dog=0;
	if(DPH&0x01)   {Byte_in(WRITE|0x08);}
	else {Byte_in(WRITE);  }
	Byte_in(DPL);
	Byte_in(DATA);
	//sck_dog=0;
	cs_dog=1;
	WIP_POLL();
	//EA=1;
}
/*************************************************************************
*           函数原型:uchar Byte_Read(uchar DPH,DPL)
*           参    数:DPH读地址高位,DPL读地址低位。
*           返 回 值:DATA。
**************************************************************************/
uchar Byte_Read(uchar DPH,DPL)
{
    uchar DATA;
   // EA=0;
	STAR_25045();
	//cs_dog=0;
	if(DPH&0x01)   {Byte_in(READ|0x08);}
	else{ Byte_in(READ);  }
	Byte_in(DPL);
	DATA=Byte_out();
	//sck_dog=0;
	//NOP;
	// NOP;
	 //NOP;
	//cs_dog=1;
	//WIP_POLL();
	//EA=1;
	return(DATA);
}
/*************************************************************************
*           函数原型:void   WRSR_25045()
*           功    能:写看门狗寄存器。
*           返 回 值:无。
*           备    注:看门狗超时周期1.4秒。
**************************************************************************/
void WRSR_25045()
{
	Wren_25045();
	STAR_25045();
	Byte_in(WRSR);
	Byte_in(WD1_4S);//write status register value
	//sck_dog=0;
        cs_dog=1;
	WIP_POLL();
}
void REST_DOG()
{
	cs_dog=0;
        NOP;
	  NOP;
	  NOP;	
	 cs_dog=1;
}
/*main()
{
	WRSR_25045();
	while(1)
		{
			cs_dog=1;
			delay_ms(220);
			_nop_();
			cs_dog=0;
		}
}*/

⌨️ 快捷键说明

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