?? drive.cpp
字號:
#include "stdafx.h"
#include "conio.h"
#include "drive.h"
//wreg1(軸指定,數據) ----------寫入寄存器1設定
void wreg1(int axis,int wdata)
{
_outpw(BASE_ADR+WR0,(axis<<8)+0xf); //軸指定
_outpw(BASE_ADR+WR1,wdata);
}
//wreg2 (軸指定,數據)----------寫入寄存器2設定
void wreg2(int axis,int wdata)
{
_outpw(BASE_ADR+WR0,(axis<<8)+0xf); //軸指定
_outpw(BASE_ADR+WR2,wdata);
}
//wreg3 (軸指定,數據)----------寫入寄存器3設定
void wreg3(int axis,int wdata)
{
_outpw(BASE_ADR+WR0,(axis<<8)+0xf); //軸指定
_outpw(BASE_ADR+WR3,wdata);
}
//command(軸指定,命令編碼)-------命令寫入
void command(int axis,int cmd)
{
_outpw(BASE_ADR+WR0,(axis<<8)+cmd);
}
//range(軸指定,數據)------------范圍(R)設定
void range(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x00);
}
//acac(軸指定,數據) ------------變化率(K)設定
void acac(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8+0x01));
}
//acc(軸指定,數據) ------------加/減速(A)設定
void acc(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8)+0x02);
}
//dec(軸指定,數據) ------------減速度(D)設定
void dec(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8)+0x03);
}
//startv(軸指定,數據)------------初始速度(SV)設定
void startv(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8)+0x04);
}
//speed(軸指定,數據) ------------驅動速度(V)設定
void speed(int axis,int wdata)
{
_outpw(BASE_ADR+WR6,wdata);
_outpw(BASE_ADR+WR0,(axis<<8)+0x05);
}
//pulse(軸指定,數據) ------------輸出脈沖數/終點(P)設定
void pulse(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x06);
}
//decp(軸指定,數據) ------------手動減速點(DP)設定
void decp(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x07);
}
//center(軸指定,數據)------------圓弧中心點(C)設定
void center(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x08);
}
//lp(軸指定,數據) ------------邏輯位置計數器(LP)設定
void lp(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x09);
}
//ep(軸指定,數據) ------------邏輯位置計數器(EP)設定
void ep(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x0a);
}
//compp(軸指定,數據) ------------COMP+(CP)設定
void compp(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x0b);
}
//compm(軸指定,數據) ------------COMP+(CM)設定
void compm(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x0c);
}
//accofst(軸指定,數據)-----------加速計數器偏移(AO)設定
void accofst(int axis,long wdata)
{
_outpw(BASE_ADR+WR7,(wdata>>16)&0xffff);
_outpw(BASE_ADR+WR6,wdata&0xffff);
_outpw(BASE_ADR+WR0,(axis<<8)+0x0d);
}
//readlp(軸指定) ------------邏輯位置計數器數值(LP)讀出
long readlp(int axis)
{
long a;long d6;long d7;
_outpw(BASE_ADR+WR0,(axis<<8)&0x10);
d6=_inpw(BASE_ADR+RR6);
d7=_inpw(BASE_ADR+RR7);
a=d6+(d7<<16);
return(a);
}
//readep(軸指定) ------------邏輯位置計數器數值(EP)讀出
long readep(int axis)
{
long a;long d6;long d7;
_outpw(BASE_ADR+WR0,(axis<<8)&0x11);
d6=_inpw(BASE_ADR+RR6);
d7=_inpw(BASE_ADR+RR7);
a=d6+(d7<<16);
return(a);
}
//wata(軸指定) ------------等驅動結束
void wait(int axis)
{
while(_inpw(BASE_ADR+RR0)&axis);
}
//next_wait() ------------等連續插補下一個數據設定
void next_wait(void)
{
while((_inpw(BASE_ADR+RR0)&0x0200)==0);
}
//bp_wait() ------------等BP插補下一個數據設定
void bp_wait(void)
{
while((_inpw(BASE_ADR+RR0)&0x6000)==0x6000);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -