标题: 这个在单片机p1.1接一个了led怎么不闪烁? [打印本页]
作者: 老Tom 时间: 2019-12-11 22:18
标题: 这个在单片机p1.1接一个了led怎么不闪烁?
假定P1.0每秒产生一个机器周期的正脉冲,P1.1每分钟产生一个机器周期的正脉冲。
单片机是89C51。ORG 0000H
AJMP START
ORG 000BH ;定时器0中断入口.
AJMP SERVE
START:
MOV TMOD, #01H ;T0定时方式0
MOV TH0, #3CH ;定时
MOV TL0, #0B0H
SETB TR0 ;启动.
SETB ET0 ;允许中断.
SETB EA
MOV R2, #20 ;秒.
MOV R3, #60 ;分.
CLR P1.0 ;开始时,输出低电平.
CLR P1.1
SJMP $ ;等待中断.
;--------------------------------------------
SERVE: ;50ms执行一次本中断程序.
MOV TL0, #0B0H ;重新送入初始值.
MOV TH0, #3CH ;定时
DJNZ R2, T0_END ;不到20次转移.
SETB P1.0 ;到了20次,就是到了1秒,输出正脉冲.
CLR P1.0 ;马上就恢复为0,这就是1个机器周期.
MOV R2, #20
DJNZ R3, T0_END ;不到60秒转移.
SETB P1.1 ;到了60秒,输出正脉冲.
CLR P1.1 ;马上就恢复为0,这就是1个机器周期.
MOV R3, #60
T0_END:
RETI
;--------------------------------------------
END
作者: csmyldl 时间: 2019-12-12 00:24
中断程序应该改一下,1个机器大约1us左右,无法点亮LED
SERVE: ;50ms执行一次本中断程序.
MOV TL0, #0B0H ;重新送入初始值.
MOV TH0, #3CH ;定时
DJNZ R2, T0_END ;不到20次转移.
CPL P1.0 ;到了20次,1秒钟翻转一次
MOV R2, #20
DJNZ R3, T0_END ;不到60秒转移.
CPL P1.1 ;到了60秒,LED亮灭翻转
MOV R3, #60
MOV R2,#20
T0_END:
RETI
作者: gb302 时间: 2019-12-12 08:01
输出高电平时间太短了,微妙级,LED估计都反映不过来,而且人眼也看不到
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |