⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macro.h

📁 内容摘要: LHD6000主板主芯片程序 ISD1730时序说明: 参考:void Send_1Byte(uchar ucData_s)和uchar Receive_1Byte(void)的说明.
💻 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 + -