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

📄 main.c

📁 利用凌阳单片机SPCE061A控制AD9851
💻 C
字号:
/************************************************************
  Copyright (C), 2006, HUST
  FileName: main.c
  Author: YaoYuan       Version :  1        Date:2006/7/19
  Description:   按键处理和显示设置  // 模块描述      
  Version:    2     // 版本信息
  Function List:  main.c  // 主要函数及其功能
    1. -------
***********************************************************/

//*********** 定义各个引脚**********************
// IOB0 ----------- 40位数据
// IOB1 ----------- W_CLK
// IOB2 ----------- FQ_UD
// IOB2 ----------- FQ_UD

#define ClearWatchdog (volatile unsigned int *)0x7012 //定义ClearWatchdog指针,使其指向0x7012的地址单元

volatile unsigned int *P_IOB_DATA =(unsigned int*)(0x7005);
volatile unsigned int *P_IOB_DIR =(unsigned int*)(0x7007);
volatile unsigned int *P_IOB_ATTRIB = (unsigned int*)(0x7008);

//**************** 函数预定义 ******************************

#define P_IOB_Data (volatile unsigned int *)0x7005 //定义P_IOB_Data指针,使其指向0x7005的地址单元
#define P_IOB_Buffer (volatile unsigned int *)0x7006 //定义P_IOB_Buffer指针,使其指向0x7006的地址单元
#define P_IOB_Dir (volatile unsigned int *)0x7007 //定义P_IOB_Dir指针,使其指向0x7007的地址单元
#define P_IOB_Attrib (volatile unsigned int *)0x7008 //定义P_IOB_Attrib指针,使其指向0x7008的地址单元
#define ClearWatchdog (volatile unsigned int *)0x7012 //定义ClearWatchdog指针,使其指向0x7012的地址单元

/*************************************************
  Function:    main   // 函数名称
  Description:  按键处理和显示设置    // 函数功能、性能等的描述
  Input:   none       // 输入参数说明,包括每个参数的作
                  // 用、取值说明及参数间关系。
  Output:  none       // 对输出参数的说明。
  Return:  none       // 函数返回值的说明
  Others:  none       // 其它说明
*************************************************/
void senddata(void);
void delay(void);

unsigned int W[40]={0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,1, 0,0,0,0,0,0,0,0};//传输数据
//W[40]={0,0,0,0,1,0,1,1,  0,1,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,  1,0,0,0,0,0,0,0,  }
int main()  
{
	
	//IOA0~IOA7端口为带数据缓存的低电平输出 
	//初始化IOA8~IOA11端口为带上拉电阻的输入 ,IOA12~IOA15端口为带数据缓存的低电平输出,

    
     //初始化IOB2~IOB15端口为带数据缓存的低电平输出, IOB0~IOB1端口为带数据缓存的高电平输出     
    *P_IOB_Data = 0x0003;          
    *P_IOB_Dir = 0xffff;
    *P_IOB_Attrib = 0xffff;
    
  
      while(1)
    {  
    	senddata();          
   } //while
} //main

 

/*************************************************
  Function:   senddata  
  Description:  数据传送,频率更新  
  Input:   none      
  Output:  none      
  Return:  none      
  Others:  none   
*************************************************/	
void senddata()	
{   
	int i;
	for (i = 0; i <= 39; i++)
	{
		*P_IOB_Data = (*P_IOB_Data & 0xfffe)  +  W[i];   // IOB0 ----------- 40位数据
	    delay();
		*P_IOB_Data = *P_IOB_Data & 0xfffd; //W_CLK置低      // IOB1 ----------- W_CLK
		delay();
		*ClearWatchdog = 0x0001;    //清看门狗
		*P_IOB_Data = *P_IOB_Data | 0x0002; //W_CLK置高,上升沿触发
		delay();
	}
	delay();
	*P_IOB_Data = *P_IOB_Data & 0xfffb;   //FQ_UD置低        // IOB2 ----------- FQ_UD
	delay();
	*P_IOB_Data = *P_IOB_Data | 0x0004;   //FQ_UD置高,上升沿触发
	delay();
	*ClearWatchdog = 0x0001;    //清看门狗
}	

/*************************************************
  Function:  delay 
  Description:  延时 
  Input:   none      
  Output:  none      
  Return:  none      
  Others:  none   
*************************************************/	
void delay()
{
 	int i;
 	for(i = 0; i <=100; i++) ;    //清看门狗
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -