微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 我新手,,,求助,关于定时计数器中断的问题。。

我新手,,,求助,关于定时计数器中断的问题。。

时间:10-02 整理:3721RD 点击:
        下面是我的程序,
   
   ORG 0000H
LJMP START
   ORG 000BH
LJMP TIME
  ORG 009BH
START:     
  MOV R0,#32H
MOV TMOD,#01H
MOV TH0,#0D8H
MOV TL0,#0F0H        ;定时计数器0初始化
SETB EA
SETB TR0
SETB ET0              ;开中断
        SJMP $
   
TIME:  DJNZ  R0,NEXT   
         CPL P2.0
          MOV  TH0,#0D8H
          MOV  TL0,#0F0H       ;重新设置初值
   NEXT:        RETI
END
     上面是一个1秒周期的闪烁灯的程序。下入单片机后为什么不亮。有什么问题么、、

忘记写了,在重新设置初值下面有重新给R0赋值,MOV R0,#32H

厉害啊 ,还是用汇编写的e

额。先学汇编,再学C

我用的是C语言,不好意思帮补了你

闪烁灯程序里不需要用到单片机的中断系统。给你我自己做的闪烁灯程序(仅供参考,数据跟你的不一样):
      ORG   0000H
      LJMP  MAIN
      ORG   0030H
MAIN:MOV   P0,#0FFH
      LCALL DELAY
      MOV   P0,#00H
      LCALL DELAY
      LJMP  MAIN
DELAY:MOV   R0,#0AH
      MOV   TMOD,#10H
      MOV   TH1,#3CH
      MOV   TL1,#0B0H
      SETB  TR1
   L2:JBC   TF1,L1
      SJMP  L2
   L1:MOV   TH1,#3CH
      MOV   TL1,#0B0H
      DJNZ  R0,L2
      RET
      END

程序我下载进去正常运行。你用的是什么单片机,51吗?,还是其他的单片机,要不要配置管脚的。

单片机不用先学汇编后学C吧 直接学C方便好多

    TURN_ON:  
          JB   P5.0,$                        ;按键是否摁下
     
        
          MOV  TMOD, #01H
         MOV  TH0, #0D8H
         MOV  TL0, #0F0H
         MOV  R0,#32H
         SETB EA            
         SETB TR0
         SETB ET0
         SJMP $                                   ;定时计数器初始化
        
TIME:

       MOV  TH0, #0D8H
      MOV  TL0, #0F0H
       DJNZ R0,NEXT
    CPL P2.0                        
    MOV R0,#32H                               ;闪烁
   
NEXT:   RETI
END

就是这么个简单的程序,按键一直摁它一直闪烁,按键松开 就停止,但是按下后一直闪,怎么办。求助。

不好意思 回错了。本来想发帖来着。我觉得先学汇编对单片机理解的深一点吧,

汇编不用定时器就能做到1秒闪烁的

重新设置初值应当放到中断的开头处,不应判断后再重置

能QQ联系么。还有点问题想问问你。

不是这这样说的,C语言是方便,我也喜欢用C。但是学过汇编和没学过汇编是有区别的。学汇编能更好的理解单片机是怎样工作的,内部什么结构,寄存器等。例如我最近在看单片机实时系统。学过汇编就很好理解里面的东西了。学过汇编就会对C语言有更好的认识了,例如C语言调用函数具体是是怎样实现的,单片机是怎样工作的。总之不会汇编也能用单片机,但是学汇编能更深入理解单片机。

不好意思,不怎么上论坛。1907353731

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top