📄 main.c
字号:
#include<reg52.h>
#include<intrins.h> // 声明了void _nop_(void);
#define uchar unsigned char
#define uint unsigned int
sbit CS = P3^2;
void Delay(uint t);
void Send_command(uchar addr,uchar dat);
uchar Read_command(uchar addr);
void Send_byte(uchar dat);
uchar Read_byte();
/*******************************************************
函数名称:Delay(uint t);
功 能:延时
参 数:无
返 回 值:无
********************************************************/
void Delay(uint t){
while(t--);
}
/*******************************************************
函数名称:Send_byte(uchar dat);
功 能:发送一个字节
参 数:无符号字符型
返 回 值:无
********************************************************/
void Send_byte(uchar dat){
TI = 0;
SBUF = dat;
while(!TI);
}
/*******************************************************
函数名称:Rend_byte();
功 能:接收一个字节
参 数:无
返 回 值:无符号字符型
********************************************************/
uchar Read_byte(){
uchar dat = 0;
RI = 0;
dat = SBUF;
while(!RI);
return dat;
}
/*******************************************************
函数名称:Send_command(uchar addr,uchar dat);
功 能:发送一个命令
参 数:无符号字符型 地址 数据
返 回 值:无
********************************************************/
void Send_command(uchar addr,uchar dat){
CS = 0;
Delay(3);
addr <<= 1;
addr &= 0x7e; //写
Send_byte(addr);
CS = 1;
Delay(30);
Send_byte(dat);
Delay(3);
}
/*******************************************************
函数名称:Rend_command(uchar addr);
功 能:接收一个命令
参 数:无符号字符型 地址
返 回 值:无符号字符型 数据
********************************************************/
uchar Read_command(uchar addr){
uchar dat = 0;
CS = 0;
Delay(3);
addr <<= 1;
addr &= 0x7e;
addr += 1; //读
Send_byte(addr);
CS = 1;
Delay(30);
dat = Read_byte();
Delay(3);
return dat;
}
//产生音调函数
void yindiao()
{
Send_command(0x15,0x0c);//选择通道
Send_command(0x1E,0x00);//复位DSP
Send_command(0x1D,0x70);//设置接收增益
Send_command(0x20,0x30);//设置发送增益
Send_command(0x23,0x59);//写音调系数1
Send_command(0x24,0xAB);//写音调系数2
Send_command(0x26,0x10);//写颤音系数
Send_command(0x1E,0x61);//开始音调编程
Send_command(0x0E,0x82);//选择扬声器和滤波器
Send_command(0x1E,0x61);//控制振铃节奏
}
//产生拨号音函数
void bohao()
{
Send_command(0x15,0x04);//选择通道
Send_command(0x1E,0x00);//复位DSP
Send_command(0x1D,0x22);//设置DTMF接收增益
Send_command(0x20,0x30);//设置音频发送增益
Send_command(0x21,0x2E);//设置DTMF发送增益
Send_command(0x23,0x59);//写音调系数1
Send_command(0x24,0xAB);//写音调系数2
Send_command(0x1E,0x41);//开始DTMF编程
Send_command(0x0E,0x82);//选择扬声器和滤波器
}
//听筒通话
void tingtong()
{
Send_command(0x15,0x04);//选择通道
Send_command(0x1E,0x00);//复位DSP
Send_command(0x1D,0x70);//设置接收增益
Send_command(0x20,0x30);//设置发送增益
Send_command(0x1E,0x21);//开始接收增益编程
Send_command(0x0E,0x99);//选择通话设备和上电 ???不能读出
Send_command(0x0B,0x04);//设置消侧音增益
}
//免提通话
void mianti()
{
Send_command(0x15,0x0c);//选择通道 ???默认读出0x08
Send_command(0x1E,0x00);//复位DSP
Send_command(0x1D,0x38);//设置接收增益
Send_command(0x20,0x30);//设置发送增益
Send_command(0x1E,0x81);//开始免提编程
Send_command(0x0E,0x1E);//设置消侧音增益
}
void main(){
uchar dat = 0;
SCON = 0x10;
P0 = 0xf0;
//yindiao();
//bohao();
//mianti();
//tingtong();
//Send_command(0x1E,0x00);//复位DSP
//Send_command(0x15,0x0f);//临时调试命令
/****************************调试段*********************************/
/*
Send_command(0x15,0x0c);//选择通道
Send_command(0x1E,0x00);//复位DSP
Send_command(0x1D,0x70);//设置接收增益
Send_command(0x20,0x30);//设置发送增益
Send_command(0x23,0x59);//写音调系数1
Send_command(0x24,0xAB);//写音调系数2
Send_command(0x26,0x16);//写颤音系数
Send_command(0x1E,0x61);//开始音调编程
Send_command(0x0E,0x8f);//选择扬声器和滤波器
Send_command(0x1E,0x61);//控制振铃节奏
Send_command(0x0B,0x00);//
Send_command(0x0A,0x07);//
Send_command(0x03,0x61);//
*/
//Send_command(0x1E,0x00);//复位DSP
/*******************************************************************/
while(1){
//P0 = ~Read_command(0x15);
P0 = 0xff;
_nop_(); // 产生一条NOP指令
P0 = 0x00;
//Delay(4);
//NOP();
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
_nop_(); // 产生一条NOP指令
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -