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

📄 delay.asm

📁 超声波传感器在凌阳16位单片机上的C语言程序
💻 ASM
字号:
.DEFINE P_Watchdog_Clear    0x7012         // Watchdog Reset

.CODE
//-----------------------------------------------------------------------------------
//调用方式:delay_xus(n);n=1~65535
//计算公式:(65+13*R1)*(1/F_CPU)
//延时范围:(已经包括调用时间)78~852020 Cycle    (49.152M时:1.6us~17334.4us)
//______________________________________________________
//
//参数计算公式:设 t 为延时时间,n=(t*F_CPU-65)/13
//______________________________________________________
//创建日期	:2007-4-19
//Author 	: Zhixian-Liao
//-----------------------------------------------------------------------------------
.PUBLIC	_delay_xus		//调用过程使用9个时钟周期 总时间为 65+13*R1 个机器周期
_delay_xus: .PROC		//
		//___________________________________
		PUSH BP TO [SP]	//	6
        BP = SP + 1 	//	4
        PUSH R2 TO [SP]	//	6
		PUSH R1 TO [SP] //	6
		R1 = [BP+3]		//	6
		R2=0x0001		//	2________________30 Cycle
nLOOP:	//___________________________________13*R1 Cycle
		[P_Watchdog_Clear]=R2;//	7	
		R1-=1;			//	2
		JNZ	nLOOP		//	4
		//___________________________________
		POP R1 FROM [SP]//	6
		POP R2 FROM [SP]//	6
        POP BP FROM [SP]//	6
        RETF 			//	8________________26 Cycle
		.ENDP
//-----------------------------------------------------------------------------------
//调用方式:delay_xms(n);n=1~65535
//计算公式:(2769*n+2209)*(1/F_CPU)
//延时范围:(已经包括调用时间)4978~181468624 Cycle    (49.152M时:0.1ms~3692ms)
//______________________________________________________
//
//参数计算公式:设 t 为延时时间,n=(t*F_CPU-2209)/2769
//______________________________________________________
//创建日期	:2007-4-19
//Author 	: Zhixian-Liao
//-----------------------------------------------------------------------------------		
.PUBLIC _delay_xms		//调用过程使用9个时钟周期 总时间为 9+70+(13*R1+10)*213=9+2769*R1+2200 个机器周期
_delay_xms: .PROC		//
		//___________________________________
		PUSH BP TO [SP]	//	6
        BP = SP + 1 	//	4
        PUSH R3 TO [SP]	//	6
        PUSH R2 TO [SP]	//	6
		PUSH R1 TO [SP] //	6
		R1 = [BP+3]		//	6
		R2=0x0001		//	2
		R3=213			//	4________________40 Cycle
MLOOP:	//___________________________________(13*R1+10)*213-2 Cycle
		R1 = [BP+3]		//	6		
mLOOP:	
		[P_Watchdog_Clear]=R2;	//7___________
		R1-=1;			//	2
		JNZ	mLOOP		//	2/4_________________11 Cycle
		R3-=1			//	2
		JNZ	MLOOP		//	2/4
		//___________________________________
		POP R1 FROM [SP]//	6
		POP R2 FROM [SP]//	6
		POP R3 FROM [SP]//	6
        POP BP FROM [SP]//	6
        RETF 			//	8________________32 Cycle
		.ENDP

⌨️ 快捷键说明

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