亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? motor.c

?? TQ公司的STK16x開發系統的源碼
?? C
字號:
/* File: MOTOR.C */

/****************************************************************************
*
* STK16XSW.MOTOR
* ==============
*
* Low level routines for stepping motor control
*
* TQ-Systems GmbH                                                         
* ---------------                                                         
* Customer: TQ-Components
* Project : STK16XSW
* Tools   : uVision 2.05
*
* Rev: Date:     Name:            Modification:
* ----+---------+----------------+------------------------------------------
* 100  16.01.01  A. Lichte        taken over from STK16X.506                
*****************************************************************************/

/****************************************************************************
*
*                            availability summary
*
* available for Starterkit: STK16X STK16XU
* conformed for Starterkit: STK16X STK16XU 
* available for Modul     : TQM164   TQM165   TQM165U  TQM166  TQM167
*                           TQM167UL TQM167U  TQM167LC
*                           
* conformed for Modul     : TQM164   TQM165   TQM165U  TQM166  TQM167
*                           TQM167UL TQM167U  TQM167LC
*****************************************************************************/

/*==========================================================================*
* pragmas:
*===========================================================================*/

/*=========================================================================*
* include files (#INCLUDE):
*==========================================================================*/
/*-------------------------------------------------------------------------*
* standard include files:
*--------------------------------------------------------------------------*/
#include <intrins.h>            /* intrinsic functions         */
#include <reg167.h>             /* special function register   */

/*-------------------------------------------------------------------------*
* project specific include files:
*--------------------------------------------------------------------------*/
#include "motor.h"              /* include motor defines       */
#include "timer.h"              /* include timer functions     */
#include "lcd.h"                /* include LC display function */
#include "i2cio.h"              /* include I2C bus functions   */ 

/*=========================================================================*
* modul internal definitions (#DEFINE):
*==========================================================================*/

/*=========================================================================*
* modul internal type definitions(TYPEDEF):
*==========================================================================*/

/*=========================================================================*
* modul internal constants (CONST):
*==========================================================================*/
const BYTE fstep_1[8] = {1,4,2,8,1,4,2,8};   /*full step mode, 1 winding  */
const BYTE fstep_2[8] = {5,6,10,9,5,6,10,9}; /*full step mode, 2 windings */
const BYTE hstep[8]   = {5,4,6,2,10,8,9,1};  /* half step mode */

/*=========================================================================*
* extern available constants (CONST):
*==========================================================================*/

/*=========================================================================*
* modul internal variables:
*==========================================================================*/

/*-------------------------------------------------------------------------*
* motor control lines:
*--------------------------------------------------------------------------*/
sbit phase_0_167      = PHASE_0_167;
sbit phase_0_dir_167  = PHASE_0_DIR_167;
sbit phase_1_167      = PHASE_1_167;
sbit phase_1_dir_167  = PHASE_1_DIR_167;
sbit phase_2_167      = PHASE_2_167;
sbit phase_2_dir_167  = PHASE_2_DIR_167;
sbit phase_3_167      = PHASE_3_167;
sbit phase_3_dir_167  = PHASE_3_DIR_167;

/*-------------------------------------------------------------------------*
* current motor phase state (4 phases = 4 bit width):
*--------------------------------------------------------------------------*/
BYTE motor_state;

/*-------------------------------------------------------------------------*
* global motor control variables:
*--------------------------------------------------------------------------*/
SHORT  motor_stepindex;      /* motor step index counter (0..7)        */
USHORT motor_pos;            /* motor position counter                 */
BOOL   motor_cw;             /* motor direction: cw/ccw                */
BYTE   motor_mode;           /* operating mode: full step/half step    */
BOOL   motor_fault;          /* fault detection (FALSE=OK; TRUE=error) */
USHORT motor_range;          /* motor position range                   */

/*=========================================================================*
* global extern available variables (EXTERN):
*==========================================================================*/
extern BYTE lcd_ctrl; // shadow register for LCD data/ctrl lines because LCD 
                      // and stepping motor are sharing I2C device for I/O


/*=========================================================================*
* modul internal functions:
*==========================================================================*/

/*--------------------------------------------------------------------------*
* void motor_out()
*---------------------------------------------------------------------------*
* FT: low level output routine for motor windings
* EP: -
* RV: -
* GP: PHASE_ON, PHASE_OFF, motor_state
*---------------------------------------------------------------------------*/
void motor_out()
{
  if (TQMMOD == TQM164)
  {
    /* port output for TQM164: */
    // not yet implemented
  }
  else
  {
    /* port output for TQM165,166,167,167LC: */
    phase_0_167 = (motor_state & PHASE_0_MASK);
    phase_1_167 = (motor_state & PHASE_1_MASK);
    phase_2_167 = (motor_state & PHASE_2_MASK);
    phase_3_167 = (motor_state & PHASE_3_MASK);
  }
}

/*=========================================================================*
* extern available functions:
*==========================================================================*/

/*--------------------------------------------------------------------------*
* BYTE  motor_setdir(BYTE dir)
*---------------------------------------------------------------------------*
* FT: set stepping motor direction
* EP: dir = motor direction  MOTOR_CW: clock wise rotation
*                           MOTOR_CCW: counter clock wise rotation
* RV: TRUE = function succesfully; FALSE = function failed
* GP: 
*---------------------------------------------------------------------------*/
BYTE motor_setdir(BYTE dir)
{
  /* check parameter: */
  if ((dir != MOTOR_CW) && (dir != MOTOR_CCW)) return (FALSE);

  switch (dir)
  {
    case MOTOR_CW : motor_cw = TRUE; break;
    case MOTOR_CCW: motor_cw = FALSE; break;
  }
  
  return (TRUE);
}

/*--------------------------------------------------------------------------*
* BYTE  motor_setdir()
*---------------------------------------------------------------------------*
* FT: detect stepping motor direction
* EP -
* RV: MOTOR_CW = motor direction; MOTOR_CW = clock wise rotation
* GP: 
*---------------------------------------------------------------------------*/
BYTE motor_getdir()
{
  if (motor_cw == TRUE) 
    return (MOTOR_CW); 
  else  
    return (MOTOR_CCW); 
}

/*--------------------------------------------------------------------------*
* BYTE motor_init(BYTE mode)
*---------------------------------------------------------------------------*
* FT: init motor 
* EP: mode = operating mode  0: full step with 1 winding
*                            1: full step with 2 windings
*                            2: half step
* RV: 0 = function succesfully; 1 = unvalid mode; 2 = motor defect
* GP: 
*---------------------------------------------------------------------------*/
BYTE motor_init(BYTE mode)
{ 
  /* init motor operating mode and reference positioning sequence width: */
  switch (mode)
  {
    case MOTOR_FSTEP1: motor_mode = mode; break;
    case MOTOR_FSTEP2: motor_mode = mode; break;
    case MOTOR_HSTEP : motor_mode = mode; break;
    default          : motor_mode = MOTOR_MODE_UNDEF; return (1);
  }

  if(TQMMOD == TQM164)                        
  {
    /* init port lines for TQM164: */
    // not yet implemented   
  }
  else                        
  {
    /* init port lines for TQM165,166,167,167LC: */
    phase_0_167     = !(PHASE_ON);
    phase_0_dir_167 = PHASE_DIR_OUT;
    phase_1_167     = !(PHASE_ON);
    phase_1_dir_167 = PHASE_DIR_OUT;
    phase_2_167     = !(PHASE_ON);
    phase_2_dir_167 = PHASE_DIR_OUT;
    phase_3_167     = !(PHASE_ON);
    phase_3_dir_167 = PHASE_DIR_OUT;
  }

  /* init driver enable line: */
  motor_stepindex = 0;                           /* init motor step index */
  motor_enable();                                  /* enable motor driver */
  motor_set(PHASES_ALL_OFF);
  motor_fault = FALSE;                  /* init fault detection: no fault */
  motor_cw  = TRUE;                               /* init motor direction */

  return (0);                                     /* function succesfully */
}

/*--------------------------------------------------------------------------*
* void motor_enable()
*---------------------------------------------------------------------------*
* FT: switch on motor driver
* EP: -
* RV: -
* GP: -
*---------------------------------------------------------------------------*/
void motor_enable()
{ 
  /* enable stepping motor via shadow register and hardware register: */
  lcd_ctrl &= ~0x40;
  i2c_write(LCD_I2C_ADR, 1, lcd_ctrl);
}

/*--------------------------------------------------------------------------*
* void motor_disable()
*---------------------------------------------------------------------------*
* FT: switch off motor driver ( = standby mode)
* EP: -
* RV: -
* GP: 
*---------------------------------------------------------------------------*/
void motor_disable()
{ 
  /* disable stepping motor via shadow register and hardware register: */
  motor_set(PHASES_ALL_OFF);
  _nop_();
  lcd_ctrl |= 0x40;		              
  i2c_write(LCD_I2C_ADR, 1, lcd_ctrl);  
}

/*--------------------------------------------------------------------------*
* BOOL motor_step()
*---------------------------------------------------------------------------*
* FT: motor driver port output
* EP: -
* RV: TRUE = function succesfully; FALSE = unvalid driving mode
* GP: 
*---------------------------------------------------------------------------*/
BOOL motor_step()
{ 
  if (motor_cw == TRUE)
  {
    if (++motor_stepindex > 7) 
	{
      motor_stepindex = 0;
	}
  }
  else
  {
    if (--motor_stepindex < 0) 
	{
      motor_stepindex = 7;
	}
  }

  switch (motor_mode)
  {
    case MOTOR_FSTEP1: motor_set(fstep_1[motor_stepindex]); break;
    case MOTOR_FSTEP2: motor_set(fstep_2[motor_stepindex]); break;
    case MOTOR_HSTEP : motor_set(hstep[motor_stepindex]); break;
    default          : return (FALSE);
  }

  return (TRUE);  
}

/*--------------------------------------------------------------------------*
* void motor_set(BYTE state)
*---------------------------------------------------------------------------*
* FT: control motor phases
* EP: state = 4 bit nibble for motor phase stati
* RV: -
* GP: 
*---------------------------------------------------------------------------*/
void motor_set(BYTE state)
{
  motor_state = state;
  motor_out();
}

