📄 sub_fuc.h
字号:
#ifndef _SUB_FUNC_H_
#define _SUB_FUNC_H_
inline void clear_watchdog();
int parity(int _data)
{
int parity=0;
int i=0;
for(; i<sizeof(int); i++)
{
if ((_data&(0x0001<<i))==(0x0001<<i))
parity++;
}
return parity;
}
int ad_Data;
int pc_Data;
inline void ad_rd() /*读入系统板AD模块的输出信号*/
{
ADC_RC_LOW;
while(ADC_RD & 0x0800 == 0) /*问题:死循环*/
continue;
ADC_RC_HIGH;
ad_Data = ADC_RD;
ad_Data &= 0x0FFF;
}
inline void da_wr() /*写入系统板DA模块的输入信号*/
{
DAC_CS_LOW;
DAC_OE_LOW;
DAC_WR = pc_Data;
}
inline void dsp_inp() /*下位机的输入信号*/
{
int _pty1;
int _pty;
while(IOC_RD & 0x0001 == 0) /*问题:死循环*/
continue;
pc_Data = IOD_RD;
_pty1=((int)IOC_RD&0x1E)>>1;
_pty=parity(IOD_RD);
if(_pty!=_pty1)
pc_Data=0;
}
inline void dsp_outp() /*下位机的输出信号*/
{
int pty=0;
IOC_WR = 0x00;
IOD_WR = ad_Data;
pty=parity(IOD_WR);
// IOC_WR=(IOC_WR&~0x1E)|(parity<<1);
}
inline void cWDT() /*踢一次看门狗*/
{
* WDKEY = wd_rst_1; /*置WDKEY=0x0055*/
* WDKEY = wd_rst_2; /*置WDKEY=0x00AA*/
}
void Timer1() /*定时器中断*/
{
dsp_inp();
da_wr();
cWDT();
ad_rd();
dsp_outp();
cWDT();
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -