📄 dcmotor.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 + -