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

📄 dcmotor.c

📁 c8051f的控制直流电动机的源程序
💻 C
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
//文件名:	DCMotor.c
//
//编写人:	LC
//
//编写时间:2005/03/10
//
//目标器件: C8051F02x
//
//编译工具: Silicon Laboratories IDE
//
//程序说明:	此程序通过DAC的输出来驱动直流电机
			

//------------------------------------------------------------------------------------
// 头文件包含
//------------------------------------------------------------------------------------
#include <c8051f020.h>                    /*SFR定义*/

//------------------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F02x
//------------------------------------------------------------------------------------

sfr16 TMR3RL   = 0x92;                    /*定时器3重载值*/
sfr16 TMR3     = 0x94;                    /*定时器3计数器*/
sfr16 DAC0     = 0xd2;                    /*DAC0数据*/

//------------------------------------------------------------------------------------
// Global CONSTANTS
//------------------------------------------------------------------------------------

#define SYSCLK 2000000                    /*系统时钟频率*/

//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------
void PORT_Init (void);
void Timer3_Init (int counts);
void Timer3_ISR (void);
void DAC_Init(void);

//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void) {
unsigned int i;
   /*关看门狗*/
   WDTCN = 0xde;
   WDTCN = 0xad;
	
   PORT_Init ();						/*初始化I/O口*/
   //Timer3_Init (SYSCLK / 12 /5 );		/*初始化定时器3*/
    DAC_Init();                     	/*D/A初始化*/

   EA = 1;								/*使能总中断标志*/

   while (1) 
   {                         
   
	   DAC0L=0xf0;						/*设置待转换的值并启动D/A转换*/
	   DAC0H=0x0f;
	for(i=0;i<=50000;i++);
	}
}


/***************************************************************************************
函数名称:	void PORT_Init(void)
功能描述:	初始化I/O
输入:		无
输出:		无
全局变量:	XBR2, P74OUT
调用模块:	无
***************************************************************************************/
void PORT_Init (void)
{
   XBR2    = 0x40;                     /*时能交叉开关和弱上拉*/
   P74OUT |= 0x0ff;                    /*使能P1.6 (LED)作为推完输出*/
}


/***************************************************************************************
函数名称:	void DAC_Init(void)
功能描述:	初始化DAC0
输入:		无
输出:		无
全局变量:	REF0CN,DAC0CN
调用模块:	无
***************************************************************************************/
void DAC_Init(void)
{
    REF0CN =0x03;		/*内部偏压发生器和电压基准缓冲器工作,基准从VREF引脚输出*/
	DAC0CN |=0x80;		/*DAC0允许,DAC输出更新发生在写DAC0H时*/
}


/***************************************************************************************
函数名称:	void Timer3_Init(int counts)
功能描述:	初始化定时器3
输入:		counts:	计数初值
输出:		无
全局变量:	TMR3CN,TMR3RL, TMR3, EIE2,
调用模块:	无
***************************************************************************************/
void Timer3_Init (int counts)
{
   TMR3CN = 0x00;                      /*停止定时器3,清定时器中断标志*/
                                       /*用SYSCLK/12作为时基*/
   TMR3RL  = -counts;                  /*装载重装载值*/
   TMR3    = 0xffff;                   /*设置重载值*/
   EIE2   |= 0x01;                     /*使能定时器3中断*/
   TMR3CN |= 0x04;                     /*使能定时器3*/
}


/***************************************************************************************
函数名称:	void Timer3_ISR(void) interrupt 14
功能描述:	定时器3中断服务程序
输入:		无
输出:		无
全局变量:	TMR3CN
调用模块:	无
***************************************************************************************/
void Timer3_ISR (void) interrupt 14
{
 
   TMR3CN &= ~(0x80);                   /*清定时器3中断标志*/
}

⌨️ 快捷键说明

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