首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

定时器(51汇编)

定时器(51汇编)

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
返回列表