📄 system.asm
字号:
//========================================================================================================
// 文件名称:system.asm
// 实现功能:实现与硬件相关的底层操作
// 日 期:
//========================================================================================================
.INCLUDE hardware.inc
.CODE
//========================================================================================================
//函数: F_ADC_Initial
//语法:void F_ADC_Initial()
//描述:初始化
//参数:无
//返回:无
//========================================================================================================
.PUBLIC _F_ADC_Initial;
_F_ADC_Initial: .PROC
PUSH r1,r1 TO [sp];
R1 = 0x0001 //选择通道LINE_IN为IOA0
[P_ADC_MUX_Ctrl] = R1
R1 = 0x0003 //允许A/D转换
[P_ADC_Ctrl] = R1
POP r1,r1 FROM [sp];
RETF;
.ENDP
//========================================================================================================
//函数: F_ADC_Read
//语法:unsigned int F_ADC_Read(void)
//描述:读AD转换数据
//参数:无
//返回:r1,返回值
//========================================================================================================
.PUBLIC _F_ADC_Read;
_F_ADC_Read: .PROC
L_AD:
R1 = 0x0001;
[P_Watchdog_Clear] = R1; //清看门狗
R1 = [P_ADC_MUX_Ctrl]; //读寄存器[P_ADC_MUX_Ctrl]的B15位
TEST R1,0x8000; //判断是否转换完毕
JZ L_AD; //否,继续转换
R1 = [P_ADC_MUX_DATA]; //是,则读出[P_ADC_MUX_DATA]转换结果
RETF;
.ENDP
.PUBLIC _Delay;
_Delay: .PROC
PUSH r2,r3 TO [sp];
R2 = 0x20;
R3 = 0x1;
L1:
R2 = R2-1;
CMP R2,R3;
JNGE L2;
JMP L1;
L2:
R2 = 0x20;
R1 = R1-1;
CMP R1,R3;
JNGE L3;
JMP L2;
L3:
POP r2,r3 FROM [sp];
RETF;
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -