?? mcu51_set.c
字號:
/*----------------------------------------------------------
系統(tǒng)時鐘取11.059M
串口在初始時取9600發(fā)送,延時操作和下一級協(xié)調(diào),然后按相機的的要求
設(shè)置
----------------------------------------------------------*/
#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; //全增益和外部存儲器輸出關(guān)閉
P0=P1=P2=P3=P4=0xff;
}
void IntSet()
{
EX0=0,EX1=0,EX2=0,EX3=0; //中斷四個外部全關(guān)閉
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; //全局關(guān)
}
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發(fā)送采用定時器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;
//計數(shù)關(guān)
}
void T1Start(void)
{
TR1=1;
}
void T1Stop(void)
{
TR1=0;
//計數(shù)關(guān)
}
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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -