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

📄 delay_us.s

📁 ecos移植到R8H系列的源码。源码包来自http://www.cetoni.de/develop/develop_ecosh8s_en.html
💻 S
字号:
//=============================================================================
//
//	delay_us.S
//
//	EDOSK-2674 us delay
//
//=============================================================================
//###ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//###ECOSGPLCOPYRIGHTEND####
//=============================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): 	 Uwe Kindler
// Contributors: Yoshinori Sato, Uwe Kindler
// Date:	     2003-12-06
// Purpose:	     H8S us delay function
// Description:	 This file contains only one function for us delay.
//####DESCRIPTIONEND####
//
//=============================================================================


//=============================================================================
//                                   INCLUDES
//=============================================================================
#include <pkgconf/hal.h>	


//==========================================================================
//                                 DELAY uS 
// DESCRIPTION:  
//     This function implements a busy loop delay for the given number of 
//     microseconds and is called by the macro HAL_DELAY_US() in var_intr.h 
//
// ARGUMENTS:
//     er0  'usecs'  Number of useconds to delay program execution.
//
// NOTES:
//     While most of the time this function is  called with very small 
//     values, occasionally (particularly in some ethernet drivers) it is 
//     called with values of several seconds. Hence the function should 
//     take care to avoid overflow in any calculations.      
//==========================================================================  
    .h8300s
    .text
    //
    // The execution time of the following loop is approximately 1 us
    // per loop on a 16 Mhz H8S2638. If the divider rate changes then we
    // have to change the decrement in order to match the time
    //  
    #define DELAY_DECREMENT  (CYGHWR_HAL_H8S_MULT_RATE)
	.global	_hal_delay_us
_hal_delay_us:
    //
    // loop until er0 reaches zero
    //  
    shlr.l  #2, er0 
    shlr.l  er0                
delay_loop:	  
	ble	    delay_loop_finished            // 2 states 
	nop
	nop
	nop
	nop
    sub.l	#DELAY_DECREMENT,er0           // 3 states                              
	bra	    delay_loop                     // 2 states
delay_loop_finished:
    rts

//=--------------------------------------------------------------------------
// End of delay_us.S

⌨️ 快捷键说明

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