📄 adc.asm
字号:
.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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -