📄 main.c
字号:
#include "stdio.h"
#define TIM (int*)0x24
#define PRD (int*)0x25
#define TCR (int*)0x26
#define IMR (int*)0x0
#define ST1 (int*)0x7
#define DTMF_YES (int *)0x400 //表示有DTMF信号产生
#define DTMF_NUM (int *)0x401 //表示所产生的DTMF的值
#define HZ450_YES (int *)0x402 //表示有450HZ的电信信号产生
#define HZ450_KIND (int *)0x403 //表示产生的电信信号的种类
#define busytone 5 //忙音
int SPACE_450=0;
int SPACE_DTMF=0;
int temp450=0;
int tempdtmf=0;
int one450=0;
int zero450=0;
int onedtmf=0;
int zerodtmf=0;
int sect=0;
/////////////////////
intr_g_enable()
{
asm("\tRSBX INTM");
}
///////////////////////
intr_g_disable()
{
asm("\tSSBX INTM");
}
///////////////////////////////
void interrupter_Initial(void)
{
*IMR = 0x8;
intr_g_enable();
}
///////////////////////////////////////
void CLK_Initial()
{
*PRD = 0xffff;
}
void CLK_Enable()
{
*TCR = 0xfef;
}
void main()
{
CLK_Initial();
interrupter_Initial();
CLK_Enable();
}
interrupt void My_Clk_ISR()
{
SPACE_450 = *HZ450_YES;
SPACE_DTMF = *DTMF_YES;
///////////////////////////
if(SPACE_450==1)
one450 = one450+1;
else if(SPACE_450==0)
zero450 = zero450+1;
///
if(SPACE_DTMF==1)
onedtmf = onedtmf+1;
else if(SPACE_DTMF==0)
zerodtmf = zerodtmf+1;
///
if(temp450!=SPACE_450)
{
sect++;
if(sect==2)
{
if(one450>33&&one450<37&&zero450>33&&zero450<37)//busy tone
*HZ450_KIND = busytone;
//其他电信信号 ......
sect=0;
}
}
//////////////////////////
temp450 = SPACE_450;
tempdtmf = SPACE_DTMF;
/*end of timer isr*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -