📄 interrupt.c
字号:
#define INT_GLOBALS
#include <variable.H>
void serial(void) interrupt 4 using 1
{
if ( TI ) {
TI=0;
if(Snd[0].Head == Snd[0].Tail) { Snd[0].Sending = 0; TR=0; }
else {
SBUF=Snd[0].mData[Snd[0].Head++];
Snd[0].Head = Snd[0].Head % LEN_SND;
}
}
if ( RI ) {
RI=0;
Rcv[0].mData[Rcv[0].Tail++]=SBUF;
Rcv[0].Tail = Rcv[0].Tail % LEN_RCV;
}
}
void COM1(void) interrupt 0 using 1
{
unsigned char xdata cTmp;
cTmp = IIR1;
while ((cTmp & 0x06) != 0) {
if ((cTmp & 0x06) == 0x02) { // send buff empty
IER1 = 0x01; // bit0: receive valid; bit1: send buffer empty
}
if ((cTmp & 0x06) == 0x04) { // receive valid
Rcv[1].mData[Rcv[1].Tail++] = D_SER1;
Rcv[1].Tail = Rcv[1].Tail % LEN_RCV;
}
cTmp = IIR1;
}
cTmp = LSR1;
cTmp = MSR1;
}
void COM2(void) interrupt 2 using 1
{
unsigned char xdata cTmp;
cTmp = IIR2;
while ((cTmp & 0x06) != 0) {
if ((cTmp & 0x06) == 0x02) { // send buff empty
// if( Snd[2].Head != Snd[2].Tail ) {
// D_SER2 = Snd[2].Data[Snd[2].Head++];
// Snd[2].Head = Snd[2].Head % LEN_SND;
// }
// else {
// Snd[2].Sending = 0;
// IER2 = 0x01;
// }
IER1 = 0x01; // bit0: receive valid; bit1: send buffer empty
}
if ((cTmp & 0x06) == 0x04) { // receive valid
Rcv[2].mData[Rcv[2].Tail++] = D_SER2;
Rcv[2].Tail = Rcv[2].Tail % LEN_RCV;
}
cTmp = IIR2 ;
}
cTmp = LSR2;
cTmp = MSR2;
}
void timer0(void) interrupt 1 using 1
{
static unsigned int xdata TimerCnt;
static unsigned char xdata TimerSecond;
TimerCnt++;
if (TimerCnt >=400) {
TimerCnt = 0;
TimerSecond++;
RELAY2 = 0;
if (TimerSecond >= 2) {
TimerSecond = 0;
enPoll = 1;
}
}
if (RS485SndDelTime > 0) {
RS485SndDelTime--;
if (RS485SndDelTime == 0) {
SBUF=Snd[0].mData[Snd[0].Head++];
Snd[0].Head = Snd[0].Head % LEN_SND;
}
}
if( Snd[1].Head != Snd[1].Tail ){
D_SER1=Snd[1].mData[Snd[1].Head++];
Snd[1].Head = Snd[1].Head % LEN_SND;
}
else
Snd[1].Sending = 0;
if( Snd[2].Head != Snd[2].Tail ){
D_SER2=Snd[2].mData[Snd[2].Head++];
Snd[2].Head = Snd[2].Head % LEN_SND;
}
else
Snd[2].Sending = 0;
Address=D_ADDR & 0x0f;
TH0=0xEE; // 0xEE
TL0=0x00; // 0x00
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -