📄 macro.h
字号:
#ifndef MACRO_H
#define MACRO_H
//特殊寄存器定义,W78E365
sfr CHPENR = 0xF6;
sfr CHPCON = 0xBF;
sfr XRAMAH = 0xA1;
#define EnableAuxRam();\
{\
CHPENR = 0x87;\
CHPENR = 0x59;\
CHPCON |= (0x01<<4);\
CHPENR = 0;\
}
//宏函数定义
//发送一个字符到485总线
#define KB_SEND_DATA(ucSendData);\
{\
g_FlagSendgKBMsg = 1;\
g_ucTimerWaitKB = TIME_WAIT_KB_1_PKG;\
g_FlagRecvgKBMsg = 0;\
g_FlagTokenSending = 0;\
g_ucKBMsgPointer = 0;\
g_ucKBCheckSum = 0;\
pin_SelAux = 0;\
pin_Max485Dir = 1;\
SBUF = ucSendData;\
}
/*//外出布防延时和进入延时
#define START_OUT(); \
{\
g_FlagInDelaying = 0;\
g_uiArmDelayTimer = BCD_Hex(g_ucOutDelay) * 10;\
g_FlagOutDelaying = 1;\
g_FlagInfoOutDelayEnd = 0;\
}*/
//开启蜂鸣器,警号,时间为零也要赋值计时器
#define BELL(); \
{\
if (g_FlagTrumpSel && (0 != g_ucTrumpTime))\
{\
g_FlagTrnOnTrump = 1;\
}\
ET0 = 0;g_uiTrumpTimer = 60 * BCD_Hex(g_ucTrumpTime);ET0 = 1;\
g_FlagTrumpOn = 1;\
}
//电话报警结束,拨打遍数已到或用户已确认
/*#define STOP_PHONE_INF();\
{\
if (0 == g_ucAdemcoEvts)\
{\
g_ucCallgTimers = MAX_TIMES_CALL + 1;\
}\
g_FlagCallEnd = 1;\
g_FlagDialing = 0;\
g_FlagDialPause = 0;\
g_ucVoiceTimes = MAX_TIMES_VOICE_ONCE;\
}*/
//每段现场监听的时间,以秒为单位,设为30时,开始监听不需重设,和按键间隔相同
#define TIME_LSTN 30
//开始现场监听
#define START_LISTEN_IN();\
{\
P0 = 0x1B;\
g_ucTimerPhoneKey = 30;\
}
#define START_VOICE();\
{\
g_FlagPhoneSPkg = 1;\
g_aucDTMFBuff[0] = g_ucUserPwdH >> 4;\
g_aucDTMFBuff[1] = (g_ucUserPwdH & 0x0F);\
g_aucDTMFBuff[2] = (g_ucUserPwdL >> 4);\
g_aucDTMFBuff[3] = (g_ucUserPwdL & 0x0F);\
g_ucDTMFPnt = 4;\
g_ucVoiceTimes = MAX_TIMES_VOICE_ONCE;\
SendISD1730CmnCmd(PWR_UP_ISD);\
PlayISD(9, 0);\
pin_DTMFGenCE = 0;\
g_FlagPlayVoice = 1;\
}
//pin_DTMFGenCE = 0;因为按键之后要有回应音
//ISD1730 命令定义,删除了部分定义,防止使用
#define PWR_UP_ISD 0x01
#define STOP_ISD 0x02 //停止当前操作
#define RESET_ISD 0x03 //复位,发送后需再发"PWR_UP",连发出错
#define CLR_INT 0x04 //清除中断和EOM位
#define RD_STATUS 0x05 //后跟2字节,读取状态寄存器和当前地址
#define RD_PLAY_PTR 0x06 //后跟3字节,读取状态寄存器、当前地址和播放指针
#define PWR_DOWN 0x07
#define RD_REC_PTR 0x08 //后跟3字节,读取状态寄存器、当前地址和录音指针
#define RD_DEV_ID 0x09 //后跟2字节,读取器件ID
#define PLAY_CUR 0x40 //播放当前曲目
#define REC 0x41 //从当前地址开始录音
#define RD_APC 0x44 //后跟3字节,读取状态寄存器、当前地址和APC寄存器
#define WR_APC1 0x45 //后跟2字节,将D11:D0写入APC寄存器,由VOC脚调节音量.
#define WR_APC2 0x65 //后跟2字节,将D11:D0写入APC寄存器,并由D2:D0调节音量.
#define WR_NVCFG 0x46 //将APC的内容写到NVCFG
#define LD_NVCFG 0x47 //将NVCFG的内容加载到APC
#define PLAY_FWD 0x48 //下一曲
#define CHK_MEM 0x49 //检查环形存储结构
#define EN_EXTCLK 0x4A //是否使能外部时钟
#define SET_PLAY 0x80 //后跟5个字节,从<S10:S0>开始播放,直到<E10:E0>或EOM
#define SET_REC 0x81 //后跟5个字节,从<S10:S0>开始录音,直到<E10:E0>
#define SET_ERASE 0x82 //后跟5个字节,擦除<S10:S0>到<E10:E0>的内容
#endif //#ifndef MACRO_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -