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

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

?? timer.c

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

/****************************************************************************
*
* STK16XSW.TIMER
* ==============
*
* Timer routines
*                 
* 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 
* available for Modul     : TQM164   TQM165   TQM165U  TQM166  TQM167
*                           TQM167LC TQM167U  TQM167UL
* conformed for Modul     : TQM164   TQM165   TQM165U  TQM166  TQM167
*                           TQM167LC TQM167U  TQM167UL
*****************************************************************************/

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

/*=========================================================================*
* include files (#INCLUDE):
*==========================================================================*/
/*-------------------------------------------------------------------------*
* standard include files:
*--------------------------------------------------------------------------*/
#include <stdio.h>              /* standard I/O functions    */
#include <ctype.h>              /* typecast functions        */
#include <string.h>             /* String functions          */
#include <setjmp.h>             /* global jump functions     */
#include <absacc.h>             /* absolute accesss          */
#include <intrins.h>            /* intrinsic functions       */
#include <reg167.h>             /* Special function register */

/*-------------------------------------------------------------------------*
* project specific include files:
*--------------------------------------------------------------------------*/
#include "timer.h"              /* timer functions           */

/*=========================================================================*
* modul internal definitions (#DEFINE):
*==========================================================================*/
#define T3_ICTRL     T3IC^6     /* timer 3 interrupt control bit */

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

/*=========================================================================*
* modul internal constants (CONST):
*==========================================================================*/

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

/*=========================================================================*
* modul internal variables:
*==========================================================================*/
TIMER_COUNTER idata timer_counter;    /* 10 ms counter variable           */
t_timer_idle_func   timer_idle_func;  /* idle function for timer interrupt*/
unsigned int        timer_looptime;

sbit t3_ictrl = T3_ICTRL;             /* timer 3 interrupt control bit    */

/*=========================================================================*
* global extern available variables (EXTERN):
*==========================================================================*/

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

/*-------------------------------------------------------------------------*
* void timer3_int(void) interrupt 0x23
*--------------------------------------------------------------------------*
* FT: interrupt service routine for timer 3 over/underflow interrupt
* EP: -
* RW: -
* GP: timer_idlefunc = pointer to idle function for timer interrupt
*--------------------------------------------------------------------------*/
void timer3_int(void) interrupt 0x23
{
  timer_counter++;
  
  if (timer_idle_func) (*timer_idle_func) ();
}

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

/*--------------------------------------------------------------------------*
* BOOL timer_init(t_timer_idle_func idle_func)                            
*---------------------------------------------------------------------------*
* FT: init timer 3 time base; calculation refers to CPU frequency (20 MHz)
* EP: idlefunc = pointer to idle function, called  from interrupt service 
*                routine (NULL if not used)
* RW: TRUE = function succesfully; FALSE= function failed
* GP: 
*---------------------------------------------------------------------------*/
BOOL timer_init(t_timer_idle_func idle_func)
{ USHORT i, j;
    
  /* init timer 3:  */
  T2CON = 0x0027;          /* reload timer 2 at over/underflow of timer 3 */
  T3CON = 0x0080;            /* timer  mode: 400 ns time base, count down */
  T2    = 25000;              /* init timer 2 register: 10 ms T2 overflow */
  T3    = 25000;              /* init timer 3 register: 10 ms T3 overflow */
  T3IC  = T3INT_INI;           /* init timer 3 interrupt control register */
  T3R   = 1;                 /* init timer 3 enable register: 1 = running */

  timer_counter = TIMER_MIN;                          /* init 10 ms timer */
  IEN = 1;                                    /* general interrupt enable */

  *timer_idle_func = idle_func;                     /* init idle function */

  /* detect number of loops for 20 us delay: */
  for (i=0; i<0x3FF; i++)              /* time measurement for 3FFh loops */
  {
    for (j=0; j<1000; j++) _nop_();     /* 1000 x deceleration (us -> ms) */
  }                                 

  if ((timer_counter > 0x1FF) || (timer_counter < 0x04))
  { 
    timer_looptime=0xFF; return (FALSE);          /* initialization failed */
  } 

  /* get loops for 20 us counter (offset 2 for compensation of outer loop):*/
  timer_looptime = 0x7FF / timer_counter - 2; 

  return (TRUE);
} 

