sys_kernel_sub.asm

来自「PCM 脉冲编码调制的C源代码」· 汇编 代码 · 共 95 行

ASM
95
字号

	.text
	
	.global _delayMs_SYS,_delayUs_SYS 
;**************************
_delayMs_SYS: 
	.if 0
	pshboth(xar0)
	push(ar1)
	nop
	xar0 = _PWM_clockGene	
	push(@BRC0_L) || mmap()
	push(@BRC1_L) || mmap()
	ar1 = *ar0(PWM_clockGene_ms)
	ar1 -= #1
delayMs_loop:
	brc0 = ar1
	brc1 = 99
	blockrepeat{
		localrepeat{ ; 10 nops.
			nop
		    nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
		}
	} 
	
	t0 -= #1
	if(t0 != 0) goto delayMs_loop
	@BRC1_L = pop() || mmap()
	@BRC0_L = pop() || mmap()
	ar1 = pop()
	xar0 = popboth()
	nop
	nop
	.else
	pshboth(ac0)
_circle2_ForCdelay_sub:	
	;inner circle
	ac0=#3fffh
_circle_ForCdelay_sub:
	ac0-=#1
	nop
	if (ac0!=#0) goto _circle_ForCdelay_sub
	;outer circle
	t0-=#1 ;decrement the ar5
	if(t0!=#0) goto _circle2_ForCdelay_sub
	;ac2=pop()
	ac0=popboth()
	.endif
	return
	
_delayUs_SYS: 
	.if 0 
	pshboth(xar0)
	push(@CSR_L) || mmap()
	xar0 = _PWM_clockGene
	nop
	nop
delayUs_loop:
	csr = *ar0(PWM_clockGene_us)
	repeat(csr)
	nop
	nop
	t0 -= #1
	if(t0 != 0) goto delayUs_loop
	@CSR_L = pop() || mmap()
	xar0 = popboth()
	nop
	nop
	.else
	pshboth(ac0)
_circle2_ForCdelay_us_sub:	
	;inner circle
	ac0=#0fh
_circle_ForCdelay_us_sub:
	ac0-=#1
	nop
	if (ac0!=#0) goto _circle_ForCdelay_us_sub
	
	;outer circle
	t0-=#1 ;decrement the ar5
	if(t0!=#0) goto _circle2_ForCdelay_us_sub
	nop
	ac0=popboth()
	.endif
	return	

⌨️ 快捷键说明

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