📄 adc.asm
字号:
//*****************************************************************************/
// 文件名称: ADC.asm
// 实现功能: 完成模数转换的功能
// IDE环境: SUNPLUS u'nSPTM IDE 1.16.4
// 日期: 2005/7/19
// 作者:Eric
//*****************************************************************************/
.include hardware.inc
.define P_ADC_MUX_Ctrl 0x702b
.define P_ADC_MUX_DATA 0x702C
.define P_ADC_LINEIN_Data 0x702C
.RAM
.PUBLIC _AD_DATA;
.var _AD_DATA
.CODE
//*****************************************************************************/
// 函数原型: void LOAD_AD(void):
// 实现功能: 从选择的通道中取模拟信号进行转换,并将结果保存到变量
// 参数要求: 无
//*****************************************************************************/
.public _LOAD_AD
_LOAD_AD: .PROC
PUSH R1 TO [SP]
_contin_L_AD:
R1 = [P_ADC_MUX_Ctrl] //读寄存器[P_ADC_MUX_Ctrl]的B15位
TEST R1,0x8000 //判断是否转换完毕
JZ _contin_L_AD //否,继续转换
R1 = [P_ADC_MUX_DATA] //是,则读出[P_ADC_MUX_DATA]转换结果
R1=R1 LSR 4; //从高10位移到低10位
R1=R1 LSR 2;
[_AD_DATA]=R1 //保存至全局变量
POP R1 FROM [SP]
RETF
.ENDP
//函数原型:void ADC_Inti(void)
.public _ADC_Init
_ADC_Init: .proc
push R1,R5 to [sp]
R1 = 0x0003; //选择通道LINE_IN为IOA2
[P_ADC_MUX_Ctrl] = R1
R1 = 0x0003 //允许A/D转换
[P_ADC_Ctrl] = R1
pop R1,R5 from [sp]
RETF
.endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -