📄 sys.asm
字号:
.INCLUDE Hardware.inc;
.CODE
.PUBLIC _System_Initial;
_System_Initial: .PROC
//---------------- 系统时钟、中断 --------------------//
r1=0
[P_SystemClock]=r1
r1=0
[R_InterruptStatus] = r1
[P_INT_Ctrl]=r1
IRQ OFF
FIQ OFF
r1 = 0x0000 //IOA0---A15设为带下拉电阻的输入
[P_IOA_Dir] = r1
[P_IOA_Attrib] = r1
[P_IOA_Data] = r1
retf;
.ENDP;
//**************** 初始化 A/D **********************//
.PUBLIC _InitAD
_InitAD: .PROC
r1 = 0x0001
[P_ADC_Ctrl] = r1; //自动方式, 允许A/D工作
r1 = 0x0; //通过读[P_ADC_MUX_Data] 单元进行A/D转换
[P_DAC_Ctrl] = r1;
r1 = 0x0001 //LINE1输入
[P_ADC_MUX_Ctrl] = r1;
retf
.ENDP
//************** A/D 转换程序 **********************//
.PUBLIC _ReadAD
_ReadAD: .PROC
r2=4 //进行4次转换
r3=0
TestLoop:
r1=[P_ADC_MUX_Data] //读[P_ADC_MUX_Data],启动一次AD转换
r1=0x8000
TempConverLoop:
TEST r1,[P_ADC_MUX_Ctrl]
JZ TempConverLoop
r1=[P_ADC_MUX_Data] //AD转换值
r1=r1 LSR 4 //将AD值移到低10位
r1=r1 LSR 2
r3+=r1 //四次A/D值累加
r2-=1
jnz TestLoop
r3=r3 LSR 2 //结果除以4,求4次的平均值
r1=r3 //返回结果
retf
.ENDP
.Public _Clear_WatchDog
_Clear_WatchDog: .PROC
R1=0x0001;
[P_Watchdog_Clear]=R1;
retf;
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -