我新手,,,求助,关于定时计数器中断的问题。。
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
