readadc0.s

来自「基于DsPic30F4011的高精度位置伺服控制系统」· S 代码 · 共 54 行

S
54
字号


;
		.include "general.inc"

; External references
		.include "ReadADC.inc"

; Register usage
		.equ	ParmBaseW,w0  ; Base of parm structure
		.equ 	Work0W,   w4
        .equ 	Work1W,   w5
		
;=================== CODE =====================
		.section  .text
		.global   _ReadADC0
        .global   ReadADC0

_ReadADC0:
ReadADC0:
		;;iResult = 2 * qK * ADCBUF0
		mov.w		[ParmBaseW + ADC_qK],Work0W
		mov.w		_ADCBUF0,Work1W			;;
		
		;;将有符号小数变为无符号小数,即,将
		;;-1 -> .9999转换为0 -> .9999
		btg			Work1W,#15
		lsr.w		Work1W,Work1W
		
		mpy			Work0W*Work1W,A
		sac			A,#-1,Work0W
		mov.w		Work0W,	[ParmBaseW + ADC_qADValue]

		return

		.global   _ReadSignedADC0
        .global   ReadSignedADC0

_ReadSignedADC0:
ReadSignedADC0:
		;;iResult = 2 * qK * ADCBUF0
		
		mov.w		[ParmBaseW + ADC_qK],Work0W
		mov.w		_ADCBUF0,Work1W	
		
		mpy			Work0W*Work1W,A
		sac			A,#-1,Work0W
		mov.w		Work0W,	[ParmBaseW + ADC_qADValue]
		
		return


		.end

⌨️ 快捷键说明

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