单片机课程设计论文_电子时钟设计.pdf_第1页
单片机课程设计论文_电子时钟设计.pdf_第2页
单片机课程设计论文_电子时钟设计.pdf_第3页
单片机课程设计论文_电子时钟设计.pdf_第4页
单片机课程设计论文_电子时钟设计.pdf_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 单片计算机即单片微型计算机。由 ram ,rom,cpu构成,定时,计数和 多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和 工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这 次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本设计主要设计了一个基于at89c51单片机的电子时钟。并在数码管上显示 相应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。 应 用proteus的isis软件实现了单片机电子时钟系统的设计与仿真。该方法仿真效果 真实、准确,节省了硬件资源。 关键字:单片机;子时钟;键盘控制。 1 目录 摘要. 4 1电子时钟.6 1.1电子时钟简介. 6 1.2电子时钟的基本特点6 1.3电子时钟的原理6 2单片机识的相关知识.6 2.1单片机简介. 6 2.2单片机的发展史7 2.3单片机的特点. 8 2.489c51 单片机介绍8 3控制系统的硬件设计.10 3.1单片机型号的选择10 3.2数码管显示工作原理10 3.3键盘电路设计11 3.4整个电路原理图12 4控制系统的软件设计.12 4.1 程序设计12 4.2 程序流程图. 15 4.3 仿真图.18 4.4 仿真结果分析. 19 5结束语19 6附录20 参考文献28 2 1电子时钟 1.1 电子时钟简介 1957年,ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础, 电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延 时程序产生一定的时间中断, 用于一秒的定义, 通过计数方式进行满六十秒分钟进一, 满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活 补课缺少的工具。 1.2电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、 石英表都采用了石英技术, 因此走时精度高, 稳定性好, 使用方便, 不需要经常调试, 数字式电子钟用集成电路计时时,译码代替机械式传动,用led显示器代替指针显 示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以 进行时和分的校对,片选的灵活性好。 1.3电子时钟的原理 该电子时钟由89c51,button,六段数码管等构成,采用晶振电路作为驱 动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分 钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多 种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的; 直 接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按 下按键不放松,则可实现小时的调节,同样每按一次小时加一。 2单片机识的相关知识 2.1单片机简介 单片机全称为单片机微型计算机(single chip microsoftcomputer)。从应用 领域来看,单片机主要用来控制,所以又称为微控制器(microcontroller unit)或 嵌入式控制器。 单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算 机。 3 2.2单片机的发展史 1 . 4位单片机 1975年,美国德克萨斯仪器公司首次推出4位单片机tms-1000;此后,各 个计算机公司竞相推出四位单片机。日本松下公司的mn1400系列,美国洛克威尔 公司的pps/1系列等。四位单片机的主要应用领域有:pc机的输入装置,电池充 电器,运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器, 电子玩具,钟表,计算器,多功能电话等。 2 . 8位单片机 1972年,美国intel公司首先推出8位微处理器8008,并于1976年9月率 先推出mcs-48系列单片机。在这以后,8位单片机纷纷面市。例如,莫斯特克和 仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。随着集成电路 工艺水平的提高,一些高性能的8位单片机相继问世。例如,1978年摩托罗拉公司 的mc6801系列及齐洛格公司的z8系列,1979年nec公司的upd78xx系列。 这类单片机的寻址能力达64kb,片内rom容量达4-8kb,片内除带有并行io 口外,还有串行io口,甚至还有ad转化器功能。8位单片机由于功能强,被广 泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领 域。 3 . 16位单片机 1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷 面市。 这一阶段的代表产品有1983年intel公司推出的mcs-96系列,1987年intel 推出了80c96, 美国国家半导体公司推出的hpc16040,nec公司推出的783xx 系列等。16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。 4 . 32位单片机 随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理, 复杂实时控制,网络服务器等领域的应用与发展,20世纪80年代末推出了32位单 片机,如motorlora公司的mc683xx系列,intel的80960系列,以及近年来流 行的arm系列单片机。32位单片机是单片机的发展趋势,随着技术的发展及开发 成本和产品价格的下降,将会与8位单片机并驾齐驱。 5 . 64位单片机 近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信, 算 法密集的实时控制场合已有应用,如英国inmos公司的transputer t800是高性能 的64位单片机。 4 2.3单片机的特点 1 .单片机的存储器rom和ram时严格区分的。rom称为程序存储器, 只存放程序,固定常数,及数据表格。ram则为数据存储器,用作工作区及存放用 户数据。 2 .采用面向控制的指令系统。为满足控制需要,单片机有更强的逻辑控制能 力,特别是单片机具有很强的位处理能力。 3 .单片机的i/o口通常时多功能的。 由于单片机芯片上引脚数目有限, 为了解 决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法, 引脚处于何种功 能,可由指令来设置或由机器状态来区分。 4 .单片机的外部扩展能力很强。在内部的各种功能部件不能满足应用的需求 时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了 很大的方便。 2.489c51 单片机介绍 vcc:电源。 gnd:接地。 p0口:p0口为一个8位漏级开路双向i/o口, 每脚可吸收8ttl门电流。 当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程 序数据存储 器, 它可以被定义为数据/地址的第八位。 在fiash编程时,p0口作为原码输入口, 当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能 接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作 输入,p1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编 程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收, 输出4个 ttl 门电流,当p2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为 输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上 拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时, p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地 址数据存储器进行读写时,p2口输出其特殊功能寄存器 的内容。p2口在flash 编程和校验时接收高八位地址信号和控制信号。 5 xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1 15 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u4 at89c51 图 2.189c51 单片机 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个 ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输 入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些特殊功能口,如下表所示: 口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断0) p3.3 /int1(外部中断1) p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电 平时间。 ale/prog: 当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的 地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不 6 变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输 出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过 一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时,ale 只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。 如果微处理器在外部执行状态ale禁止,置位无效。 psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号 将不出现。 ea/vpp: 当/ea保持低电平时, 则在此期间外部程序存储 (0000h-ffffh), 不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当 /ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于 施加12v编程电源(vpp)。 3控制系统的硬件设计 3.1单片机型号的选择 通过对多种单片机性能的分析, 最终认为89c51是最理想的电子时钟开发芯片。 89c51是一种带4k字节闪烁可编程可擦除只读存储器的低电压,高性能cmos8 位微处理器,器件采用atmel高密度非易失存储器制造技术制造,与工业标准的 mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在 单个芯片中,atmel的89c51是一种高效微控制器,而且它与mcs-51兼容, 且具有4k字节可编程闪烁存储器和1000写/擦循环, 数据保留时间为10年等特点, 是最好的选择。 3.2数码管显示工作原理 数码管是一种把多个led显示段集成在一起的显示设备。有两种类型,一种是 共阳型,一种是共阴型。共阳型就是把多个led显示段的阳极接在一起,又称为公 共端。共阴型就是把多个led显示段的阴极接在一起,即为公共商。阳极即为二极 管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为 8段,即8个led显示段,这是为工程应用方便如设计的,分别为a、b、c、d、 e、f、g、dp,其中dp是小数点位段。而多位数码管,除某一位的公共端会连接 在一起,不同位的数码管的相同端也会连接在一起。即,所有的a段都会连在一起, 7 其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态 显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的 原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的 阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有 效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速 度时,显示就会清晰显示出来。 图 3.1共阴数码管 3.3键盘电路设计 该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗, 该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。当按键按下又松开, 可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按 键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时 的调节,同样每按一次小时加一。达到时间调节的目的。 图 3.2多功能控制键 8 3.43.43.43.4整个电路原理图整个电路原理图整个电路原理图整个电路原理图 图 3.3系统电路原理图 4控制系统的软件设计 4.1程序设计 本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、 延时程序四大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分 模块作介绍。 定时计数中断程序: movtmod,#00h;写控制字 movth0,#0f0h;写定时常数 movtlo,#0ch setbtr0;启动t0 9 setbeto;允许t0中断 setbea;开放cpu中断 ajmp$ 时间调整程序: setmm:clret0;关定时器t0中断 clrtr0;关闭定时器t0 lcalldl1s;调用1秒延时程序 jbp3.7,closedis;键按下时间小于1秒,关闭显 示(省电) movr2,#06h;进入调时状态,赋闪烁定时初值 setbet1;允许t1中断 setbtr1;开启定时器t1 set2:jnbp3.7,set1;p3.7口为0(键未释放),等待 setb00h;键释放,分调整闪烁标志置1 set4:jbp3.7,set3;等待键按下 lcalldl05s;有键按下,延时0.5秒 jnbp3.7,sethh;按下时间大于0.5秒转调小时状态 movr0,#77h;按下时间小于0.5秒加1分钟操作 lcalladd1;调用加1子程序 mova,r3;取调整单元数据 clrc;清进位标志 cjnea,#60h,hhh;调整单元数据与60比较 hhh: jcset4;调整单元数据小于60转set4循环 lcallclr0;调整单元数据大于或等于60时清0 clrc;清进位标志 ajmpset4;跳转到set4循环 closedis:setbet0;省电(led不显示)状态。开t0 中断 setbtr0;开启t0定时器(开时钟) close:jbp3.7,close;无按键按下,等待。 10 lcalldisplay;有键按下,调显示子程序延时削抖 jbp3.7,close;是干扰返回close等待 waith:jnbp3.7,waith;等待键释放 ljmpstart1;返回主程序(led数据显示亮) sethh:clr00h;分闪烁标志清除(进入调小时状 态) sethh1:jnbp3.7,set5;等待键释放 setb01h;小时调整标志置1 set6:jbp3.7,set7;等待按键按下 lcalldl05s;有键按下延时0.5秒 jnbp3.7,setout;按下时间大于0.5秒退出时间调整 movr0,#79h;按下时间小于0.5秒加1小时操作 lcalladd1;调加1子程序 mova,r3; clrc; cjnea,#24h,houu;计时单元数据与24比较 houu:jcset6小于24转set6循环 lcallclr0;大于或等于24时清0操作 ajmpset6;跳转到set6循环 setout: jnbp3.7,setout1;调时退出程序。等待键 释放 lcalldisplay;延时削抖 jnbp3.7,setout;是抖动,返回setout再等待 clr01h;清调小时标志 clr00h;清调分标志 clr02h;清闪烁标志 clrtr1;关闭定时器t1 clret1;关定时器t1中断 setbtr0;开启定时器t0 setbet0;开定时器t0中断(计时开始) 11 ljmpstart1;跳回主程序 set1:lcalldisplay;键释放等待时调用显示程序(调 分) ajmpset2;防止键按下时无时钟显示 set3:lcalldisplay;等待调分按键时时钟显示用 ajmpset4 set5:lcalldisplay;键释放等待时调用显示程序(调小 时) ajmpsethh1;防止键按下时无时钟显示 set7:lcalldisplay;等待调小时按键时时钟显示用 ajmpset6 setout1:lcalldisplay;退出时钟调整时键释放等待 ajmpsetout;防止键按下时无时钟显示 延时程序: 1ms延时程序,led显示程序用 dl1ms: movr6,#14h dl1:movr7,#19h dl2:djnzr7,dl2 djnzr6,dl1 ret 20ms延时程序,采用调用显示子程序以改善led 的显示闪烁现象 ds20ms: acalldisplay acalldisplay acalldisplay ret 4.2 程序流程图 系统的流程图如图4.1和图4.2所示: 12 图 4.1主程序流程图 13 图 4.2中断处理流程图 14 4.34.34.34.3 仿真结果仿真结果仿真结果仿真结果 图 4.3开始运行程序仿真图 15 图 4.4运行一段时间后仿真图 4.4仿真结果分析 功能太过单调, 只能实现时分秒的显示, 设计比较简单。 电路图的设计过于单调, 用的器件太少,实现调节时间的按钮太少,不能很好的实现时间的调节。在测试过程 中,六位数码显示管只显示五位数字,有一位数字不亮,通过多次的修改程序并在 proteus软件环境中进行仿真,最终解决了这个问题,同时也透露出本人在单片 机电路设计和程序设计方面的不足。 不过最后的仿真效果非常好, 实现了预期的效果, 能过通过多功能控制键调节时间和是否进入省电模式,是一个比较令人满意的设计。 5结束语 在李凯南老师耐心的指导下, 我顺利完成了这次单片机课程设计课题中的电子时 钟设计,通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书 本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分 16 理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。 损 耗了过多的内存资源。 本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转 化,怎样将我所学到的知识运用到我以后的工作中去。 在大学的课堂的学习只是在给 我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设 计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以 后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中 增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。 最后,感谢李凯南老师对我的细心的指导, 正是由于李老师的细心的辅导和他提 供给我们的参考资料,使得我的课程设计能够顺利的完成,同时在课程设计过程中, 我们巩固和学习了我们的单片机知识。 相信这对我以后的课程设计和毕业设计将会有 很大的帮助! 6附录 org0000h;程序执行开始地址 ljmpstart;跳到标号start执行 org0003h;外中断0中断程序入口 reti;外中断0中断返回 org000bh;定时器t0中断程序入口 ljmpintt0;跳至intto执行 org0013h;外中断1中断程序入口 reti;外中断1中断返回 org001bh;定时器 t1 中断程序入口 ljmpintt1;跳至intt1执行 org0023h;串行中断程序入口地址 reti;串行中断程序返回 主程序开始; 17 start: movr0,#70h;清70h-7ah共11个内存单元 movr7,#0bh; cleardisp: movr0,#00h; incr0; djnzr7,cleardisp; mov20h,#00h;清20h(标志用) mov7ah,#0ah;放入“熄灭符“数据 movtmod,#11h;设t0、t1为16位定时器 movtl0,#0b0h;50ms定时初值(t0计时用) movth0,#3ch;50ms定时初值 movtl1,#0b0h;50ms定时初值(t1闪烁定时用) movth1,#3ch;50ms定时初值 setbea;总中断开放 setbet0;允许t0中断 setbtr0;开启t0定时器 movr4,#14h;1秒定时用初值(50ms20) start1: lcall display;调用显示子程序 jnbp3.7,setmm1;p3.7口为0时转时间调整程序 sjmpstart1;p3.7口为1时跳回start1 setmm1:ljmp setmm;转到时间调整程序setmm ;1秒计时程序; intt0: pushacc;累加器入栈保护 pushpsw;状态字入栈保护 clret0;关t0中断允许 clrtr0;关闭定时器t0 mova,#0b7h;中断响应时间同步修正 adda,tl0;低8位初值修正 movtl0,a;重装初值(低8位修正值) mova,#3ch;高8位初值修正 addca,th0; movth0,a;重装初值(高8位修正值) 18 setbtr0;开启定时器t0 djnzr4, outt0;20次中断未到中断退出 addss:movr4,#14h;20次中断到(1秒)重赋初值 movr0,#71h;指向秒计时单元(71h-72h) acall add1;调用加1程序(加1秒操作) mova,r3;秒数据放入a(r3为2位十进制数组合) clrc;清进位标志 cjnea,#60h,addmm; addmm:jcoutt0;小于60秒时中断退出 acall clr0;大于或等于60秒时对秒计时单元清0 movr0,#77h;指向分计时单元(76h-77h) acall add1;分计时单元加1分钟 mova,r3;分数据放入a clrc;清进位标志 cjnea,#60h,addhh; addhh: jcoutt0;小于60分时中断退出 acall clr0;大于或等于60分时分计时单元清0 movr0,#79h;指向小时计时单元(78h-79h) acall add1;小时计时单元加1小时 mova,r3;时数据放入a clrc;清进位标志 cjnea,#24h,hour; hour: jcoutt0;小于24小时中断退出 acall clr0;大于或等于24小时小时计时单元清0 outt0: mov72h,76h;中断退出时将分、时计时单元数据移 mov73h,77h;入对应显示单元 mov74h,78h; mov75h,79h; poppsw;恢复状态字(出栈) popacc;恢复累加器 19 setbet0;开放t0中断 reti;中断返回 ;闪动调时 程 序; ;t1中断服务程序,用作时间调整时调整单元闪烁指示 intt1:pushacc;中断现场保护 pushpsw; movtl1,#0b0h;装定时器t1定时初值 movth1,#3ch; djnzr2,intt1out;0.3秒未到退出中断(50ms中断6次) movr2,#06h;重装0.3秒定时用初值 cpl02h;0.3秒定时到对闪烁标志取反 jb02h,flash1;02h位为1时显示单元“熄灭“ mov72h,76h;02h位为0时正常显示 mov73h,77h; mov74h,78h; mov75h,79h; intt1out:poppsw;恢复现场 popacc; reti;中断退出 flash1:jb01h,flash2;01h位为1时,转小时熄灭控制 mov72h,7ah;01h 位为0时,“熄灭符“数据放入分 mov73h,7ah;显示单元(72h-73h),将不显示分数据 mov74h,78h; mov75h,79h; ajmpintt1out;转中断退出 flash2:mov72h,76h;01h位为1时,“熄灭符“数据放 入小时 mov73h,77h;显示单元(74h-75h),小时数据将不显示 mov74h,7ah; mov75h,7ah; ajmpintt1out;转中断退出 20 ;加1子 程 序; add1: mova,r0;取当前计时单元数据到a decr0;指向前一地址 swapa;a中数据高四位与低四位交换 orla,r0;前一地址中数据放入a中低四位 adda,#01h;a加1操作 daa;十进制调整 movr3,a;移入r3寄存器 anla,#0fh;高四位变0 movr0,a;放回前一地址单元 mova,r3;取回r3中暂存数据 incr0;指向当前地址单元 swapa;a中数据高四位与低四位交换 anla,#0fh;高四位变0 movr0,a;数据放入当削地址单元中 ret;子程序返回 ;清零程序; ;对计时单元复零用 clr0: clra;清累加器 movr0,a;清当前地址单元 decr0;指向前一地址 movr0,a;前一地址单元清 0 ret;子程序返回 ;时钟调整程序; ;当调时按键按下时进入此程序 setmm:clret0;关定时器t0中断 clrtr0;关闭定时器t0 lcalldl1s;调用1秒延时程序 21 jbp3.7,closedis;键按下时间小于1秒,关闭显示(省电) movr2,#06h;进入调时状态,赋闪烁定时初值 setbet1;允许t1中断 setbtr1;开启定时器t1 set2:jnbp3.7,set1;p3.7口为0(键未释放),等待 setb00h;键释放,分调整闪烁标志置1 set4:jbp3.7,set3;等待键按下 lcalldl05s;有键按下,延时0.5秒 jnbp3.7,sethh;按下时间大于0.5秒转调小时状态 movr0,#77h;按下时间小于0.5秒加1分钟操作 lcalladd1;调用加1子程序 mova,r3;取调整单元数据 clrc;清进位标志 cjnea,#60h,hhh;调整单元数据与60比较 hhh: jcset4;调整单元数据小于60转set4循环 lcallclr0;调整单元数据大于或等于60时清0 clrc;清进位标志 ajmpset4;跳转到set4循环 closedis:setbet0;省电(led不显示)状态。开t0中断 setbtr0;开启t0定时器(开时钟) close:jbp3.7,close;无按键按下,等待。 lcalldisplay;有键按下,调显示子程序延时削抖 jbp3.7,close;是干扰返回close等待 waith:jnbp3.7,waith;等待键释放 ljmpstart1;返回主程序(led数据显示亮) sethh:clr00h;分闪烁标志清除(进入调小时状态) sethh1:jnbp3.7,set5;等待键释放 setb01h;小时调整标志置1 set6:jbp3.7,set7;等待按键按下 lcalldl05s;有键按下延时0.5秒 jnbp3.7,setout;按下时间大于0.5秒退出时间调整 22 movr0,#79h;按下时间小于0.5秒加1小时操作 lcalladd1;调加1子程序 mova,r3; clrc; cjnea,#24h,houu;计时单元数据与24比较 houu:jcset6;小于24转set6循环 lcallclr0;大于或等于24时清0操作 ajmpset6;跳转到set6循环 setout: jnbp3.7,setout1;调时退出程序。等待键释放 lcalldisplay;延时削抖 jnbp3.7,setout;是抖动,返回setout 再等待 clr01h;清调小时标志 clr00h;清调分标志 clr02h;清

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论