Science &Technology Vision 科技视界
延时程序是单片机中一个很重要的部分,通常有两种方法实现:一是,定时器定时实现延时;二是,软件延时程序。本文要介绍的是软件延时程序。这种方法是通过CPU 执行指令消耗时间来实现延时,其内容虽然简单,应用却极其广泛,比如跑马灯,多位数码管的动态显示,键盘扫描等等都需要用到软件延时。本文介绍要介绍单片机里用汇编语言设计软件延时程序及其延时时间的估算方法,这也是循环结构的一个典型程序。
1指令周期、机器周期和时钟周期
软件延时程序是通过CPU 执行指令消耗时间来实现的,首先要了解单片机CPU 在执行一条指令时所需要的时间,即指令周期。指令周期是以机器周期为单位,MCS51单片机通常把指令分为单周期指令、双周期指令和四周期指令三种;而机器周期是指CPU 完成某一个规定操作所需要的时间,它是由12个时钟周期组成;时钟周期又叫振荡周期,是由单片机内部振荡电路产生的,是时钟频率的倒数。以时钟频率12MHz(后面的均以这个频率来计算)为例,计算如下:
1)时钟周期Tosc=1/时钟频率=1/12M=1/12us 2)机器周期T=12个时钟周期=12Tosc=1us 3)指令周期=(1~4)个机器周期=(1~4)T=(1~4)us
软件延时程序常用的指令如下所示,计算其指令周期。MOV Rn,#data ;数据传送指令,t=1T=1us DJNZ Rn,rel ;减1条件转移指令,t=2T=2us NOP ;空操作指令,t=1T=1us RET ;子程序返回指令,t=2T=2us ACALL ;短调用指令,t=2T=2us LCALL ;长调用指令,t=2T=2us
2软件延时程序以及时间计算方法
从指令周期的概念得知,单片机CPU 执行一条指令花(1~4)us,若想得到一定时间t 的延时,则需要执行指令次数n=t/指令周期,我们可采用循环结构来实现。2.1短暂延时程序———单循环设计
在循环入口设置循环次数n0,执行减1条件转移指令n0次来实现短暂延时程序,程序如下所示。
ACALL DEL ;子程序调用指令,t0=2T=2us ……
DEL:MOV Rn,#n0;设置循环次数n0,t1=1T=1us
DEL0:DJNZ Rn,DEL0;减1条件转移执行一次t2=2T=2us
RET ;返回指令,t3=2T=2us
时间精算公式是:t=t0+t1+t2*n0+t3=2n0+5us (1)n0的取值范围在(0~255)内,则延时时间范围是(7~517)us,最高可达500us,单循环结构适用于短暂延时程序。而估算公式如(2)所示。
t≈2*n0us (2)2.2中等延时程序———双重循环设计
当短暂延时程序不能满足延时要求时,可通过重复执行上述短暂延时程序n1次来延长时长。即采用双重循环结构来实现,程序如下所示。
ACALL DEL ;子程序调用指令,t0=2T=2us ……
DEL:MOV R1,#n1;设置外循环循环次数n1,t1=1T=1us DEL1:MOV R0,#n0;设置内循环循环次数n0,t2=1T=1us DEL0:DJNZ R0,DEL0;内循环减1条件转移执行一次t3=2T=2us
DJNZ R1,DEL1
;外循环减1条件转移执行一次t4=
2T=2us
RET ;返回指令,t5=2us
时间精算公式:
t=t0+t1+(t2+t3*n0+t4)*n1+t5=2*n0*n1+3*n1+5us (3)
n0,n1的取值范围在(0~255)内,则延时时间范围是(10~131845)
us,最高可达131ms。估算公式如(4)所示。t≈2*n0*n1us (4)2.3长延时程序———三重循环设计
若延时时间较长的时候,可再重复执行上述中等延时n2次来延长时长。即采用三重循环结构来实现,程序如下所示。
ACALL DEL ;子程序调用指令,t0=2T=2us ……
DEL:MOV R2,#n2;设置外循环循环次数n2,t1=1T=1us DEL2:MOV R1,#n1;设置中循环循环次数n1,t2=1T=1us DEL1:MOV R0,#n0;设置内循环循环次数n0,t3=1T=1us DEL0:DJNZ R0,DEL0;内循环减1条件转移执行一次t4=2T=2us
DJNZ R1,DEL1;外循环减1条件转移执行一次t5=2T=
2us
DJNZ R2,DEL2;外循环减1条件转移执行一次t6=2T=
2us
RET ;返回指令,t7=2us
时间精算公式:t=t0+t1+(t2+(t3+t4*n0+t5)*n1+t6)*n2+t5=2*n0*n1*n2+3*n1*n2+3*n2+5us (5)n0,n1,n2的取值范围在(0~255)内,则延时时间范围是(13~33751813)us,最高可达33s。估算公式如(6)所示。
t≈2*n0*n1*n2us (6)由估算公式(2),(4),(6)可知,延时时间t 最大取决于循环的次数,改变循环次数即可改变延时时长。
3软件延时程序的应用
如果想获得延时时间t,该如何设置延时程序的参数。先根据时间t 的选择采用短暂延时,中等延时还是长延时程序,决定程序的循环结构。以1s 延时时间为例介绍估算延时设计方法。根据时间t=1s 可知程序应采用长延时程序,即三重循环结构。
1)计算循环总次数n
n=延时时间/指令周期=t/2T=1s/2us=5000002)分别求出内中外循环次数n0,n1,n2
根据循环总次数设置n0,n1,n2的值,取值时要满足公式n=n0*n1*n2,取整十的倍数,内循环次数尽可能取大的数值。这里n0=250,n1=200,n2=10。
3)移植延时程序并设置循环参数
10种常用的程序设计语言ACALL DEL ;子程序调用指令,t0=2T=2us ……
DEL:MOV R2,#10;设置外循环循环次数n2,t1=1T=1us
DEL2:MOV R1,#200;设置中循环循环次数n1,t2=1T=1us
DEL1:MOV R0,#250;设置内循环循环次数n0,t3=1T=1us DEL0:DJNZ R0,DEL0;内循环减1条件转移执行一次t4=2T=2us
DJNZ R1,DEL1;外循环减1条件转移执行一次t5=
2T=2us (下转第32页)
单片机汇编语言设计软件延时程序
袁梅
(桂林理工大学高等职业技术学院,广西南宁530001)
【摘要】在单片机控制系统中,常用到软件延时程序,其原理是利用CPU 执行指令消耗时间来实现的。本文以单片机I/O 口控制LED 灯闪烁为例,介绍汇编语言设计软件延时程序的方法,同时讲解延时时间的估算方法。
【关键词】单片机;汇编语言;软件延时程序43
. All Rights Reserved.
Science &Technology Vision
科技视
界4)通过参与志愿服务,能够使大学生丰富自己的生活体验,在参与实践活动中学会尊重劳动、尊重创造,学会服务社会、服务人民,学会理解他人、关心他人;同时通过与社会弱势体的广泛接触与尽力帮扶,增进同社会不同阶层的了解与沟通,在奉献中传递爱心、传播文明,在服务中自我完善、自我提高,共同促进社会和谐与进步。
总之,大学生参加志愿服务是高校加强和改进大学生思想政治教育工作的有效途径,广大青年学生通过志愿服务实践的广阔舞台,服务社会,提升能力,增长见识,开阔眼界,提升境界,不仅有助于自身思想、道德、文化素质的提高,有助于帮助自身树立正确的世界观、人生观、价值观,而且也有助于大学生包括社会实践能力在内的综合能力的提高,真正实现由应试教育向素质教育的转变,实现学生德智体美劳全面发展的培养目标。
2高校共青团创新志愿服务做好育人工作的路径
总书记在纪念清华大学建校100周年大会重要讲话中深情地强调,“青年是民族的希望、国家的未来,青年学生是国家的宝贵人才资源。党和人民对包括广大青年学生在内的全国青年寄予厚望。”在致全国青联十一届全委会和全国学联二十五大的贺信中又用“以坚定远大的理想励志前行,以孜孜不倦的精神求索新知,以高尚美好的情操培育品德,以锐意创新的激情投身实践,以艰苦扎实的奋斗成就人生”这“五以”寄语青年。高校共青团各级组织要站在党对共青团和青年工作要求的全局高度,面对新形势新任务,以崇高的使命感和强烈的责任感努力探索、创新大学生志愿服务活动,扎实而富有成效地做好育人工作。
2.1弘扬志愿精神,培育大学校园志愿文化
党的十七大报告提出,要进一步完善志愿服务体系建设。2008年9月,中央文明委对深入开展志愿服务
活动作了总体部署,党中央把共青团组织倡导实施的青年志愿者行动上升为党加强精神文明建设的一项重要工作,标志着我国志愿服务工作呈现出新的格局,为青年志愿者事业发展提供了新的机遇。高校共青团要在学校党委统一领导下,围绕党政工作大局,把大力弘扬“奉献、友爱、互助、进步”的志愿精神作为大学精神文明建设和校园文化建设的重要内容,精心谋划,狠抓落实,充分利用广播、电视、报纸、网站等媒体资源,用时尚、方便、快捷的元素做好宣传,普及志愿服务理念,培育志愿服务文化,用精神时尚吸引和凝聚青年大学生,使志愿服务成为推动精神文明建设的有效载体,成为彰显中国特社会主义的核心价值,为青年大学生积极踊跃投身志愿服务事业营造良好的氛围。2.2充实教育计划,完善人才培养方案
争取学校党政的支持,将大学生志愿服务纳入学校教育教学体系,把弘扬志愿服务精神作为大学生思想政治教育的重要内容,通过开设志愿精神理论课,把课堂教学与学校教育以及社会实践有机地结合起来,把参与志愿服务作为学生成绩评定和素质拓展学分的考核项目。引导大学生将志愿服务作为立志修身、成长成才规划的重要一课,通过学习理论知识和参与志愿服务实践,弘扬志愿精神,使志愿精神内化为大学生的一种品质,再通过开展志愿服务展示出来,提升青年学生思想品德素质和知识能力品质的水平。2.3创新体制机制,加强自身建设
高校共青团要把中央文明委的统一部署和上级共青团组织要求的精神,紧密结合学校实际创造性地开展工作。探索完善适合本校特点、彰显本校特的志愿服务工作体制机制。重视自身建设,加强青年
志愿者组织建设,夯实青年志愿者工作的发展基础,规范对志愿组织和志愿者的管理,不断吸收接纳新的志愿者成员,发展壮大志愿者队伍。同时,加强志愿者的培训,强化其服务意识,提高志愿者的服务技能和服务水平,不断完善考核机制,并将考核结果存入志愿者档案,充分发挥青年志愿者“自我管理、自我教育、自我服务”的功能。要特别重视大学生在参与志愿服务工作中表达出来的内心精神追求,进一步激发、调动大学生的责任感、奉献精神和内在的积极性,防止出现志愿服务“行政化”、志愿者“被志愿”的现象。
2.4与时俱进,不断拓展志愿服务的新途径
坚持围绕学校中心工作和社会发展进步大局的需要准大学生志愿服务工作的切入点,思考、谋划和加强大学生志愿服务工作,不断增强大学生志愿服务工作的实效。要与时俱进,不断拓展实践空间,不断创新工作方法。在志愿服务活动的组织开展中,既可以开展一些日常性的活动,如:义务劳动、美化绿化校园、校园安全志愿岗等活动;也可以根据时政开展具有应对性的活动,如:大学生“一对一”帮扶、关爱农民工子女以及服务于学校的一些大型活动等;同时,还可以进一步整合资源,建立一些长效性的品牌项目,如:大学生社会实践基地、大学生暑期社会实践“三下乡”以及大学生“四进社区”活动等等,充分发挥志愿服务的各种有益的积极作用。
2.5加强总结表彰,不断推进志愿服务的新跨越
志愿服务本质上是一种精神现象,是不以物质报酬为目的,基于良知和责任,利用自己的时间和技能等资源,自愿为社会和他人提供服务和帮助的行为。要将大学生志愿服务的实践与学校开展形式多样的创先争优活动有机结合起来,加强总结,发现典型,表彰先进,树立榜样,营造积极参与志愿服务、争当志愿服务先进的良好风尚。通过挖掘和宣传志愿服务的优秀典型,弘扬志愿精神,不断把大学生志愿服务工作推向新水平。
“日月无穷已,江山待后人”。大学生志愿服务是大学生增长知识,培养能力,提升素质,成长成才和实现人生价值的重要平台。与时俱进,改革创新,富有成效地做好大学生志愿服务事业是高校共青团育人工作的一项极其重要的内容,是推进高校共青团工作的一项崭新的时代课题,可以相信,它也一定是高校共青团的一项大有希望、大有可为的事业。
[1]共青团中央组织部.基层团干部工作手册[M].北京:中国青年出版社,2010.[2]共青团江苏省委员会.关于构建江苏省高校共青团实践育人工作体系的意见[N].2010-10-15.
[3]中央精神文明建设指导委员会.关于深入开展志愿服务活动的意见[N].2009-12-3.
[4]王伟伟.高校青年志愿者活动在思想道德教育中的价值[J].淄博师专学报,2009(3).
[5]王耀宗.探索高校共青团育人工作新途径[J].家教世界,2012(12).
[6]陈成文,高小枚.从志愿精神的功能看北京奥运青年志愿服务[J].陕西青年管理干部学院学报.2006(3)
[7]王兴国,等.大学生志愿服务的社会形象及提升策略[J].思想理论教育,2013(1).
[8]李培起,皮湘村.构建和谐社会语境下的志愿精神的意义解读[J].广西民族大学学报,2009(3).
[责任编辑:王迎迎
]
(上接第43页)DJNZ R2,DEL2;外循环减1条件转移执行一次t6=2T=2us
RET ;返回指令,t7=2us
根据估算公式(6)计算t ≈2*n0*n1*n2=2*250*200*10=1000000us=1s
根据精算公式(5)计算出t=2*250*200*10+3*200*10+3*10+5us=1006035us
4结束语
从精算结果可以看出,软件延时程序要想达到精确的延时时间比较麻烦,因此在精确度要求不高的应用当中使用这种延时方法,如延
时时间的精准度要求较高时可利用定时计数器来实现。
【】
[1]张剑锋,陈锐,陈慕君,曾凡娇.单片机软件精确延时计算和延时程序设计方法[J].黑龙江科技信息,2009(26):85.
[2]张江印.51系列单片机软件延时计算方法[J].电脑编程技巧与维护,2011(8):82-84.
[3]韩薇薇.单片机精确软件延时设计方法研究[J].硅谷,2011(5):81-82.[4]李全利.单片机原理及应用技术[M].北京:高等教育出版社,2009.
[5]李法春.C51单片机应用设计与技能训练[M].北京:电子工业出版社,2011.
[责任编辑:王迎迎]
32
.
com. All Rights Reserved.