主程序: ;================================================ .text CodeStart: STM #STACK+10H,SP ;设堆栈指针SP LD #DATA_DP,DP ;设数据地址DP STM #XF_Flag,AR2 ;AR指向XF标志 ;改变中断向量表位置 K_IPTR .set 0080h ;指向0080H,默认是FF80 LDM PMST,A AND #7FH,A ;保留低7位,清掉高位 OR #K_IPTR,A ; STLM A,PMST *初始化定时器0 *f=50MHz,定时2ms时: *根据定时器长度计算公式:Tt=T*(1+TDDR)*(1+PRD) *给定TDDR=9,PRD=9999,CLKOUT主频f=40MHz,T=25ns *Tt=20ns*(1+9)*(1+9999)=2000us=2ms *f=100Mhz,定时最大是:10ns*2^4*2^16=10ms, PERIOD .set 9999 ;定义计数周期 STM K_TCR_STOP,TCR ;停止计数器0 ; STM #PERIOD,TIM ;可设成跟PRD一样,也可不设自动加载 STM #PERIOD,PRD ;设定计数周期 STM #K_TCR,TCR ;开始Timer0 stm #0008h,IMR ;允许Timer0中断 STM #0008h,IFR ;清除挂起的中断 rsbx intm ;开中断 end: nop B end |