您的位置:首页技术文栏单片机C51
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

定时器产生流水灯程序

[日期:2008-06-24 ] [来源:net 作者:佚名] [字体: (投递新闻)

org 0000h
      ajmp main
    
      org 000bh      ;T0溢出中断入口地址·
      ajmp time0
      
      org 0020h
main:  clr p1.5 
      mov r1,#0ffh
      mov r2,#00h     ;给计数器r2赋初值0
 
      mov sp,#70h     ;设置堆栈
      mov tmod,#01h   ;设置T0工作方式
      mov th0,#3ch     ;T0置计数初值
      mov tl0,#0b0h
      setb et0         ;允许T0溢出中断
      setb ea          ;cpu开中断
      setb tr0         ;启动T0开始计数
 
wait:  cjne r2,#20,wait   ;定时时间未到,继续查询等待
      acall light        ;定时时间到,调用查表求灯光子程序 
      ajmp wait       
    
;以下是查表求灯光子程序
light:  mov r2,#00h     ;计数器重新赋初值

      inc r1           ;查表求灯光,详细解释见试验5“多位数码显示”
      mov a,r1
      mov dptr,#tab
      movc a,@a+dptr
      mov p0,a
      cjne a,#0ffh,next 
      mov r1,#0ffh
next:  ret               ;子程序返回
         
      ;以下是中断服务程序
time0: inc r2           ;计数器加1
      mov th0,#3ch      ;重置计数初值
      mov tl0,#0b0h
      reti           ;中断返回

tab:  db 0fah,0f5h,0ebh,0d7h     ;灯光变换表格
     db 0afh,5fh,0aah,055h,0f0h,0fh,0ffh 
     end

  
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