资源简介

用C语言编写的数字电位器X9C102/103/104的调节程序,子函数分别为up(command)和down(command)

资源截图

代码片段和文件信息

//文件名:	X9C103.c
//
//编写人: LD
//
//编写时间:2009/08/12
//
//目标器件: C8051F410
//
//编译工具: Keil
//
//程序说明: 此程序通过I/O口P1^3P1^4和P1^5调节数字电位器X9C102/103/104的阻值

//X9C103_CS=P1^3; X9C103_INC=P1^4; X9C103_UD=P1^5;
//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
#include                     // SFR declarations
#include 
sbit X9C103_CS=P1^3;
sbit X9C103_INC=P1^4;
sbit X9C103_UD=P1^5;
//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------
void PORT_Init (void);
void Oscillator_Init();
void up(unsigned char command);
void down(unsigned char command);
/***************************************************************************************
函数名称: void sleep_ms(WORD count)
功能描述: 延时
输入: WORD count(所要延时的长度)
输出: 无
全局变量: 无
调用模块: _nop_()
***************************************************************************************/
void sleep_ms(unsigned char count)
{
  unsigned char iijj;
  for(ii=0;ii    {
      for(jj=0;jj<250;jj++)
  _nop_();
    }
}
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main()
{ char a;
PCA0MD    &= ~0x40; //禁止看门狗
Oscillator_Init(); //时钟初始化
PORT_Init(); //I/O初始化
//while(1)
// {
for(a=0;a<20;a++)
{
 down(1);
 sleep_ms(200);
//  down(1);
//  sleep_ms(5);
}
// }
while(1);
}
/***************************************************************************************
函数名称: void PORT_Init(void)
功能描述: 初始化I/O
输入: 无
输出: 无
全局变量: XBR1
调用模块: 无
***************************************************************************************/
void PORT_Init (void)
{
   XBR1= 0x40;   /*使能交叉开关和弱上拉*/
}
/***************************************************************************************
函数名称: void Oscillator_Init()
功能描述: 初始化Oscillator时钟为49MHz
输入: 无
输出: 无
全局变量:
调用模块: 无
***************************************************************************************/
void Oscillator_Init()
{
    int i = 0;
    PFE0CN    &= ~0x20;
    FLSCL     = 0x10;
    PFE0CN    |= 0x20;
    CLKMUL    = 0x80;
    for (i = 0; i < 20; i++);    // Wait 5us for initialization
    CLKMUL    |= 0xC0;
    while ((CLKMUL & 0x20) == 0);
    CLKSEL    = 0x02;
    OSCICN    = 0x87;
}
/***************************************************************************************
函数名称: void up(unsigned char command)
功能描述: 调节增大数字电位器X9C103的阻值
输入: command
输出: 无
全局变量: 无
调用模块: 无
备注: 两次调用调节数字电位器函数之间的间隔应大于20ms
***************************************************************************************/
void up(unsigned char command)
{
unsig

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6376  2007-09-11 14:50  X9C103\STARTUP.A51

     文件      14062  2009-08-21 22:28  X9C103\STARTUP.LST

     文件       5085  2009-08-20 21:04  X9C103\X9C103.c

     文件        213  2009-08-22 10:08  X9C103\Spwm.plg

     文件         58  2009-08-21 22:28  X9C103\Spwm.lnp

     文件       8478  2009-08-21 22:28  X9C103\Spwm.M51

     文件        702  2009-08-21 22:28  X9C103\Spwm.hex

     文件        749  2009-08-21 22:28  X9C103\STARTUP.OBJ

     文件      10036  2009-08-21 22:28  X9C103\X9C103.LST

     文件       6029  2009-08-21 22:28  X9C103\X9C103.OBJ

     文件       6137  2009-08-21 22:28  X9C103\Spwm

     文件       2247  2009-08-16 21:21  X9C103\X9C103_Uv2.Bak

     文件       2252  2009-08-21 22:33  X9C103\X9C103.Uv2

     文件       1073  2009-08-21 23:07  X9C103\X9C103_Opt.Bak

     文件       1075  2009-08-22 10:08  X9C103\X9C103.Opt

     目录          0  2009-08-23 23:17  X9C103

----------- ---------  ---------- -----  ----

                64572                    16


评论

共有 条评论