实验1.2 子程序调用
实验目的:学习子程序的调用
*************************************************************
*TestXF2.asm
*对TestXF1.asm稍作改进,用延时子程序设置较长的延时,
*可以用试验板上的LED看到XF引脚电平的变化
*************************************************************
.mmregs ;预定义的寄存器
.def CodeStart ;定义程序入口标记
.text ;程序区
CodeStart: ;程序入口
SSBX XF ;XF置1
CALL Delay ;调用延时程序
RSBX XF ;XF清0
CALL Delay ;调用延时程序
B CodeStart ;跳转到程序开头循环执行
**************************************************************
*延时子程序:Delay
*用两级减一计数器来延时。调整AR1和AR2的大小LED闪烁的频率不同
**************************************************************
Delay:
STM #999,AR1 ;循环次数1000
LOOP1: STM #4999, AR2 ;循环次数5000
LOOP2: BANZ LOOP2,*AR2- ;如果AR2不等于0,AR2减1,再判断
BANZ LOOP1,*AR1- ;如果AR1不等于0,AR1减1,跳转到LOOP1
RET
.end
**************************************************************
*注意这种延时方法并不精确,需要精确定时必须用定时器。
*按此法延时的近似公式为:4*(AR2+1)*(AR1+1)*时钟周期
*当DSP工作在50MHz(时钟周期20ns),AR1=999, AR2=4999时
*延时约为400ms,则LED闪烁的周期为800ms,频率1.25Hz
**************************************************************
|