设计单灯点亮左右循环跑马灯,延时0.5秒,使用arm汇编 跑马灯语言

单片机汇编语言设计软件延时程序
查看: 545|
摘要: 在单片机控制系统中,常用到软件延时程序,其原理是利用CPU执行指令消耗时间来实现的。本文以单片机I/O口控制LED灯闪烁为例,介绍汇编语言设计软件延时程序的方法,同时讲解延时时间的估算方法。
Science & Technology Vision
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,#数据传送指令,t=1T=1us
DJNZ Rn,减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*n0 us (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=
DJNZ R1,DEL1 ;外循环减1 条件转移执行一次t4=
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 *n1 us (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=
DJNZ R1,DEL1 ;外循环减1 条件转移执行一次t5=2T=
DJNZ R2,DEL2 ;外循环减1 条件转移执行一次t6=2T=
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~
)us,最高可达33s。估算公式如(6)所示。
t≈2*n0 *n1*n2 us (6)
由估算公式(2),(4),(6)可知,延时时间t 最大取决于循环的次
数,改变循环次数即可改变延时时长。
3 软件延时程序的应用
如果想获得延时时间t,该如何设置延时程序的参数。先根据时间
t 的选择采用短暂延时,中等延时还是长延时程序,决定程序的循环结
构。以1s 延时时间为例介绍估算延时设计方法。根据时间t=1s 可知程
序应采用长延时程序,即三重循环结构。
1)计算循环总次数n
n=延时时间/指令周期=t/2T=1s/2us=500000
2)分别求出内中外循环次数n0,n1,n2
根据循环总次数设置n0,n1,n2 的值, 取值时要满足公式n=
n0*n1*n2,取整十的倍数,内循环次数尽可能取大的数值。这里n0=
250,n1=200,n2=10。
3)移植延时程序并设置循环参数
ACALL DEL ;子程序调用指令,t0=2T=2us
DEL: MOV R2,#10 ; 设置外循环循环次数n2,t1=1T=
DEL2: MOV R1,#200 ; 设置中循环循环次数n1,t2=1T=
DEL1: MOV R0,#250 ;设置内循环循环次数n0,t3=1T=1us
DEL0: DJNZ R0,DEL0 ;内循环减1 条件转移执行一次t4=
DJNZ R1,DEL1 ;外循环减1 条件转移执行一次t5=
2T=2us (下转第32 页)
单片机汇编语言设计软件延时程序
(桂林理工大学高等职业技术学院,广西南宁530001)
【摘要】在单片机控制系统中,常用到软件延时程序,其原理是利用CPU 执行指令消耗时间来实现的。本文以单片机I/O 口控制LED 灯
闪烁为例,介绍汇编语言设计软件延时程序的方法,同时讲解延时时间的估算方法。
【关键词】单片机;汇编语言;软件延时程序
科技·探索·争鸣科技视界
Science & Technology Vision
科技视界 Science & Technology Vision
4)通过参与志愿服务,能够使大学生丰富自己的生活体验,在参
与实践活动中学会尊重劳动、尊重创造,学会服务社会、服务人民,学
会理解他人、关心他人;同时通过与社会弱势群体的广泛接触与尽力
帮扶,增进同社会不同阶层的了解与沟通,在奉献中传递爱心、传播文
明,在服务中自我完善、自我提高,共同促进社会和谐与进步。
总之,大学生参加志愿服务是高校加强和改进大学生思想政治教
育工作的有效途径, 广大青年学生通过志愿服务实践的广阔舞台,服
务社会,提升能力,增长见识,开阔眼界,提升境界,不仅有助于自身思
想、道德、文化素质的提高,有助于帮助自身树立正确的世界观、人生
观、价值观,而且也有助于大学生包括社会实践能力在内的综合能力
的提高,真正实现由应试教育向素质教育的转变,实现学生德智体美
劳全面发展的培养目标。
2 高校共青团创新志愿服务做好育人工作的路径
胡锦涛总书记在纪念清华大学建校100 周年大会重要讲话中深
情地强调,“青年是民族的希望、国家的未来,青年学生是国家的宝贵
人才资源。党和人民对包括广大青年学生在内的全国青年寄予厚望。”
在致全国青联十一届全委会和全国学联二十五大的贺信中又用“以坚
定远大的理想励志前行,以孜孜不倦的精神求索新知,以高尚美好的
情操培育品德,以锐意创新的激情投身实践,以艰苦扎实的奋斗成就
人生”这“五以”寄语青年。高校共青团各级组织要站在党对共青团和
青年工作要求的全局高度,面对新形势新任务,以崇高的使命感和强
烈的责任感努力探索、创新大学生志愿服务活动,扎实而富有成效地
做好育人工作。
2.1 弘扬志愿精神,培育大学校园志愿文化
党的十七大报告提出,要进一步完善志愿服务体系建设。2008 年
9 月,中央文明委对深入开展志愿服务活动作了总体部署,党中央把
共青团组织倡导实施的青年志愿者行动上升为党加强精神文明建设
的一项重要工作,标志着我国志愿服务工作呈现出新的格局,为青年
志愿者事业发展提供了新的机遇。高校共青团要在学校党委统一领导
下,围绕党政工作大局,把大力弘扬“奉献、友爱、互助、进步”的志愿精
神作为大学精神文明建设和校园文化建设的重要内容, 精心谋划,狠
抓落实,充分利用广播、电视、报纸、网站等媒体资源,用时尚、方便、快
捷的元素做好宣传,普及志愿服务理念,培育志愿服务文化,用精神时
尚吸引和凝聚青年大学生,使志愿服务成为推动精神文明建设的有效
载体,成为彰显中国特色社会主义的核心价值,为青年大学生积极踊
跃投身志愿服务事业营造良好的氛围。
2.2 充实教育计划,完善人才培养方案
争取学校党政的支持, 将大学生志愿服务纳入学校教育教学体
系,把弘扬志愿服务精神作为大学生思想政治教育的重要内容,通过
开设志愿精神理论课,把课堂教学与学校教育以及社会实践有机地结
合起来,把参与志愿服务作为学生成绩评定和素质拓展学分的考核项
目。引导大学生将志愿服务作为立志修身、成长成才规划的重要一课,
通过学习理论知识和参与志愿服务实践,弘扬志愿精神,使志愿精神
内化为大学生的一种品质,再通过开展志愿服务展示出来,提升青年
学生思想品德素质和知识能力品质的水平。
2.3 创新体制机制,加强自身建设
高校共青团要把中央文明委的统一部署和上级共青团组织要求
的精神,紧密结合学校实际创造性地开展工作。探索完善适合本校特
点、彰显本校特色的志愿服务工作体制机制。重视自身建设,加强青年
志愿者组织建设,夯实青年志愿者工作的发展基础,规范对志愿组织
和志愿者的管理,不断吸收接纳新的志愿者成员,发展壮大志愿者队
伍。同时,加强志愿者的培训,强化其服务意识,提高志愿者的服务技
能和服务水平,不断完善考核机制,并将考核结果存入志愿者档案,充
分发挥青年志愿者“自我管理、自我教育、自我服务”的功能。要特别重
视大学生在参与志愿服务工作中表达出来的内心精神追求,进一步激
发、调动大学生的责任感、奉献精神和内在的积极性,防止出现志愿服
务“行政化”、志愿者“被志愿”的现象。
2.4 与时俱进,不断拓展志愿服务的新途径
坚持围绕学校中心工作和社会发展进步大局的需要找准大学生
志愿服务工作的切入点,思考、谋划和加强大学生志愿服务工作,不断
增强大学生志愿服务工作的实效。要与时俱进,不断拓展实践空间,不
断创新工作方法。在志愿服务活动的组织开展中,既可以开展一些日
常性的活动,如:义务劳动、美化绿化校园、校园安全志愿岗等活动;也
可以根据时政开展具有应对性的活动,如:大学生“一对一”帮扶、关爱
农民工子女以及服务于学校的一些大型活动等;同时,还可以进一步
整合资源,建立一些长效性的品牌项目,如:大学生社会实践基地、大
学生暑期社会实践“三下乡”以及大学生“四进社区”活动等等,充分发
挥志愿服务的各种有益的积极作用。
2.5 加强总结表彰,不断推进志愿服务的新跨越
志愿服务本质上是一种精神现象,是不以物质报酬为目的,基于
良知和责任,利用自己的时间和技能等资源,自愿为社会和他人提供
服务和帮助的行为。要将大学生志愿服务的实践与学校开展形式多样
的创先争优活动有机结合起来,加强总结,发现典型,表彰先进,树立
榜样,营造积极参与志愿服务、争当志愿服务先进的良好风尚。通过挖
掘和宣传志愿服务的优秀典型,弘扬志愿精神,不断把大学生志愿服
务工作推向新水平。
“日月无穷已,江山待后人”。大学生志愿服务是大学生增长知识,
培养能力,提升素质,成长成才和实现人生价值的重要平台。与时俱
进,改革创新,富有成效地做好大学生志愿服务事业是高校共青团育
人工作的一项极其重要的内容,是推进高校共青团工作的一项崭新的
时代课题,可以相信,它也一定是高校共青团的一项大有希望、大有可
为的事业。
【参考文献】
[1]共青团中央组织部.基层团干部工作手册[M].北京:中国青年出版社,2010.
[2]共青团江苏省委员会.关于构建江苏省高校共青团实践育人工作体系的意
[3]中央精神文明建设指导委员会.关于深入开展志愿服务活动的意见[N].2009-
[4]王伟伟.高校青年志愿者活动在思想道德教育中的价值[J].淄博师专学报,
2009(3).
[5]王耀宗.探索高校共青团育人工作新途径[J].家教世界,2012(12).
[6]陈成文,高小枚.从志愿精神的功能看北京奥运青年志愿服务[J].陕西青年管
理干部学院学报.2006(3)
[7]王兴国,等.大学生志愿服务的社会形象及提升策略[J].思想理论教育,2013
[8]李培起,皮湘村.构建和谐社会语境下的志愿精神的意义解读[J].广西民族大
学学报,2009(3).
[责任编辑:王迎迎]
(上接第 43 页)DJNZ R2,DEL2 ;外循环减 1 条件转移执行一 S
次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=
从精算结果可以看出,软件延时程序要想达到精确的延时时间比
较麻烦,因此在精确度要求不高的应用当中使用这种延时方法,如延
时时间的精准度要求较高时可利用定时计数器来实现。
【参考文献】
[1]张剑锋,陈锐,陈慕君,曾凡娇.单片机软件精确延时计算和延时程序设计方
法[J].黑龙江科技信息,2009(26):85.
[2]张江印.51 系列单片机软件延时计算方法[J].电脑编程技巧与维护,2011(8):
[3]韩薇薇.单片机精确软件延时设计方法研究[J].硅谷,2011(5):81-82.
[4]李全利.单片机原理及应用技术[M].北京:高等教育出版社,2009.
[5]李法春.C51 单片机应用设计与技能训练[M].北京:电子工业出版社,2011.
[责任编辑:王迎迎]
项目与课题
32】优领域
Copyright &;调用中断子程序完成延时的跑马灯;;;跑马灯在12M主频的条件下亮0.5秒,灭0.5;AJMPSTOP;STOP:LCALLDIAO1;CPLP0.0;AJMPTZ0;TZ0:LCALLDIAO1;CPLP0.1;AJMPTZ1;TZ1:LCALLDIAO1;CPLP0.2;AJMPTZ2;TZ2:LCALLDIAO1;CPLP0.3;AJMPTZ3;TZ3
;调用中断子程序完成延时的跑马灯;
;跑马灯在12M主频的条件下亮0.5秒,灭0.5秒。
LCALL DIAO1
LCALL DIAO1
LCALL DIAO1
LCALL DIAO1
LCALL DIAO1
LCALL DIAO1
LCALL DIAO1
LCALL DIAO1
DIAO1: MOV TMOD,#10H设置T1
MOV TH1,#0FH设置计数初始值(高位)
MOV TL1,#06H设置计数初始值 (低位)
MOV IE,#00H禁止中断
SETB TR1启动定时
JBC TF1,INIT计数溢出转移
AJMP GG绝对短转移
RET中断返回
三亿文库包含各类专业文献、各类资格考试、高等教育、行业资料、应用写作文书、生活休闲娱乐、专业论文、幼儿教育、小学教育、文学作品欣赏、51汇编语言调用中断子程序完成延时的跑马灯08等内容。 
 走马灯实验论文--《嵌入式系统技术》 1、实验目的 1、学会DP-51PRO实验仪监控...语言程序 中使用ex tern 关键字声明外部函数(声明要调用的汇编子程序), 即可调...  能根据控制要求编制延时程序 掌握子程序的调用方法 能设计并制作跑马灯控制系统 ...51 系列单片机外部中断的工作 原理 熟悉 MCS-51 系列单片机外部中断相关的 5 ...  关键词 51 单片机 汇编 延时算法 指令周期, 指令周期,机器周期与时钟周期 指令...⑦ 详解:DEL 这个子程序共有五条指令,现在分别就 每一条指令 被执行的次数和...  走马灯实验论文--《嵌入式系统技术》 1、实验目的 1、学会 dp-51pro 实验仪...语言程序中使用 ex tern 关键字声明外部函数(声明要调用的汇编子程序),即可调 ...  51单片机汇编语言课设_电子/电路_工程科技_专业资料...外部中断 0 的引脚 INT0 接一个按钮开关,P3.0 ...实现跑马灯功能 L6: LCALL DELAY ;调用延时程序 RL...  用 C 语言或汇编语言编写一个较完 整的实用程序,...六.设计中的难点 定时器中断延时程序设计: 采用 ...主函数执行不 同分支程序时,实际的跑马灯延时时间是...  设置及中断响应子程序的结构,定时 器初值的计算,...MCS-51 汇编语言与程序 通过本实验的学习,使学生熟悉...子程序 2:16 个 LED 做成一个亮点的跑马灯;注意...  (2)由于跑马灯的状态函数和延时函数是和主任务耦合到一起的,因此主任务的执行 ...AT89S51 单片机里有两个独立的计时器 T0 和 T1,为了得到精确的定时中断,在...  细说明执行各种指令所需的机 谈谈汇编延时子程序器...RET 前再添加一些指令让它把 1567μs 的延时完成...D1 NOP NOP RET 2)一些通过计算 51 汇编指令得出...单片机八路LED跑马灯实验
