关于AT89c51单片机定时器实现延时子程序的问题

用汇编代码设计程序,完成8个LED灯的循环闪烁:LED1亮,其余灭->LED2亮,其余灭……,如此循环5次后,进行全灭->全亮闪烁,时间间隔为500ms用p0口控制org... 用汇编代码设计程序,完成8个LED灯的循环闪烁:
LED1亮,其余灭->LED2亮,其余灭……,如此循环5次后,进行全灭->全亮闪烁,时间间隔为500ms用p0口控制
org 0000h
RESET: LJMP MAIN
ORG 000BH
LJMP IT0P
ORG 1000H MAIN: MOV A,#01H
MOV R1,#28H LOOP: MOV P0,A
RLC A
ACALL DELAY
DJNZ R1,LOOP
MOV A,#0FFH LOOP1: MOV P0,A
CPL A
ACALL DELAY
LJMP LOOP1 DELAY: MOV SP,#60H
MOV B,#1AH
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
SETB ET0
SETB EA
HERE: SJMP HERE IT0P: MOV TL0,#0B0H
DJNZ B,LOOP2
CLR TR0
LOOP2: RETI
END
这是我的代码,为什么起不到延时的作用
展开
 我来答
做而论道
高能答主

2012-03-24 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
;用汇编代码设计程序,完成8个LED灯的循环闪烁:
;LED1亮,其余灭->LED2亮,其余灭……,如此循环5次后,
;进行全灭->全亮闪烁,时间间隔为500ms用p0口控制

下列程序已经测试通过
;----------------------
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
MAIN:
SETB TR0 ;T0定时方式0
MOV SP, #60H
MOV IE, #82H
MOV B, #61 ;定时500ms,500 000 / 8192 = 61
;-----------------------
MOV A, #127
MOV R1, #40
LP0:MOV P0, A
JBC F0, $ + 5
SJMP $ - 3
RR A
DJNZ R1, LP0
;-----------------------
CLR A
LP1:MOV P0, A
JBC F0, $ + 5
SJMP $ - 3
CPL A
LJMP LP1
;-----------------------
T0_INT: ;自动重新装入0
DJNZ B, T0_END
MOV B, #61
SETB F0
T0_END:
RETI
;-----------------------
END
百度网友e63964c
2012-03-23 · TA获得超过1511个赞
知道小有建树答主
回答量:426
采纳率:100%
帮助的人:467万
展开全部
你在定时中断里执行了CLR TR0,把定时器停下了,一次中断后,不会再有中断了
更多追问追答
追问
如何更改呀,如何反复调用定时器延时程序,再跳转至主程序中执行 SETB  TR0
为何定时器没有再次启动
追答
可以把这条指令删了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
唐定江1987
2012-03-23
知道答主
回答量:15
采纳率:0%
帮助的人:2.4万
展开全部
楼上说对哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式