/*--------------------------------------------------------------------------*
* void timer_reset(void)
*---------------------------------------------------------------------------*
* FT: reset timer counter
* EP:  -
* RW: -
* GP: -
*---------------------------------------------------------------------------*/
void timer_reset(void)
{
  t3_ictrl = 0;     /* disable timer 3 interrupt (32 bit variable access) */
  timer_counter = TIMER_MIN;                          /* init 10 ms timer */
  t3_ictrl = 1;                            /* re-enable timer 3 interrupt */
}

/*--------------------------------------------------------------------------*
* TIMER_COUNTER timer_get_10ms(TIMER_COUNTER base_time)
*---------------------------------------------------------------------------*
* FT: calculate time difference between parameter t and current time
* EP: base_time = base time for calculate time difference 
* RW: -
* GP: -
*---------------------------------------------------------------------------*/
TIMER_COUNTER timer_get_10ms(TIMER_COUNTER t)
{ TIMER_COUNTER val;

  t3_ictrl = 0;     /* disable timer 3 interrupt (32 bit variable access) */
  val = timer_counter - t;                   /* calculate time difference */
  t3_ictrl = 1;                            /* re-enable timer 3 interrupt */

  return (val);
}

/*--------------------------------------------------------------------------*
* void timer_delay_10ms(TIMER_COUNTER len)
*---------------------------------------------------------------------------*
* FT: generate delay for len x 10 ms 
* EP: len = amount of 10 ms ticks (result of len = 0 may be 0..1)
* RW: -
* GP: -
*---------------------------------------------------------------------------*/
void timer_delay_10ms(TIMER_COUNTER len)
{ TIMER_COUNTER base_time;

  base_time = timer_get_10ms(0);
  while (timer_get_10ms(base_time) < len);
}


