最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

mt8880可用资料

来源:动视网 责编:小OO 时间:2025-09-29 18:54:37
文档

mt8880可用资料

程序发送程序    程序执行后,将以DTMF方式发送预存在数组W_BUF中的7位数码(5135535)。#include#defineucunsignedchar#defineuiunsignedint/*子函数(子程序)说明*/voidinitialize(void);voidtran_init(void);voidtransmit(ucdata*p,uccount);voiddelay(uil);/*主函数(主程序)*/voidmain(void){ucdataw_buf[7];  SP=
推荐度:
导读程序发送程序    程序执行后,将以DTMF方式发送预存在数组W_BUF中的7位数码(5135535)。#include#defineucunsignedchar#defineuiunsignedint/*子函数(子程序)说明*/voidinitialize(void);voidtran_init(void);voidtransmit(ucdata*p,uccount);voiddelay(uil);/*主函数(主程序)*/voidmain(void){ucdataw_buf[7];  SP=
程序

发送程序

    程序执行后,将以DTMF方式发送预存在数组W_BUF中的7位数码(5135535)。

#include

#define uc unsigned char

#define ui unsigned int

/* 子函数(子程序)说明 */

void initialize(void);

void tran_init(void);

void transmit(uc data *p,uc count);

void delay(ui l);

/* 主函数(主程序) */

void main(void)

{ uc data w_buf[7];

  SP=0x5f;

/* 预存数码5135535 */

  w_buf[0]=5;

  w_buf[1]=1;

  w_buf[2]=3;

  w_buf[3]=5;

  w_buf[4]=5;

  w_buf[5]=3;

  w_buf[6]=5;

  initialize();

  tran_init();

  transmit(w_buf,7);

  initialize();

  for(;;);}

/* MT8880初始化子函数 */

void initialize(void)

{ P1=0x3f;  /* 读SR */

  P1=0x20;  /* CRA=0000 */

  P1=0x20;  /* CRA=0000 */

  P1=0x28;  /* CRA=1000 */

  P1=0x20; }  /* CRB=0000 */

/* 发送初始化子函数 */

void tran_init(void)

{ P1=0x29;  /* CRA=1001 */

  P1=0x21; } /* CRB=0001 */

/* 发送操作子函数 */

void transmit(uc data *p,uc count)

{ uc i;

  for (i=0;i  { P1=*p;   /* 发送数码 */

    delay(6000); /* 延时 */

    P1=0x3f; }}/* 读SR */

/* 延时子函数 */

void delay(ui l)

{ ui i;

  for (i=0;i接收程序

    程序利用单片机的INT0以中断方式接收DTMF信号,接收的7位数码存入数组R_BUF中。

#include

#define uc unsigned char

uc data i,r_buf[7];

/* 子函数(子程序)说明 */

void initialize(void);

void rece_init(void);

/* 主函数(主程序) */

void main(void)

{ SP=0x5f;

  i=0;

  initialize();

  rece_init();

  for(;;);}

/* MT8880芯片初始化子函数 */

void initialize(void)

{ P1=0x3f;  /* 读SR */

  P1=0x20;  /* CRA=0000 */

  P1=0x20;  /* CRA=0000 */

  P1=0x28;  /* CRA=1000 */

  P1=0x20; }  /* CRB=0000 */

/* 接收初始化子函数 */

void rece_init(void)

{ P1=0x24;  /* CRA=0100 */

  IT0=1;    /* 边沿触发 */

  IE=0x81; }  /* 允许中断,开中断 */

/* 接收中断服务程序 */

void int0(void) interrupt 0 using 1

{ P1=0x3f;  /* 读SR */

  P1=0x1f;  /* 读RDR */

  r_buf[i++]=P1&0x0f; } /* 保存 */

必须知道各种信号音的特性。各种信号音特性如下。

● 拨号音:450±25Hz连续蜂音。

● 忙音:0.35s断0.35s通的450  ±25Hz蜂音,音段周期为0.7s。

● 回铃音:4s断ls通的450±25Hz蜂音,音段周期为5s。

信号音判断的实现原理是:由于电话系统信号音的拨号音、回铃音和忙音的音源频率均为450Hz(±25Hz)的正弦波,只是断续比不同且在时间上有明显的差异(拨号音为450Hz±25Hz连续信号,忙音为0.35s通0.35s断,回铃音为1s通4s断)。要判断信号音,首先应将处理DTMF信号的MT8880芯片设置为呼叫处理模式,使电话呼叫过程中的各种信号音经MT8880滤波、限幅后得到方波,并由MT8880的IRQ端输出。然后对MT8880输出的IRQ信号计数5秒,拨号音的计数下限为(450-25)×5=2125,计数上限为(450+25)×5=2375,即计数范围为2125~2375。同理,忙音的计数范围为1041~1212,回铃音的计数范围为425~475,无信号音的计数应为零。但在实际编程中,需要考虑一定的计时计数误差,并且使程序简化,因此采用不同信号音相邻计数界限的中间值为区分不同的信号音。同时,为合理利用FPGA硬件资源,中间值应尽量选为2的n次方(整数)。最后设定为计数值大于1792为拨号音,在1024~1791之间的忙音,在256~1023之间的回铃音,小于255为无信号音。

文档

mt8880可用资料

程序发送程序    程序执行后,将以DTMF方式发送预存在数组W_BUF中的7位数码(5135535)。#include#defineucunsignedchar#defineuiunsignedint/*子函数(子程序)说明*/voidinitialize(void);voidtran_init(void);voidtransmit(ucdata*p,uccount);voiddelay(uil);/*主函数(主程序)*/voidmain(void){ucdataw_buf[7];  SP=
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top