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

📄 mcu51_set.c

📁 本文件用于智能云台电机控制和图像处理
💻 C
字号:
/*----------------------------------------------------------
系统时钟取11.059M
串口在初始时取9600发送,延时操作和下一级协调,然后按相机的的要求
设置
----------------------------------------------------------*/

#include <general.h>
volatile unsigned char bdata  bflag;
sbit bflag_0=bflag^0; sbit bflag_1=bflag^1;	sbit bflag_2=bflag^2; 
sbit bflag_3=bflag^3; sbit bflag_4=bflag^4; sbit bflag_5=bflag^5;
sbit bflag_6=bflag^6;sbit bflag_7=bflag^7;	
extern volatile unsigned char	flagTxd;
extern volatile unsigned char countTxd;
extern volatile unsigned int comTxd ;
void TxdString(unsigned int com)
{ 
if(flagTxd==0xee)
{
flagTxd=0xff;
countTxd=0;
comTxd=com;
SBUF=0xff;
} 
}
void  GlobalSet()
{
 AUXR   = 1;               //全增益和外部存储器输出关闭
 P0=P1=P2=P3=P4=0xff;
}
void IntSet()
  {
  	EX0=0,EX1=0,EX2=0,EX3=0;    //中断四个外部全关闭

	ET0=1,ET1=0;ET2=1;ES=1;				//定时器02开
	TCON=0;
	IPH=0x10;IP=0x30;         	    //串口为3定时器0为1级2:2
    XICON=0;                    //不允许外部23中断
  }
 void  IntEnable(void)
{
	EA=1;						//全局开
}
void IntDisable(void)
{
	EA=0;						//全局关
}
void TimerSet(void)
{
  	TCON=0;
    TMOD=0x23;					//定时器0工作于模式3两个定时器,定时器1工作于8位重装
	T2CON=0;					//定时器2自动重装
                             
	                            
}
void SciSet(void)
{
	SCON=0x50;					//定义串口工作方式
    PCON=0x80;                    //定时器1溢出/2,=0x80则直接采用溢出率
}

void HIntSet()
  {
  	EX0=0,EX1=0,EX2=1,EX3=0;    

	ET0=0,ET1=0;ET2=1;ES=0;	
	TCON=0;			
	IPH=0x40;IP=0;         	    
    XICON=0x0d;                    
  }
void VIntSet()
  {
  	EX0=1,EX1=1,EX2=0,EX3=0;    

	ET0=1,ET1=0;ET2=0;ES=0;	
	TCON=5;			
	IPH=0x01;IP=0x05;         	   
    XICON=0;                    
  }
/*------------------------------------------------------

串行口计算公式如下;
RCLK=1接收采用定时器2   Baud=Frequence/2/(65536-T2)/16
TCLK=0发送采用定时器1   Baud=Frequence/12/(256-TH1)/16
定时器1溢出=Frequence/12/(256-TH1)


--------------------------------------------------------*/
void TxdBaud19200()
{
   TH1=-3;               //重装值
   TL1=TH1;
}
void TxdBaud9600()
{
   TH1=-6;               //重装值
   TL1=TH1;
}
void TxdBaud4800()
{
   TH1=-12;               //重装值
   TL1=TH1;
}
void TxdBaud2400()
{
     TH1=-24;               //重装值
   TL1=TH1;
}


void T0Start(void)
{
	TR0=1;					
	}
void T0Stop(void)
{
	TR0=0;
			 //计数关   
}
void T1Start(void)
{
	TR1=1;					
	}
void T1Stop(void)
{
	TR1=0;
			 //计数关   
}
void T2Start(void)

{
	TR2=1;
}
void T2Stop(void)
{
	TR2=0;
}
void Delay()
{
unsigned int x;
for(x=0;x<0xffff;x++)
WdtCls();
}
void HVolecity( unsigned int x)
{

	RCAP2L=(unsigned char)x;
	RCAP2H=(unsigned char)(x>>8);
}
void VVolecity(unsigned char x)
{

	TL0=x;

}
void BeginCharOut()
   {
   		
	STB6464=1;CLK6464=1;STB6464=0;	CLK6464=0; 
	DATA6464=1;CLK6464=1;CLK6464=0;
	DATA6464=1;CLK6464=1;CLK6464=0;
	DATA6464=0;CLK6464=1;CLK6464=0;
	DATA6464=0;CLK6464=1;CLK6464=0;
	DATA6464=0;CLK6464=1;CLK6464=0;
	DATA6464=0;CLK6464=1;CLK6464=0;
	DATA6464=0;CLK6464=1;CLK6464=0;
	DATA6464=0;CLK6464=1;
	}
void SecCharOut(unsigned char x)
   {
   	CLK6464=0; 
	DATA6464=(0x80&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x40&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x20&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x10&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x08&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x04&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x02&x);CLK6464=1;CLK6464=0;
	DATA6464=(1&x)	; CLK6464=1; 
	}
 void EndCharOut()
   {
   	STB6464=1;
	}
