main.c

来自「dsp的定时器」· C语言 代码 · 共 106 行

C
106
字号
#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 + =
减小字号Ctrl + -
显示快捷键?