当前位置:  编程技术>移动开发
本页文章导读:
    ▪dsPIC33EP timer2初始化设立及应用        dsPIC33EP timer2初始化设置及应用//文件 p33timer2.h #ifndef _P33TIMER2_H_ #define _P33TIMER2_H_ //#include "p33timer2.h" #define TIMER2_IEN_ENB _T2IE = 1 #define TIMER2_IEN_DIS _T2IE = 0 //timer2输入时钟分频 #define TIMER2_DIV1 .........
    ▪ dsPIC33EP 钟表初始化程序        dsPIC33EP 时钟初始化程序//文件名p33clk.h #ifndef _P33CLK_H_ #define _P33CLK_H_ //#include "p33clk.h" #define WDT_ENB _SWDTEN = 1 #define WDT_DIS _SWDTEN = 0 //时钟源选择 #define OSCLK0 0 //FRC #define OSCLK1 1 //带PLL+N.........
    ▪ dsPIC33EP ADC模块初始化及应用范例       dsPIC33EP ADC模块初始化及应用实例//文件名 p33adc.h #ifndef _P33ADC_H_ #define _P33ADC_H_ //#include "p33adc.h" //--AD1CON1 #define ADON (1<<15) #define MAUTO (7<<5) //采样后 自动转换模式 #define SAMP (1<<.........

[1]dsPIC33EP timer2初始化设立及应用
    来源: 互联网  发布时间: 2014-02-18
dsPIC33EP timer2初始化设置及应用
//文件 p33timer2.h

#ifndef _P33TIMER2_H_
#define _P33TIMER2_H_
//#include "p33timer2.h"



#define		TIMER2_IEN_ENB	_T2IE = 1
#define		TIMER2_IEN_DIS	_T2IE = 0

//timer2输入时钟分频
#define		TIMER2_DIV1		(0<<4)
#define		TIMER2_DIV8		(1<<4)
#define		TIMER2_DIV64	(2<<4)
#define		TIMER2_DIV256	(3<<4)

//=============================
extern void Init_Timer2(uint16 T2div,uint16 Tcon) ;

#endif






//文件 p33timer2.c

#include "global.h"
#include "p33timer2.h"

//***************************************
// 函数名称:Init_Timer2
// 函数功能:初始化timer2
// 入口参数:时钟分频系数 定时器计数个数
// 出口参数:无
// 返回值:无
// Timer2 的时钟源 = Fp(即外设时钟)
//***************************************
void Init_Timer2(uint16 T2div,uint16 Tcon)
{
	T2CON = 0X0000|T2div ;
	PR2 = Tcon ; //重装载寄存器
	TMR2 = 0x0000 ; //计数器清0
	_T2IF = 0 ;
	_T2IE = 0 ;
	T2CON |= (1<<15) ; //开启定时器2
}


//应用实例

void main(void)
{
	
	//外设时钟64分频到时钟 计数7197次 
	Init_Timer2(TIMER2_DIV64,7197) ;//T2时钟源为外设时钟
	TIMER2_IEN_ENB ;//开启定时器中断
//	TIMER2_IEN_DIS ;


	while(1)
	{

	}
	

}


    
[2] dsPIC33EP 钟表初始化程序
    来源: 互联网  发布时间: 2014-02-18
dsPIC33EP 时钟初始化程序
//文件名p33clk.h

#ifndef _P33CLK_H_
#define _P33CLK_H_
//#include "p33clk.h"

#define		WDT_ENB		_SWDTEN = 1 
#define		WDT_DIS		_SWDTEN = 0 
//时钟源选择
#define		OSCLK0		0   //FRC
#define		OSCLK1		1	//带PLL+N分频的FRC
#define		OSCLK2		2	//HS MS LS 外部时钟
#define		OSCLK3		3	//带PLL的HS MS LS 外部时钟
#define		OSCLK4		4	//保留
#define		OSCLK5		5	//LPRC
#define		OSCLK6		6	//FRC/16
#define		OSCLK7		7	//带N分频的FRC


//处理器与CPU时钟分频比 
#define		DOZEDIV1	(0<<12)
#define		DOZEDIV2	(1<<12)
#define		DOZEDIV4	(2<<12)
#define		DOZEDIV8	(3<<12)
#define		DOZEDIV16	(4<<12)
#define		DOZEDIV32	(5<<12)
#define		DOZEDIV64	(6<<12)
#define		DOZEDIV128	(7<<12)

//------------------------------
//Fosc = (Fin/V_FRCDIV/N1/N2)*M

#define		V_FRCDIV	V_FRCDIV1	//FRC振荡分频系数
#define		V_N1		V_N1DIV(2)	//x = 2--33 N1 分频系数
#define		V_N2		V_N2DIV2  //N2 分频系数
#define		V_PLLFBD	PLLMF(50) //(x=2--513)PLL 倍频比

//FRC 分频系数
#define		V_FRCDIV1		0
#define		V_FRCDIV2		1
#define		V_FRCDIV4		2
#define		V_FRCDIV8		3
#define		V_FRCDIV16		4
#define		V_FRCDIV32		5
#define		V_FRCDIV64		6
#define		V_FRCDIV256		7
//N1
#define		V_N1DIV(x)		 (x-2)

//N2
#define		V_N2DIV2		0
#define		V_N2DIV4		1
#define		V_N2DIV8		3

//PLL 倍频数 M
#define		PLLMF(x)	(x-2)





//================================
extern void Init_Clk(uint16 OsClk) ;


#endif


//文件名p33clk.c
#include "global.h"
#include "p33clk.h"