void CharOut(unsigned int x)
   {
   	if(x<0x100)
	{				
	STB6464=1;CLK6464=1;STB6464=0;	CLK6464=0; 
	DATA6464=(0x80&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x40&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x20&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x10&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x08&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x04&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x02&x);CLK6464=1;CLK6464=0;
	DATA6464=(1&x)	;  	CLK6464=1; 	STB6464=1;	 
	}
	else
	{
	STB6464=1;CLK6464=1;STB6464=0;	CLK6464=0; 
	DATA6464=(0x8000&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x4000&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x2000&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x1000&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x0800&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x0400&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x0200&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x0100&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x80&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x40&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x20&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x10&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x08&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x04&x);CLK6464=1;CLK6464=0;
	DATA6464=(0x02&x);CLK6464=1;CLK6464=0;
	DATA6464=(1&x)	;  	CLK6464=1; 	STB6464=1;
	}
   }
 
void HMotorOut(unsigned long x)
{
	char t;
	unsigned long y=0x40000;
	HSTB=1;
	HSTB=0;
	HCLK=0;
	for(t=18;t>=0;t--)
	{
	HCLK=0;
	HDATA=(y&x)	;
	HCLK=!HCLK;
	y>>=1;
	}
	HSTB=1;
	HCLK=0;
}
void VMotorOut(unsigned long x)
{
	char t;
	unsigned long y=0x40000;
	VSTB=1;
	VSTB=0;
	VCLK=0;
	for(t=18;t>=0;t--)
	{
	VCLK=0;
	VDATA=(y&x)	;
	VCLK=!VCLK;
	y>>=1;
	}
	VSTB=1;
	VCLK=0;
}

void  IICWrite(unsigned int addr,unsigned char byte)
{
   unsigned	char t,temp;
	unsigned int y;
	WdtCls();
   SCL=0; SCL=1;   SDA=1;	  SDA=0;    SCL=0;  
     temp=0xa0;y=0x80 ;
	for(t=7;t>=0;t--)
	{
	SDA=(y&temp);
	SCL=1;
	SCL=0;
	y>>=1;
	}
	_nop_();  _nop_(); _nop_(); _nop_();
	temp=(unsigned char)(addr>>8);y=0x80;
	for(t=7;t>=0;t--)
	{
	SDA=(y&temp);
	SCL=1;
	SCL=0;
	y>>=1;
	}
		_nop_();  _nop_(); _nop_(); _nop_();
	temp=(unsigned char)(addr);y=0x80 ;
	for(t=7;t>=0;t--)
	{
	SDA=(y&temp);
	SCL=1;
	SCL=0;
	y>>=1;
	}
		_nop_();  _nop_(); _nop_(); _nop_();
	temp=byte;y=0x80 ;
	for(t=7;t>=0;t--)
	{
	SDA=(y&temp);
	SCL=1;
	SCL=0;
	y>>=1;
	}
   	_nop_();  _nop_(); _nop_(); _nop_();
	 SCL=1;   SDA=0;	  SDA=1;    SCL=0; 
	 for( y=0;y<500;y++)
	 WdtCls();
}


unsigned char IICRead(unsigned int addr)
{
   unsigned	char t,temp;
	unsigned int y;
	WdtCls();
   SCL=0; SCL=1;   SDA=1;	  SDA=0;    SCL=0;  
     temp=0xa0;y=0x80  ;
	for(t=7;t>=0;t--)
	{
	SDA=(y&temp);
	SCL=1;
	SCL=0;
	y>>=1;
	}
	_nop_();  _nop_(); _nop_(); _nop_();
	temp=(unsigned char)(addr>>8);y=0x80  ;
	for(t=7;t>=0;t--)
	{
	SDA=(y&temp);
	SCL=1;
	SCL=0;
	y>>=1;
	}
		_nop_();  _nop_(); _nop_(); _nop_();
	temp=(unsigned char)(addr);y=0x80 ;
	for(t=7;t>=0;t--)
	{
	SDA=(y&temp);
	SCL=1;
	SCL=0;
	y>>=1;
	}
		_nop_();  _nop_(); _nop_(); _nop_();
		 SCL=0; SCL=1;   SDA=1;	  SDA=0;    SCL=0;  
     temp=0xa1;y=0x80 ;
	for(t=7;t>=0;t--)
	{
	SDA=(y&temp);
	SCL=1;
	SCL=0;
	y>>=1;
	}
	_nop_();  _nop_(); _nop_(); _nop_();
	y=0;
	for(t=0;t<=7;t++)
	{
	 SCL=1;
	y+=(unsigned char)SDA;
	SCL=0;
	temp<<=1;
	}
	y>>=1 ;
	temp=(unsigned char) y;
  
	 SCL=1;   SDA=0;	  SDA=1;    SCL=0; 
	 return(temp);

}

⌨️ 快捷键说明

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