我的图书馆
单片机八路LED跑马灯实验
单片机八路LED跑马灯实验&首先让我们来完成必须的硬件部分,我们需要焊接上8个发光二极管和8个限流电阻,可以参考下面的原理图和实物图像进行操作,需要注意的是LED是有极性的,引脚长的为正极,引脚短的为负极,负极和电阻一侧连接,如果接错那么相应的那一路可能在实验中不会点亮了,在焊接前要看仔细哦~~~&&&&&&&&下面我们来完成软件编程设计,这里我们没有采用高深的编程技巧,而是用了最笨、最直接的向端口送数的办法来实现,一来程序比较简单,没必要玩深沉,而且初学者看起来直观易懂。ORG 0000H&START:MOV P1,#B;最下面的LED点亮&LCALL DELAY;延时1秒&MOV P1,#B;最下面第二个的LED点亮&LCALL DELAY;延时1秒&MOV P1,#B;最下面第三个的LED点亮 (以下省略)LCALL DELAY&MOV P1,#B&LCALL DELAY&MOV P1,#B&LCALL DELAY&MOV P1,#B&LCALL DELAY&MOV P1,#B&LCALL DELAY&MOV P1,#B&LCALL DELAY&MOV P1,#B;完成第一次循环点亮,延时约0.25秒&AJMP START;反复循环;延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2&DJNZ R2 ,L1DJNZ R4 ,L3&RET&END这是上面程序汇编以后获得的编程器烧写文件:如何精确计算延时子程序的执行时间?&&&&汇编语言的一大优势就是能够精确控制程序的执行时间,这在编写一些对时序要求严格的外围器件驱动时由为重要!
馆藏&117046
TA的推荐TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&[转]&

我要回帖

更多关于 单片机跑马灯汇编程序 的文章

 

随机推荐