📄 interrupt.h
字号:
interrupt [TIMER1_OVF1_vect] void Timer1_OVF_interrupt(void)
{
int k;
unsigned Cmd;
unsigned char near *DaAdr;
TCNT1=55536;
Cmd=EERead(CMDADR);
if ((Cmd<1) || (Cmd>=7)) {
GetAbsEncoderPos();
DAError1=Pulse_Cnt1-AbsEncoderPos1;
DAError2=Pulse_Cnt2-AbsEncoderPos2;
DAError3=Pulse_Cnt3-AbsEncoderPos3;
if (DDAOK==0) DDAOK=1;
if (DAError1>2047 && DAError1<4095) DAError1=2047;
if (DAError1<-2048 && DAError1>-4096) DAError1=-2048;
if (DAError2>2047 && DAError2<4095) DAError2=2047;
if (DAError2<-2048 && DAError2>-4096) DAError2=-2048;
if (DAError3>2047 && DAError3<4095) DAError3=2047;
if (DAError3<-2048 && DAError3>-4096) DAError3=-2048;
}
DaAdr=(unsigned char near*) DA1LO;
k=DAError1;
k=k+CONST;
*DaAdr=k;
DaAdr++;
*DaAdr=k>>8;
DaAdr=(unsigned char near*) DA2LO;
k=DAError2;
k=k+CONST;
*DaAdr=k;
DaAdr++;
*DaAdr=k>>8;
DaAdr=(unsigned char near*) DA3LO;
k=DAError3;
k=k+CONST;
*DaAdr=k;
DaAdr++;
*DaAdr=k>>8;
if (AccStart==1) {
if (AccMSec!=0) AccMSec--;
}
if (JogStart==1) {
if (JogSec!=0) {
MiliSec--;
if (MiliSec==0) {
JogSec--;
MiliSec=1000;
}
}
}
}
interrupt [UART_RX_vect] void UART_RX_interrupt(void)
{
unsigned char Temp,i,Num,EEAdr;
//PORTD|=0x20;
RxdBuf[RxdIndex]=UDR;
if (RxdBuf[RxdIndex]==CR) {
RxdOK=1;
if ( RxdBuf[0]==ESC) {
TxdBuf[0]=ESC;
switch (RxdBuf[1]) {
case 'R':
TxdBuf[1]='A';
if (RxdBuf[2]>'9') EEAdr=(RxdBuf[2]-7)&0x0f;
else EEAdr=RxdBuf[2]&0x0f;
EEAdr<<=4;
if (RxdBuf[3]>'9') EEAdr|=((RxdBuf[3]-7)&0x0f);
else EEAdr|=(RxdBuf[3]&0x0f);
if (RxdBuf[4]>'9') Num=(RxdBuf[4]-7)&0x0f;
else Num=RxdBuf[4]&0x0f;
for (i=0;i<Num;i++) {
Temp=EERead(EEAdr+i);
if ((Temp>>4)>0x09) TxdBuf[2+(i<<1)]=((Temp>>4)|0x30)+7;
else TxdBuf[2+(i<<1)]=(Temp>>4)|0x30;
if ((Temp&0x0f)>0x09) TxdBuf[3+(i<<1)]=((Temp&0x0f)|0x30)+7;
else TxdBuf[3+(i<<1)]=(Temp&0x0f)|0x30;
}
TxdBuf[2+(i<<1)]=CR;
break;
case 'W':
if (RxdBuf[2]>'9') EEAdr=(RxdBuf[2]-7)&0x0f;
else EEAdr=RxdBuf[2]&0x0f;
EEAdr<<=4;
if (RxdBuf[3]>'9') EEAdr|=((RxdBuf[3]-7)&0x0f);
else EEAdr|=(RxdBuf[3]&0x0f);
i=4;
PORTD|=0x20;
while (RxdBuf[i]!=CR) {
if (RxdBuf[i]>'9') Temp=(RxdBuf[i]-7)&0x0f;
else Temp=RxdBuf[i]&0x0f;
Temp<<=4;
i++;
if (RxdBuf[i]>'9') Temp|=((RxdBuf[i]-7)&0x0f);
Temp|=(RxdBuf[i]&0x0f);
i++;
EEWrite(EEAdr,Temp);
EEAdr++;
if (i>14) break;
}
PORTD&=0xdf;
break;
case 'S':
Start=1;
EEWrite(RUNADR,Start);
break;
case 'Q':
Start=0;
EEWrite(RUNADR,Start);
break;
default:
break;
}
}
RxdIndex=0;
}
else {
RxdIndex++;
if (RxdIndex>14) RxdIndex=0;
}
//PORTD&=0xdf;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -