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

📄 ad.asm

📁 本系统实现了一种具有语音播报、语音提示的高性能、高智能的实用型远距离多路数据采集系统。
💻 ASM
字号:
//***********************************************************
// Note:通过模拟量输入口LINE_IN输入电压值,以8K的采样率经A/D
//转换后送给IOB口控制LED点亮,同时可以根据LED的点亮来了解转换
//的数据
//*************************************************************									

// 时钟源为Fosc/2,采样率为8KHz
.include hardware.inc
.CODE
.public _F_AD_Initial;
_F_AD_Initial:  .PROC
		PUSH r1,r1 TO [sp];
		R1 = 0x0001	            //允许A/D
		[P_ADC_Ctrl] = R1 		 
	    
    	r1=0x0000;			//通过读P_ADC触发ADC自动转换	
	    [P_DAC_Ctrl] = r1; 
		
		r1 = 0x0001            //LINE1输入			
		[P_ADC_MUX_Ctrl] = r1;
		
		POP r1,r1 FROM [sp];
		RETF
		.ENDP
	
	
//************** A/D 转换程序 **********************//	
.public _F_ReadAD
_F_ReadAD: .PROC
		   PUSH r2,r5 TO [sp];
		   BP=SP+1;
		   r1 = [BP+6];           		
		   [P_ADC_MUX_Ctrl] = r1;//设置通道号
		   r1=0x0001;
		   [P_Watchdog_Clear]=r1;
		   r2=16      //进行4次转换
		   r3=0
L_SampleLoop:	   
		   r1=[P_ADC_MUX_Data]      //读[P_ADC_MUX_Data],启动一次AD转换
           r1=0x8000
L_VoltageConverLoop:   
          TEST r1,[P_ADC_MUX_Ctrl]
          JZ L_VoltageConverLoop; 
          r1=[P_ADC_MUX_Data]      //AD转换值 
          r1=r1 LSR 4           //将AD值移到低10位
          r1=r1 LSR 2
          r3+=r1             //四次A/D值累加
          r2-=1
          jnz  L_SampleLoop
          r3=r3 LSR 4     //结果除以4,求4次的平均值
          r1=r3           //返回结果
          
          POP r2,r5 FROM [sp];
          RETF
          .ENDP
		   
   
 

⌨️ 快捷键说明

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