⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boot.c

📁 双CPU BOOTLOADER 综合实验,不用烧写工具 将.out文件转换成.hex文件烧写到flash里
💻 C
📖 第 1 页 / 共 2 页
字号:
//---------------------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 + -