//***************************************
// 函数名称:InitClk
// 函数功能:初始化时钟
// 入口参数:时钟来源选择 FRC分频 pll倍频比
// 出口参数:无
// 返回值:无
// Fosc = (Fin/V_FRCDIV/N1/N2)*M
//***************************************
void Init_Clk(uint16 OsClk)
{
	CLKDIV = 0X0000 ; //处理器与外设时钟比为1:1

	_FRCDIV = V_FRCDIV ; //FRC分频系数
	_PLLPOST = V_N2 ;//N2
	_PLLPRE = V_N1 ;//N1
	PLLFBD = V_PLLFBD ;// PLL倍频
	
	OSCTUN = 0X0000 ; //振荡器调节寄存器 默认7.37M
	REFOCON = 0X0000  ; //参考时钟=系统时钟 

	OSCCON = 0X0000 ; 

	_OSWEN = 1 ; //请求切换由NOSC指定的时钟	
	_NOSC = OsClk ; //切换 新的振荡器 	
	while(_OSWEN) ;//等待时钟切换完成

	if((_NOSC == OSCLK1) ||(_NOSC == OSCLK3))//带PLL
	{
		while(!_LOCK) ;//等待PLL锁定
	}

	REFOCON |= 0X8000 ; //参考时钟输出使能 
}


//应用实例 -- 时钟初始化

	//FRC 系统时钟1分频到CPU PLL倍频50 
	//Fin = 7.37M   Fcpu = Fosc/2 = 46.0625M  
	Init_Clk(OSCLK1) ;



    
[3] dsPIC33EP ADC模块初始化及应用范例
    来源: 互联网  发布时间: 2014-02-18
dsPIC33EP ADC模块初始化及应用实例
//文件名 p33adc.h

#ifndef _P33ADC_H_
#define _P33ADC_H_
//#include "p33adc.h"
//--AD1CON1

#define		ADON	(1<<15)
#define		MAUTO   (7<<5)	//采样后 自动转换模式
#define		SAMP	(1<<1)
#define		DONE	(1<<0)

//ADC时钟选择--时钟分频
#define		ADC_DIV1		(1-1)
#define		ADC_DIV5		(5-1)
#define		ADC_DIV10		(10-1)
#define		ADC_DIV25		(25-1)
#define		ADC_DIV50		(50-1)
#define		ADC_DIV100		(100-1)
#define		ADC_DIV250		(250-1)


//--AD通道选择------
#define		ADC_Chanel0			(0x00<<0)
#define		ADC_Chanel1			(0x01<<0)
#define		ADC_Chanel2			(0x02<<0)
#define		ADC_Chanel3			(0x03<<0)
#define		ADC_Chanel4			(0x04<<0)
#define		ADC_Chanel5			(0x05<<0)
#define		ADC_Chanel6			(0x06<<0)
#define		ADC_Chanel7			(0x07<<0)
#define		ADC_Chanel8			(0x08<<0)
#define		ADC_Chanel9			(0x09<<0)
#define		ADC_Chanel10		(0x0A<<0)
#define		ADC_Chanel11		(0x0B<<0)
#define		ADC_Chanel12		(0x0C<<0)
#define		ADC_Chanel13		(0x0D<<0)
#define		ADC_Chanel14		(0x0E<<0)
#define		ADC_Chanel15		(0x0F<<0)

//================================
extern void Init_Adc(uint16 ClkDiv) ;
extern uint16 AdcSwitch(uint16 Adc_Ch) ;

#endif



//文件名 p33adc.c

#include "global.h" 
//#include "p33adc.h"


//***************************************
// 函数名称:Init_Adc
// 函数功能:初始化ADC模块
// 入口参数:
// 出口参数:无
// 返回值:无
// ADC时钟来源于Fcpu
//***************************************
void Init_Adc(uint16 ClkDiv)
{
	AD1CON1 = 0X0000|MAUTO; //设置为自动模式 10位4通道模式 数据右对齐
	AD1CON2 = 0X0000 ;
	AD1CON3 = 0X0000 | ClkDiv |0X8000; //ADC时钟分频
	AD1CON4 = 0X0000 ; //不使能DMA 每个通道分一个字的缓存

	AD1CHS123 = 0X0000 ;
	AD1CHS0 = 0X0000 ;

	AD1CSSH = 0X0000 ;
	AD1CSSL = 0X0000 ;	

	AD1CON1 |= ADON ; //开启ADC模块工作
	asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;//延时
	asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;
}
//***************************************
// 函数名称:AdcSwitch
// 函数功能:选择AD通道转换
// 入口参数:
// 出口参数:无
// 返回值:无
//***************************************
uint16 AdcSwitch(uint16 Adc_Ch) //	ADRESH ADRESL
{
	uint16 wTmp ;

	AD1CON1 |= ADON ; //开启ADC模块工作

	AD1CHS0 = (AD1CHS0 & 0XFFE0)|Adc_Ch ;//选择通道

	asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;//延时
	asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;

	AD1CON1 &= ~DONE ; //ADC空闲
	AD1CON1 |= SAMP ; //开始转换

	while(!(AD1CON1 & DONE)) ; //等待转换完成
//	AD1CON1 &= ~DONE ; //ADC空闲

	wTmp = ADC1BUF0 & 0X03FF ; //读取转换结果

	return wTmp ;
}


//应用实例

void main(void)
{
	uint16 g_wTmp1 ;

	//初始化ADC
	Init_Adc(ADC_DIV25) ;//AD模块时钟输入频率  10BIT AD

	while(1)
	{
		g_wTmp1 = AdcSwitch(ADC_Chanel0) ;//读取转换结果				
	}
	

}



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
windows iis7站长之家
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3