历史上的今天
今天是:2025年05月11日(星期日)
2018年05月11日 | 单片机编程:键控定时灯
2018-05-11 来源:eefocus
如图所示的电路,要求开机时灯灭,按一下按钮,灯D1亮,延时10秒后自动熄灭。
若在灯亮期间再按一下按钮,则灯立即熄灭。

试编写实现上述功能的完整程序。 要用汇编的哦,C俺还没学。
;-------------------------------------------------------
这个题目,共有四人给出了程序,楼主选择的,却是一个最差的程序。
有位网友,已经对做而论道的程序和另一个程序,进行了对比,结果说明做而论道的程序是正确的。
下面把做而论道的程序写在下面,供大家评论。
下列程序,经过仿真,可以满足要求。
;================================
ORG 0000H
START:
JNB P3.2, $
SETB P1.0
JB P3.2, $
CALL DL10ms
JB P3.2, START
JNB P3.2, $
CLR P1.0
MOV R4, #10
S2_DL1:
MOV R5, #100
S2_DL2:
JNB P3.2, START
CALL DL10ms
DJNZ R5, S2_DL2
DJNZ R4, S2_DL1
SJMP START
;--------------------------------
DL10ms:
MOV R6, #20 ;延时10ms
DELAY:
MOV R7, #248
DJNZ R7, $
DJNZ R6, $ - 4
RET
;================================
END
;本程序虽然没有使用定时器,经过仿真证明,时间的误差在11毫秒之内,约为万分之一。
最佳答案:
--------------------------------------
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTI
ORG 0030H
MAIN:
MOV SP, #60H
SETB EX0
SETB EA
SETB IT0
JB P1.0, $ ;等待按键按下
LCALL DELAY ;延时
SETB P1.0
LJMP $ ;继续等待
INTI:
CPL P1.0
RETI
DELAY: ;延时10.060秒
MOV R7, #80
D1: MOV R6, #250
D2: MOV R5, #250
DJNZ R5, $
DJNZ R6, D2
DJNZ R7, D1
RET
END
--------------------------------------
点评:
该程序,只是在第一次按键的时候,亮灯10秒后自动关闭;以后再按下按键,就没有定时关灯的现象了。
该程序没有消抖的功能,在亮灯10秒期间,再按下按键,会有什么现象?显示将会很乱。
另外,延时10秒,误差为60毫秒,在四个程序中,这个程序的误差最大。
************************************************************
下一篇:T0定时、T1计数,协作定时
史海拾趣
|
采用电压反馈放大器 (VFA) 来设计一个优质的电流到电压 (跨导放大器) 转换器是一项重大的挑战。理论上,一个光电二极管当曝露在光线中时可产生一个电流或电压输出,而跨导放大器 (TIA) 便是将这个很弱的电流转换成一个可用的电压信号,通常跨导放大 ...… 查看全部问答> |
|
什么总有些人不费吹灰之力就能在职场上如鱼得水?下面10条就是专门为你发掘的独门秘籍,也是老板不愿意说的秘密。 1.卡纸的打印机、罢工的电脑……每个公司里都有些人能迅速地把它们修好。发现这些人,并和他们保持良好的交往。 2.每认识一个 ...… 查看全部问答> |
|
最近用SAA1064 驱动4个 8段数码管做实验 采用直连的方式 SAA1064 5V供电 采用动态模式 但是LED的亮度 白天看起来总是暗 调整电流控制命令无效 静态模式亮度很高 请问大家有没有碰到此问题 卡在这里很久了 谢谢… 查看全部问答> |
|
RT-Thread从2006年诞生到现在已经5年了,历经多次版本更迭(0.2.x,0.3.0,0.3.3,0.4.0 beta1,0.4.0 beta2,0.4.0 RC1)内核更稳定:增强上下文检查的功能,更多的错误检查组件更丰富:有文件系统,有RTGUI,支持TCP/IP协议栈,支持动态模块加载 ...… 查看全部问答> |