/*--------------------------------------------------------------------------*
* BOOL motor_getfault()
*---------------------------------------------------------------------------*
* FT: get motor error status 
* EP: -
* RV: TRUE = driver failure detected; FALSE = no driver failure detected
* GP: 
*---------------------------------------------------------------------------*/
BOOL motor_getfault()
{
  if (motor_fault == TRUE) return (TRUE);

  return (FALSE);
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区在线播放| 日本韩国精品一区二区在线观看| 在线免费观看视频一区| 国产精品美女久久久久aⅴ | av中文一区二区三区| 久久嫩草精品久久久精品一| 国产成人丝袜美腿| 欧美激情艳妇裸体舞| 一本久久a久久精品亚洲| 午夜免费久久看| 日韩美女在线视频| 成人天堂资源www在线| 午夜天堂影视香蕉久久| 日韩精品一二区| 中文字幕五月欧美| 欧美一级高清大全免费观看| 不卡视频一二三| 极品销魂美女一区二区三区| 中文字幕一区二区三区精华液| 综合激情成人伊人| 欧美精品一区二区三区一线天视频| 成人福利视频在线看| av不卡一区二区三区| 在线亚洲一区二区| 欧美男女性生活在线直播观看| 国产99一区视频免费| 日韩av一二三| 亚洲男人的天堂在线观看| 久久久综合网站| 亚洲欧洲日韩综合一区二区| 一区二区在线观看免费视频播放| 中文字幕高清一区| 一区二区三区**美女毛片| 中文成人综合网| 艳妇臀荡乳欲伦亚洲一区| 另类欧美日韩国产在线| 亚洲午夜精品久久久久久久久| 国产精品美女久久福利网站| 亚洲va欧美va人人爽午夜| 国产精品萝li| 日韩av电影天堂| 成人一二三区视频| 正在播放亚洲一区| 欧美日韩免费一区二区三区| 一本一道久久a久久精品综合蜜臀| 欧美午夜精品一区二区三区| 91行情网站电视在线观看高清版| 日韩欧美久久一区| 亚洲欧美日韩综合aⅴ视频| 日韩av在线播放中文字幕| 97超碰欧美中文字幕| 91免费视频观看| 成人一区二区三区视频| 91麻豆精品国产91久久久使用方法 | 欧亚洲嫩模精品一区三区| 欧美精品一区二区三区在线播放| 一区二区三区欧美| 国产成人免费视频网站| 91精品国产综合久久久蜜臀粉嫩 | av在线不卡网| 亚洲精品一区二区三区香蕉| 亚洲综合免费观看高清在线观看| 国产69精品一区二区亚洲孕妇| 91.com在线观看| 亚洲综合激情网| www.欧美亚洲| 久久精品男人的天堂| 国产精品不卡视频| 亚洲女同一区二区| 不卡视频免费播放| 国产亚洲欧美在线| 极品少妇xxxx偷拍精品少妇| 91麻豆精品国产自产在线| 一区二区三区在线免费播放 | 亚洲欧美日韩国产综合| 成人天堂资源www在线| 国产欧美视频一区二区三区| 亚洲激情网站免费观看| 91一区二区三区在线观看| 欧美激情在线看| 成人一区在线观看| 一区在线观看视频| 欧美中文字幕亚洲一区二区va在线 | 日本美女一区二区| 91精品福利在线一区二区三区 | 91视频在线看| 亚洲视频一区二区在线观看| 99视频一区二区| 亚洲欧美日韩国产另类专区| 色婷婷久久久综合中文字幕| 夜夜嗨av一区二区三区网页| 欧美三级三级三级| 轻轻草成人在线| 日本韩国一区二区三区视频| 欧美精品在线一区二区| 亚洲人精品午夜| 色婷婷av一区二区三区大白胸| 亚洲国产日日夜夜| 91精品婷婷国产综合久久竹菊| 久久精品国产久精国产| 久久久久久黄色| 91碰在线视频| 午夜不卡av免费| 久久精品在这里| zzijzzij亚洲日本少妇熟睡| 亚洲国产日日夜夜| 26uuu久久天堂性欧美| 欧美aaaaa成人免费观看视频| 日韩欧美一区电影| 成人av片在线观看| 午夜亚洲国产au精品一区二区| 欧美成人高清电影在线| 亚洲超丰满肉感bbw| 欧美成人精品1314www| 色综合欧美在线| 天堂蜜桃91精品| 国产欧美1区2区3区| 欧美丝袜丝交足nylons| 国产裸体歌舞团一区二区| 欧美日韩在线免费视频| 黑人巨大精品欧美一区| www国产成人| 色一情一伦一子一伦一区| 免费观看在线综合色| 亚洲三级免费观看| 日韩精品一区二区三区蜜臀| 一本一道久久a久久精品综合蜜臀| 看电视剧不卡顿的网站| 一区二区高清视频在线观看| 久久久久久免费| 欧美绝品在线观看成人午夜影视 | 国产精品福利影院| 4438x亚洲最大成人网| 99re66热这里只有精品3直播 | 国产在线播放一区二区三区| 亚洲欧美国产毛片在线| 精品国产在天天线2019| 欧美性三三影院| 一本到三区不卡视频| 国产福利不卡视频| 国内精品久久久久影院色| 午夜欧美在线一二页| 亚洲一区二区黄色| 中文字幕日韩一区二区| 国产欧美一区二区精品忘忧草 | 国产凹凸在线观看一区二区| 日本三级韩国三级欧美三级| 亚洲成人精品一区| 亚洲精品中文在线| 亚洲欧美精品午睡沙发| 亚洲欧美日韩中文播放| 亚洲青青青在线视频| 亚洲色图欧洲色图| 一区二区在线观看免费| 专区另类欧美日韩| 国产精品视频免费看| 国产精品无人区| 亚洲欧洲99久久| 综合久久给合久久狠狠狠97色| 中文字幕一区av| 国产精品初高中害羞小美女文| 亚洲视频一区二区在线| 亚洲视频精选在线| 一区二区三区电影在线播| 亚洲一区二区三区激情| 日本欧美一区二区三区| 喷水一区二区三区| 国产综合色在线| 国产黄色91视频| 99riav一区二区三区| 欧美在线观看视频一区二区三区| 欧美手机在线视频| 欧美大尺度电影在线| 欧美激情自拍偷拍| 亚洲美女电影在线| 丝袜美腿亚洲色图| 精品一区二区在线观看| 顶级嫩模精品视频在线看| aaa欧美色吧激情视频| 欧美视频第二页| 欧美一区二区三区免费视频 | 色网站国产精品| 欧美三级蜜桃2在线观看| 欧美日韩中文字幕精品| 精品88久久久久88久久久| 国产精品天美传媒| 天天综合网 天天综合色| 国内不卡的二区三区中文字幕 | 精品国产伦一区二区三区免费| 久久免费电影网| 亚洲日本在线看| 麻豆国产精品视频| 亚洲线精品一区二区三区八戒| 青青草国产成人99久久| 丰满少妇在线播放bd日韩电影| 色婷婷国产精品综合在线观看| 91精品国产色综合久久久蜜香臀| 国产日产欧美一区二区三区| 亚洲一卡二卡三卡四卡| 国产寡妇亲子伦一区二区|