求助:这个程序哪里出错啦

2019-07-19 21:40发布

你好:这个是共阳LED,想通过定时器来实现流水灯效果,不知道哪里出错了?


intel
;初始化PB,推挽输出,用于数码管段驱动;
  mov PB_DDR,#0ffh
mov PB_CR1,#0ffh
mov PB_CR2,#0


;初始化定时器timer2

  mov TIM2_EGR,#1; 允许产生更新事件
mov TIM2_PSCR,#2  ; 计数器时钟=主时钟/128=2MHZ/2,相当于计数器周期为uS
  mov TIM2_ARRH,#13h ;设定重装载时的寄存器值的高8位
mov TIM2_ARRL,#88h ; 设定重装载时的寄存器值的低8位
mov TIM2_CNTRH,#13h ; 设定计数器的初值的高8位
mov TIM2_CNTRL,#88h ; 设定计数器的初值的低8位
  mov TIM2_CR1,#01  ; 设置控制器,启动定时器,b0 = 1,允许计数器工作,b1     = 0,允许更新
  mov TIM2_IER,#01 ; 允许更新中断
Rim             ; 允许CPU全局中断

rcf ;对标志位清0
  ld a,#0ffh
next1: ;循环标号
rlc a ;A左移
next2:
ld PB_ODR,a ;把a数据送PB_ODR
   BTJF bit,#0,next1
jra next2 ;跳转到next2
 
TIMER2_ISR.L: ;定时器2中断入口
  mov  TIM2_SR1,#0; 清除更新标志 
inc counter;1S累积计数器加1
ld a,counter;
cp a,#100;判断是否到达1S
jrne reture;没有到达返回
  mov counter,#0;到达1S,清累积计数器
bset bit,#0;设置标志位,用于主程序判断
reture:;返回
  iret


interrupt NonHandledInterrupt
NonHandledInterrupt.l
iret

  motorola
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。