基于ARM智能拨号器的设计和实现
MT8880_WriteCRACRB(dBytesCRA, dBytesCRB);//将1101,0000 分别写入到CRA 和CRB
dLength = strlength(pSendNum); //保存要写入到MT8880 的被叫号码的长度
for(dL = 0; dL dLength; dL++) { //连续发送dLength 个DTMF 信号
switch(*pSendNum++) { //判断ARM 处理器传来的字符型的电话号码
case '1':{
dBytesSend[3] = 0; //D3D2D1D0=0001
dBytesSend[2] = 0;
……
break;}
case '2':{
dBytesSend[3] = 0; //D3D2D1D0=0010
……
break;}
……
default:
{
break;
}
}
MT8880_WriteDataReg(dBytesSend); //写发送数据寄存器
for(iTemp = 5000; iTemp; --iTemp) {
MT8880_ReadStateReg(dBytesSReg); //读取状态寄存器的值
if(dBytesSReg[1] == 1) //判断状态寄存器的第二位是否为1
break; //即发送数据寄存器满,准备发送数据
}
2.信号音处理程序
首先将芯片 MT8880设置为呼叫处理、中断模式,信号音处理程序分为四大部分:一是拨号前检测是否允许拨号 ,即检测信号音是拨号音还是忙号音;二是拨号后检测是否接通,即检测信号音是回铃音、忙号音还是占线音;三是拨号接通后检测是否应答,即检测回铃音是否消失;四是检测各种信号音:拨号音、忙号音、回铃音。
各种信号音的特点:拨号音在 5秒内是连续音;忙号音在 5秒内 0.35秒通,0.35秒断;回铃音在 5秒内是 1秒通,4秒断。
3.串行通信程序主要功能是接收上位机的命令,执行相应的操作。将另撰文详说。
五、小结
首先对智能拨号器的硬件组成进行了详细的研究和说明,并对部分软件代码进行了解释。该系统已经测试使用,它具有成本低、功耗小、便于携带、功能易于扩展等特点,在一定的应用背景下有很好的使用前景。
评论