单片机c语言单片机计时程序,如果判断到某个条件成立,就开始计时,但这个期间继续执行其它

新人 想请问一个小问题if语句,茬执行延时的过程中如果条件发生改变,是否会立即终止延时还是会执行完成if内所有语句,之后再次做判断呢

//这是一个单片机的高低电平的东东,代码是我随意写的,为了表达意思,因为只有电脑,没有单片机,也没法做验证,突然想做些东西,需要这样一个条件,希望大神给予解答,謝谢万分

如果if不能完成上述delay的执行,那for可以么?

搜索更多相关主题的帖子:

本次设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统系统应具有赛程定时设置,赛程时间暂停及时刷新甲、乙双方的成绩以及赛后成绩暂存等功能。
内容包括:显示、键盘、时钟等内容

(1)分为“A队”和“B队”的“3分”“2分”,“1分”各六个按键输入部分以及两队比分嘚LED显示部分。在每次增加分数的同时“24秒”计时恢复为初始值,“12分钟”计时暂停等待比赛的继续进行

(1)比赛开始/继续:當“比赛开始/继续”键按下后,“24s”和“12分钟”计时器开始倒计时;
(2)手动24s复位:当“24s复位” 键按下后“24s”倒计时恢复初始值,“12分鍾”倒计时暂停等待比赛的继续;
(3)比赛暂停:“比赛暂停”键按下后,“24s”倒计时和“12分钟”倒计时均暂停等待比赛的继续进行;
(4)自动增加比赛节数:当“12分钟”倒计时完成后,判断当前节数是否为最后一节若不是,则节数自动增加并“12分钟”和“24s”均恢複默认值,等待下一节比赛的进行

采用单片机AT89C51作为本设计的核心元件。利用7段共阴LED作为显示器件在此设计中共接入了6个7段共陰LED显示器,其中2个4位LED显示器用于记录AB队的分数每队1个4位LED显示器显示范围可达到0~999分,足够满足赛程需要;2个两位LED显示器用来记录赛程时間其中1个用于显示分钟,1个用于显示秒钟;使用1个2位LED显示器用于显示“24s”倒计时赛程计时均采用倒计时方式。即比赛前将时间设置好即12分钟,比赛开始时启动计时直至计时到零为止。本设计中设立了10个按键其中6个用于设置两队的比分,1个用于比赛开始/比赛继续1個用于暂停,1个用于手动增加比赛节数一个用于恢复“24s”倒计时等功能。

系统主要包括单片机、LED显示电路、按键控制电路、时鍾电路及复位电路等组成

(1)按键模块设计 :
按键接至P1口和P3口按键按下时输入是低电平。键的设置如下:“A1”,“A2”“A3”键是A队加1分、加2分,加3分键盘B队同理。“比赛开始/比赛继续”是启动键“比赛暂停”是暂停键。此外还有两个按键, “24s”复位鍵“增加比赛节数”键。
(2) LED显示模块设计 :
显示分为计时和计分显示两个部分均采用共阴极LED数码管动态扫描显示,由2个四位一体和4个兩位一体的共阴极数码管构成数码管的7个段控端输出经过74HC573驱动器进行电流放大驱动接至P0口。采用动态扫描方式在足够短的周期内,使各位数码管逐个轮流受控显示

软件设计采用c语言单片机模块设计方法,程序由主程序、T0中断程序、显示程序、外部中断0程序、按键程序、初始函数、计时函数、延时函数组成

2.5 方案论证及可行性分析

本设计以单片机AT89C51为核心的控制电路实现了計时计分、计时的功能,设计中使用大尺寸数码管的制造构思巧妙和软件设计,降低了整个系统的成本实现了多用途的目的。通过仿嫃和实物实验验证了该系统的正确性和实用性系统电路制造简单,显示清晰成本低廉。

2.6 测试结果与分析

设计采用c语言單片机编程在Keil C51软件编译环境中,经过编译和连接生成十六进制的目标代码文件.hex。在硬件上用Proteus软件绘制出原理图,经过纯电路调试无誤后将生成的目标代码文件加载到Proteus界面的AT89C51中。接着再进行软硬件联合调试反复调试,直至所有显示及按键功能实现直至仿真成功。\

[1] 胡辉. 单片机原理与应用[M].北京:中国水利水电出版社2007.
[2] 戴佳. 51单片机c语言单片机应用程序设计实例精讲[M].北京:电子工业出版社,2006.


或者關注博主公众号回复:篮球计时器即可下载,还有更多资源分享哦~

扫码关注作者个人技术公众号,有关技术问题后台回复即可不定期将囿学习资源分享

在单片机的主程序中我们在写程序的时候,总是写一个while(1)的语句以此达到让程序进入一个无限死循环中,其目的是让程序一直保持在我所需要的运行情况下例如:流沝灯的程序让LED灯一直在交替闪烁,LCD显示不停地在刷新
该循环并不是阻止程序的跑飞(程序的跑飞我会在下一篇博客中学习一番),而是防止main()返回因为在嵌入式中,main函数是不能返回的而虽然我们所编写的单片机程序是用的是c语言单片机,可最终下载到单片机里运行的程序包含两个部分:一是我们编写的程序代码另一部分是编译器自动生成的代码,例如在keil里观察我们所写的c语言单片机程序在转换成汇编语訁后,单片机的代码区没有写程序的部分,例如全1或全0区域程序运行到该区域后就会造成意料不到的结果,在没有while(1)的去情况下运行到朂后一行的时候会自动跳转到main函数的第一行,就造成了main()函数的返回不同的c语言单片机实现的单片机初始化代码会有不同的表现,例如:在cal_main后jmp或者是在call_main后jmp 0,这些将会导致不可预料的结果

我要回帖

更多关于 c语言单片机 的文章

 

随机推荐