/*--------------------------------------------------------------------------*
* void timer_delay_20us(USHORT len)
*---------------------------------------------------------------------------*
* FT: generate delay for len x 20 us 
* EP: len = amount of 20 us ticks
* RW: -
* GP: -
*---------------------------------------------------------------------------*/
void timer_delay_20us(USHORT len)
{ USHORT i, j;

  for (i=0; i<len; i++)                         /* number of 20 us delays */
  {
     for (j=0; j<timer_looptime; j++);                  /* wait for 20 us */
  }
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线不卡免费看| 成人动漫av在线| 亚洲精品视频自拍| 国产精品国产三级国产| 日本一区二区动态图| 日本一区二区成人在线| 中文字幕第一区第二区| 国产精品久久久久久久浪潮网站| 久久影音资源网| 精品国产一区久久| 精品国产91亚洲一区二区三区婷婷| 6080午夜不卡| 久久久蜜臀国产一区二区| 国产网红主播福利一区二区| 国产精品色噜噜| 一区二区三区四区蜜桃| 一区二区三区资源| 亚洲成人免费看| 久久精品72免费观看| 国产精品一卡二卡在线观看| 成人av在线一区二区三区| 91蝌蚪国产九色| 在线观看网站黄不卡| 91精品中文字幕一区二区三区| 日韩欧美一二区| 久久精品亚洲乱码伦伦中文| 亚洲精品老司机| 日韩av在线播放中文字幕| 国内精品免费在线观看| 高清不卡一区二区| 欧美日韩在线一区二区| 91精品一区二区三区久久久久久| 久久一区二区三区四区| 亚洲男人的天堂在线aⅴ视频| 日欧美一区二区| www.欧美日韩| 欧美一区二区三级| 中文子幕无线码一区tr| 午夜国产精品一区| 成人免费va视频| 91精品午夜视频| 亚洲欧美另类久久久精品2019| 亚洲18女电影在线观看| 波多野结衣一区二区三区| 欧美久久久久久蜜桃| 中文字幕一区在线观看| 日韩一区精品视频| 一本到三区不卡视频| 精品久久人人做人人爽| 亚洲精品ww久久久久久p站| 国内精品国产三级国产a久久| 色屁屁一区二区| 中文字幕 久热精品 视频在线| 久久国产精品99久久久久久老狼| 色老头久久综合| 中文字幕精品—区二区四季| 激情综合色播五月| 精品视频一区二区不卡| 亚洲天堂2016| 成人午夜av影视| 久久久亚洲精华液精华液精华液| 婷婷国产在线综合| 欧美亚洲一区二区在线| 综合久久久久综合| 成人黄色免费短视频| 久久久一区二区三区| 经典一区二区三区| 日韩美女在线视频| 日韩av一区二区三区四区| 欧美在线观看视频一区二区 | 美女爽到高潮91| 欧美唯美清纯偷拍| 一区二区三区在线免费| av亚洲精华国产精华精华| 欧美国产欧美综合| 国产成人精品免费网站| 精品欧美乱码久久久久久1区2区| 男女性色大片免费观看一区二区 | 日韩色在线观看| 五月激情丁香一区二区三区| 欧美亚洲图片小说| 亚洲国产精品一区二区久久恐怖片 | 亚洲尤物在线视频观看| 91丨porny丨首页| 一区二区三区日本| 91麻豆精品一区二区三区| 国产精品久久久久久久久快鸭| 国产成都精品91一区二区三| 精品免费日韩av| 国产精品一区二区x88av| 日本一区二区不卡视频| 91原创在线视频| 一区二区三区蜜桃| 91精品免费观看| 久久成人18免费观看| 欧美激情在线看| 色综合中文字幕国产| 亚洲视频一二区| 欧美日韩www| 久草在线在线精品观看| 亚洲国产成人在线| 色综合久久中文综合久久牛| 首页欧美精品中文字幕| wwwwww.欧美系列| 成人黄动漫网站免费app| 亚洲综合激情另类小说区| 欧美一区二区在线免费播放| 国产麻豆成人精品| 亚洲女同女同女同女同女同69| 欧美日韩二区三区| 国产精品一级黄| 亚洲18色成人| 国产精品久线在线观看| 69成人精品免费视频| 成人午夜大片免费观看| 午夜精品久久久久久久久| 国产人妖乱国产精品人妖| 欧美三级日韩三级| 国产一区二区三区美女| 亚洲成人精品一区二区| 中文字幕第一页久久| 欧美一区二区三区在线电影| 成人av手机在线观看| 美女www一区二区| 亚洲精品日日夜夜| 久久亚洲精品小早川怜子| 91精品办公室少妇高潮对白| 国产精品一区二区无线| 日韩av一级电影| 亚洲综合小说图片| 中文字幕av免费专区久久| 制服丝袜成人动漫| 91麻豆精东视频| av福利精品导航| 精品在线一区二区三区| 天天av天天翘天天综合网色鬼国产| 中文字幕免费观看一区| 精品精品国产高清一毛片一天堂| 欧美色图一区二区三区| 99这里只有久久精品视频| 国产老妇另类xxxxx| 久久精品国产色蜜蜜麻豆| 午夜欧美在线一二页| 亚洲午夜免费福利视频| 亚洲欧洲精品一区二区三区不卡 | 国产亚洲欧美一区在线观看| 91精品婷婷国产综合久久性色 | 91精品国产91久久久久久最新毛片 | 欧美精品日韩精品| 91九色最新地址| 91久久线看在观草草青青| 972aa.com艺术欧美| 91网站在线播放| 日本精品一区二区三区高清| zzijzzij亚洲日本少妇熟睡| 成人一级片网址| 9人人澡人人爽人人精品| 99精品视频一区| 91国产视频在线观看| 精品婷婷伊人一区三区三| 在线不卡一区二区| 日韩欧美美女一区二区三区| 精品女同一区二区| 国产偷国产偷精品高清尤物| 国产精品成人一区二区三区夜夜夜| 日本一区二区三区国色天香 | 56国语精品自产拍在线观看| 欧美日本免费一区二区三区| 欧美高清www午色夜在线视频| 日韩欧美一卡二卡| 精品久久久久久无| 国产精品视频一二| 亚洲激情五月婷婷| 日韩电影在线观看一区| 理论片日本一区| 国产传媒一区在线| 色噜噜狠狠色综合欧洲selulu| 欧美日韩国产高清一区二区| 欧美va在线播放| 中日韩免费视频中文字幕| 亚洲黄色性网站| 狂野欧美性猛交blacked| 国产精品中文字幕日韩精品| 99久久精品一区二区| 制服丝袜中文字幕一区| 国产亚洲精品超碰| 亚洲乱码国产乱码精品精可以看| 日韩和欧美的一区| 国产成人精品三级麻豆| 欧美色涩在线第一页| 精品福利一二区| 一区二区三区欧美久久| 麻豆成人免费电影| 91丨九色丨国产丨porny| 91精品欧美综合在线观看最新| 久久久久久久久久电影| 亚洲制服丝袜在线| 成人免费精品视频| 91精品国产免费| 亚洲精品欧美专区|