adc.asm

来自「2005年全国大学生电子设计竞赛论文集」· 汇编 代码 · 共 59 行

ASM
59
字号
.include  hardware.inc
.define   P_ADC_MUX_Ctrl     0x702b
.define   P_ADC_MUX_Data     0x702c
.external _Sound              
.code
//=======================================================================================
//函数名称:_GetSound
//函数功能:通过AD转换,得到声音信号
//参数:通过改变_Sound的值传递参数
//=======================================================================================
.public  _GetSound          //AD转换程序,用于测电压
_GetSound:  .proc
       push r1,r3 to [sp]
       r1=0x0005            //设置IOA4口为linein口
       [P_ADC_MUX_Ctrl]=r1
       r1=0x0001            //允许AD转换
       [P_ADC_Ctrl]=r1
       r3=0
  _AD1:
       r1=[P_ADC_MUX_Ctrl]  //读寄存器[P_ADC_MUX_Ctrl]的b15位
       test r1,0x8000       //判断是否转换完毕
       jz  _AD1             //否则继续转换
       r2=[P_ADC_MUX_Data]  //是,读出[P_ADC_MUX_Data]中的结果同时触发AD重新转换
       r2=r2 lsr 4          //AD是10位的,16位的结果要右移6位得到有效数据,高10位有效
       r2=r2 lsr 2
       [_Sound]=r2  
       r3+=1
       cmp r3,2
       jb  _AD1        
       pop r1,r3 from [sp]
       retf
       .endp
//=======================================================================================
//函数名称:_GetSound
//函数功能:通过AD转换,得到声音信号
//参数:通过改变_Sound的值传递参数
//=======================================================================================
//.public  _GetFudu          //AD转换程序,用于测电压
//_GetFudu:  .proc
//       push r1,r3 to [sp]
//       r1=0x0004            //设置IOA3口为linein口
//       [P_ADC_MUX_Ctrl]=r1
//       r1=0x0001            //允许AD转换
//       [P_ADC_Ctrl]=r1
//       r3=0
//  _AD2:
//       r1=[P_ADC_MUX_Ctrl]  //读寄存器[P_ADC_MUX_Ctrl]的b15位
//       test r1,0x8000       //判断是否转换完毕
//       jz  _AD2             //否则继续转换
//       r2=[P_ADC_MUX_Data]  //是,读出[P_ADC_MUX_Data]中的结果同时触发AD重新转换
//       r2=r2 lsr 4          //AD是10位的,16位的结果要右移6位得到有效数据,高10位有效
//       r2=r2 lsr 2
//       [_V_value]=r2  
//       r3+=1
//       cmp r3,3
//       jb  _AD2        
//       pop r1,r3 from [sp]
//       retf
//       .endp             

⌨️ 快捷键说明

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