关于51的定时器

2019-07-15 19:41发布

最近学习定时器,就想自己编一个利用定时器定时一秒输出方波,来点亮,熄灭小灯,但是结果不对。这个程序在哪里有问题呢?对于关于定时器的程序改按怎样的顺序来看,工作的顺序是怎样的?希望大神百忙之中,指点一二、谢谢!!!
ORG 0000H
LJMP  MAIN
ORG 000BH
LJMP LOOP1
ORG 1000H
MAIN:
MOV P0,#00H
ACALL DELAY
MOV A,P0
CPL A
MOV P0,A
LJMP MAIN
DELAY:
MOV B,#0AH
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
RET
LOOP1:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ B,LOOP2
MOV B,#0AH
LOOP2:
REti
END
   
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
依然落叶飘零
1楼-- · 2019-07-16 01:01
 精彩回答 2  元偷偷看……
a422061641
2楼-- · 2019-07-16 06:48
依然落叶飘零 发表于 2014-5-17 10:17
你应该把P0电平的转换放在中断函数里面才行的,你现在P0电平变化和定时器中断无关,只和main函数的运行频率 ...

按我原本的想法
MAIN:
MOV P0,#00H
ACALL DELAY
MOV A,P0
CPL A
MOV P0,A
LJMP MAIN
如果将定时器看做延时函数的话,程序应该正确。您的意思是,定时器不能将它看做延迟函数?为什么呢?谢谢!
依然落叶飘零
3楼-- · 2019-07-16 08:19
a422061641 发表于 2014-5-17 11:01
按我原本的想法
MAIN:
MOV P0,#00H

楼主还是对定时器的工作原理有点搞不懂。建议楼主还是看看书,看下定时器中断是怎样工作的。
另附我在另一个帖子的回复给你参考下,希望对你有帮助。
http://bbs.elecfans.com/forum.php?mod=viewthread&tid=431136&page=1#pid2891135
a422061641
4楼-- · 2019-07-16 11:37
依然落叶飘零 发表于 2014-5-17 12:43
楼主还是对定时器的工作原理有点搞不懂。建议楼主还是看看书,看下定时器中断是怎样工作的。
另附我在另 ...

好的,谢谢您!真心感谢!

一周热门 更多>