单片机编程:键控定时灯

发布者:变形金刚最新更新时间: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计数,协作定时

推荐阅读最新更新时间:2024-03-16 16:02

51单片机编程 第五节:键盘驱动
第五节:键盘驱动 指提供一些函数给任务调用,获取按键信息,或读取按键值。 定义一个头文档 KEY.H ,描述可用函数,如下: 代码 1. #ifndef _KEY_H_ //防止重复引用该文档,如果没有定义过符号 _KEY_H_,则编译下面语句 2. #define _KEY_H_ //只要引用过一次,即 #include key.h ,则定义符号 _KEY_H_ 3. unsigned char keyHit( void ); //如果按键,则返回非0,否则返回0 4. unsigned char keyGet( void ); //读取按键值,如果没有按键则等待到按键为止 5.
[单片机]
C51单片机编程技巧:LCD1602编程经验分享
简介:先说明一下,我下面要说的LCD1602的芯片驱动是HD44780,如果你们的LCD1602驱动芯片不是HD44780,那么下面的内容是不适用的。 这次我来分享一下我的LCD1602的编程经验: 先说明一下,我下面要说的LCD1602的芯片驱动是HD44780,如果你们的LCD1602驱动芯片不是HD44780,那么下面的内容是不适用的。 我对LCD1602的整体理解 这里说一下我对LCD1602的整体理解哈,LCD1602是一个可以显示两行字符的LCD显示器,每一行可以都写入40个字符,但是每行都只有前16个字符可以显示,每行后面的24个字符无法立即显示,只说不容易明白,下面看一下示意图: 另外LCD1602
[单片机]
C51<font color='red'>单片机编程</font>技巧:LCD1602编程经验分享
PIC16F887 实战编程 单片机编程 基础实验教程
基础操作需要看一下以下的博客,跟着走一遍。 安装MPLAB V4.05+XC8 V1.41,老师不会管你用什么版本,别的版本bug多,老版本反而好用: https://blog.csdn.net/x1131230123/article/details/100907773 安装proteus 8.9: https://blog.csdn.net/x1131230123/article/details/106951776 做一个基础实验(想改写到MPLAB V5+XC8 V2也看这里的博客6.3 移植操作指南): https://blog.csdn.net/x1131230123/article/details/108757436
[单片机]
PIC16F887 实战编程 <font color='red'>单片机编程</font> 基础实验教程
单片机编程基础知识问答
1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。 C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。 对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对
[单片机]
如何学好单片机编程?学好单片机的基础是什么?
在我即将毕业的那年,我一直很羡慕学校学计算机专业的同学。 他们的未来充满了前景,工作几年拿个几万块,而且上限也高,工作环境又好,听起来还有逼格,毕竟搞高新技术的。 而我学的是电气工程,当初完全是感觉工程牛逼,才选的这个专业(其实分数低也没太多选择)。 学了1年以后学校把我整个系强制转成电梯专业,在未来的几年,都跟轿厢、轿门、电机、机房打交道。 临近毕业我才知道这个职位有多卑微和苦逼,工资低、责任大、24小时待命就够我受的了。 细思极恐,花了这么多青春,浪费了这么钱,最后出来去做这种工作,如何面对自己?如何对得起父母辛勤付出? 后面在所有人都不看好的情况下我自学了单片机,并成功转行。 自学和后面的求职之路都非常坎坷,简直就是生理和心
[单片机]
PIC单片机编程入门之超简单的点灯程序
IO口控制 方向寄存器 TRISA~TRISAE 比如 TRISB=0x00; // 1为输入, 0为输出 , 这样就把portB端口全部设为输出 数据寄存器 PORTA~PORTE 比如 PORTB=0x01; // 1为置高,0为置低 , 这样就把portB1口置高,其它portB口置低 例: 点灯程序 #include __CONFIG (0x3B31);// pic单片机需要进行寄存器配置,详见手册 void main() { TRISD=0xfe; // 把RD1端口设为输出 PORTD=0x01; // 把RD1端口置高 //RD1=1; PORTD 和 RD一样的 whil
[单片机]
童鞋们一起说说单片机编程技术学习方法吧攻略篇
目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。过去习惯于传统电子领域的工程师、技术员正面临着全新的挑战,如不能在较短时间内学会单片机,势必会被时代所遗弃,只有勇敢地面对现实,挑战自我,加强学习,争取在较短的时间内将单片机技术融会贯通,才能跟上时代的步伐。 但是,许多的学习者(包括在校学生),他们总不得要领,从一开始学习时的热情高涨,到最后的沮丧放弃,使得大家对单片机产生了既爱又怕的感觉。 学习单片机并不象学习传统数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”的因素。正是这个“软件”因素的存在,使得许多初学者怎么也弄不懂单片机的工作过程,他们怎么也不明白为什么将几个数送来送
[单片机]
单片机编程技巧一
1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。 C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。 对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言 单片机编程 编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved