📄 ht9200a.c
字号:
/***********************************************************/
#include<reg51.h>
#include<intrins.h>
sbit HT9200_CE=P1^0;
sbit HT9200_DATA=P1^1;
sbit HT9200_CLK=P1^2;
#define delay_5us() _nop_();_nop_();_nop_();_nop_()
/***********************************************************
功能:延时
入口:延迟的毫秒数
出口:无
2006.10.02
************************************************************/
void delayMs(unsigned char secnd)
{
unsigned int i;
while(secnd--)
{
for(i=200;i>0;i--);
}
}
/********************************************
功能:发送一位DTMF号码
入口:DTMF码数据
出口:无
全局变量:无
2006.10.02
*******************************************/
void sendHt9200Bit(unsigned char dtmfData)
{
unsigned char count=5;
if(dtmfData==0)dtmfData=10;
HT9200_CE=0; //选中HT9200
delayMs(10); //延时10ms,以使其起振
while(count--)
{
if(dtmfData&0x01)
{
HT9200_DATA=1;
}
else
{
HT9200_DATA=0;
}
//delay_5us();
HT9200_CLK=0;
delay_5us();
HT9200_CLK=1;
dtmfData>>=1;
}
delayMs(60); //延时60ms,发送DTMF
HT9200_CE=1; //禁止HT9200
}
/*-------------------------------------------------------------------
功能:发送一串DTMF号码
入口:1。发送数据的指针。2。号码长度
全局变量:无
2006.10.02
------------------------------------------------------------------------
*/
void sendDTMF(unsigned char *s,unsigned char l)
{
while(l--)
{
sendHt9200Bit(*s);
delayMs(50); //延时50msDTMF间隔
s++;
}
}
void main(void)
{while(1)
{unsigned char data haoma[]={1,3,4,7,4,4,6,9,8,0,6};//test
sendDTMF(haoma,11);
//HT9200_CE=1; //禁止HT9200
//delayMs(50); //延时50msDTMF间隔
while(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -