📄 boot.c
字号:
//---------------------TIMER0----------------------------
UINT16 TIMER=0,TIMER1=0; //TIMER中断次数计数器
UCHAR TFLAG = 1; //初始化TIMER中断标志TFLAG =0
//---------------------MENU------------------------------
UINT16 M0=0; //0级菜单
UINT16 M1=0; //1级菜单
UINT16 M1_1=0; //1级菜单的第1个子菜单
UINT16 M1_2=0; //1级菜单的第2个子菜单
UINT16 M1_3=0; //1级菜单的第3个子菜单
const UCHAR m1_buff1[12] ="1.IO输入输出";
const UCHAR m1_buff2[12] ="2.DTMF编解码";
const UCHAR m1_buff3[10] ="3.语音处理";
const UCHAR m1_buff4[6] ="F.返回";
UINT16 in_key = 0x00ff; //输入的键值
const UCHAR io_buff1[16] ="拨动开关输入值:";
const UCHAR io_buff2[8] ="十进制:";
const UCHAR io_buff3[8] ="二进制:";
const UCHAR dtmf_buff1[6] ="拨号:";
UINT16 dn[4]={0x0020,0x0030,0x0030,0x0030}; //区号
UINT16 pn[8]={0x0030,0x0030,0x0030,0x0030,0x0030,0x0030,0x0030,0x0030}; //区号
const UCHAR audio_buff1[10] ="语音处理:";
const UCHAR audio_buff2[8] ="1.回放";
const UCHAR audio_buff3[8] ="2.低音";
UINT16 dtmf_con = 0; //DTMF输入拨号的计数器
UINT16 dtmf_flag = 0; //DTMF输入拨号的标志
//-----------------------io 输入的键值---------------------
UCHAR io_in = 0;
//-----------------------HPI通讯的握手变量------------------
UINT16 cpu1_rdy1,cpu1_rdy2;
//-----------------------DTMF算法变量-----------------------
#define pi 3.1415927
#define Length 102 //102个点
#define Len 8
double fr0,fr1,fr2,fr3,fc0,fc1,fc2,fc3,fs,fr,fc;
double x[Length],xc[Length],xr[Length]; //产生波形的数组
double s[Len];
int sedata[Length];//发送的数据
//---------------------------------------------------------
UINT16 audio_flag = 0; //AUDIO输入的标志
/*
**********************************************************************
*************** 所使用的函数原型 *****************
**********************************************************************
*/
void cpu_init(void); //初始化CPU
void Delay(UINT16 numbers); //延迟
//--------------------LCD--------------------------------------------
extern void delay_100us(void); //100us延迟 --指令之间的延迟
extern void delay_1us(void); //1us延迟 --时钟之间的延迟
void delay_50ms(void); //50ms延迟 --复位延迟
void delay_20ms(void); //20ms延迟 --清屏延迟
void SendByte(UCHAR dat); //串行发送一字节数据
void SendCMD(UCHAR dat); //写指令寄存器
void SendDat(UCHAR dat); //写显示数据或单字节字符
void Display(UCHAR x_add,UCHAR dat1,UCHAR dat2); //写汉字到LCD 指定的位置
void Initlcm(void); //初始化 LCM
void set_gdram_addr(unsigned int addr); //设置绘图RAM的地址
void gdram_write_word(unsigned int fir_word,unsigned int sec_word); //绘图RAM写数据
void setup_expand_mode(void); //设置LCD扩展模式
void gdram_intial(const unsigned char *DPTR0); //绘图RAM初始化
void ddram_clear(void); //数据RAM清零,清屏
void logo(void); //公司宣传
//-------------------7279--------------------------------------------
void mcbsp1_init(void); //初始化MCBSP1设置寄存器,配置成IO模式
void xint0_init(void); //外部中断0初始化子程序
interrupt void ExtInt0(); //中断0中断子程序
void cs_high(void); //片选置高
void cs_low(void); //片选置低
void send(void); // 发送一个字节 8BIT
void receive(); // 接收一个字节 8BIT
void delay_25ms(void); //25ms延迟 --复位延迟
extern void delay_8us(void); //8us延迟 --T2\T3\T6\T7
extern void delay_25us(void); //25us延迟 --T4\T5
extern void delay_50us(void); //50us延迟 --T1
//-------------------AD7303---------------------------------------
void mcbsp0_write_rdy(UINT16 out_data);//MCBSP0发送一个数据
void mcbsp0_init_SPI(void);//MCBSP0设置为SPI模式
void mcbsp0_close(void);//MCBSP0关闭
//----------------AD7822-----------------------------------------
void xint2_init(void); //外部中断2初始化子程序
interrupt void ExtInt2(); //中断2中断子程序
//---------------HPI--------------------------------------------
void hpi_hpic(UINT16 hpic_data);//初始化HPIC寄存器
void hpi_hpia(UINT16 hpia_data1,UINT16 hpia_data2);//初始化HPIA寄存器
//--------------T0-----------------------------------------------
void set_t0(); //设置T0的寄存器
interrupt void Tint0();//T0中断程序
//---------------MEMU-----------------------------------------------
void main_menu(void); //主菜单显示
void io_menu(void); //IO菜单显示
void dtmf_menu(void); //DTMF菜单显示
void audio_menu(void); //AUDIO菜单显示
//---------------DTMF-------------------------------------------------------
void dtmf(int dtmfkey); //DTMF计算程序,根据输入的键值计算对应的正弦波数据
//---------------CPU1、CPU2通讯程序-----------------------------------------
void dtmftocpu1();
//--------------------------------------------------------------------------
/*
************************************************************************
*********************** 函数定义 ******************
************************************************************************
*/
//--------------------------------------------------------------------
// 函数名称 : void cpu_init(void)
// 函数说明 : 初始化CPU
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------
void cpu_init(void)
{
asm(" nop ");
asm(" nop ");
asm(" nop ");
//-------------------------------------------------------------------
//CLKMD DEFINITIONS:
// PLLMUL (bit 15-12) - 0000 PLL multiplier = 0 (mult by 1)
// PLLDIV (bit 11) - 0 PLL divider = 0 (div by 1)
// PLLCOUNT (bit 10-3)- 11111111 PLL counter set to max
// PLLONOFF (bit 2) - 1 PLL on
// PLLNDIV (bit 1) - 1 Select PLL mode
// PLLSTATUS (bit 1) - x PLL Status (read only)
// ------------------
// 0000011111111111 = 0x07ff CLKMD=1 X CLKIN
//--------------------------------------------------------------------
*(unsigned int*)CLKMD=0x0; //switch to DIV mode clkout= 1/2 clkin
while(((*(unsigned int*)CLKMD)&01)!=0);
*(unsigned int*)CLKMD=0x07ff; //switch to PLL X 1 mode
//--------------------------------------------------------------------
// ST0 DEFINITIONS:
// ARP (bit 15-13) - 000 Auxiliary register pointer
// TC (bit 12) - 1 Test/control flag
// C (bit 11) - 1 Carry is set to 1 if the result of an addition generates a carry; it is cleared to 0 if the
// result of a subtraction generates a borrow.
// OVA (bit 10) - 0 Overflow flag for accumulator A
// OVB (bit 9) - 0 Overflow flag for accumulator B
// DP (bit 8-0) - 00000000 Data-memory page pointer
// --------------------
// 0001 1000 0000 0000 =0x1800 Reset value
//--------------------------------------------------------------------
// *(unsigned int*)ST0=0x1800;
//--------------------------------------------------------------------
// ST1 DEFINITIONS:
// BRAF (bit 15) - 0 Block-repeat active flag
// CPL (bit 14) - 1 Compiler mode CPL=0 DP;CPL=1 SP
// XF (bit 13) - 1 XF status
// HM (bit 12) - 0 Hold mode
// INTM (bit 11) - 1 Interrupt mode INTM=0,All unmasked interrupts are enabled
// Reser (bit 10) - 0 Always read as 0
// OVM (bit 9) - 0 Overflow mode
// SXM (bit 8) - 1 Sign-extension mode
// C16 (bit 7) - 0 Dual 16-Bit/double-precision arithmetic mode
// FRCT (bit 6) - 0 Fractional mode
// CMPT (bit 5) - 0 Compatibility mode
// ASM (bit 4-0) - 00000 Accumulator shift mode
// --------------------
// 0110 1001 0000 0000 =0x2900 Reset value
//--------------------------------------------------------------------
// *(unsigned int*)ST1=0x6900;
//--------------------------------------------------------------------
//IPTR DEFINITIONS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -