- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机基础知识(三)研讨
1.5 程序设计举例 单片机汇编语言程序设计的基本步骤 1.分析问题,明确被控对象对软件的要求 2.确定算法 3.设计程序流程图 4.分配内存单元及有关端口地址 5.编写汇编语言源程序 6.调试程序 7.固化程序 主要的几种程序设计方法 顺序程序:顺序程序是最简单、最基本的程序结构,其特点是按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。 分支程序:分支程序是通过转移指令对相应条件的判断实现改变程序的执行方向的设计方法。 循环程序:在程序中需要反复的执行的程序段,为了避免在程序中多次的编写,可以通过利用条件转移或无条件转移指令来控制程序的执行。 子程序:在编写程序时,经常有一些的程序会被频繁的使用。通常情况下,我们将这些程序段定义成子程序,使程序变的便于调试和阅读,同时也缩小了程序的长度。 一、顺序程序设计 将30H单元内的两位BCD码拆开并转换成ASCII码,存入31H、32H两个单元中。 1、题意分析 2、程序流程 参考程序如下: ORG 2000H MOV A,30H ;取值 ANL A,#0FH ;取低4位 ADD A,#30H ;转换成ASCII码 MOV 31H,A ;保存结果 MOV A,30H ;取值 SWAP A ;高4位与低4位互换 ANL A,#0FH ;取低4位(原来的高4位) ADD A,#30H ;转换成ASCII码 MOV 32H,A ;保存结果 END 二、分支程序设计 分支程序有三种基本形式:单分支、双分支、多分支。 单分支: 双分支: 多分支: 分支程序的设计要点如下: (1)先建立可供条件转移指令测试的条件。 (2)选用合适的条件转移指令。 (3)在转移的目的地址处设定标号。 双分支程序设计举例 设X存在30H单元中,根据下式 X+2 X0 Y = 100 X=0 ∣X∣ X0 求出Y值,将Y值存入31H单元。 1、题意分析: 根据数据的符号位判别该数的正负,若最高位为0,再判别该数是否为0。 2、程序流程 参考程序如下: ORG 1000H MOV A,30H ;取数 JB ACC.7,NEG;负数,转NEG JZ ZER0 ;为零,转ZER0 ADD A,#02H ;为正数,求X+2 AJMP SAVE ;转到SAVE,保存数据 ZER0: MOV A,# 64H ;数据为零,Y=100 AJMP SAVE ;转到SAVE,保存数据 NEG: DEC A ; CPL A ;求∣X∣ SAVE: MOV 31H,A ;保存数据 SJMP $ ;暂停 END 多分支程序设计举例 根据R0的值转向7个分支程序。 R010,转向SUB0; R020,转向SUB1; | R060,转向SUB5; R0=60,转向SUB6; 1、题意分析: 利用JMP @A+DPTR 指令直接给PC赋值,使程序实现转移。 2、程序流程。 参考程序如下: ORG 2000H MOV DPTR,#TAB;转移指令表首地址 MOV A,R0 ;取数 MOV B,#10 DIV AB ;A/10,商在A中 CLR C RLC A ;A←2A JMP @A+DPTR ;PC ← A+DPTR TAB: AJMP SUB0 ;转移指令表 AJMP SUB1 AJMP SUB2 …… AJMP SUB5 AJMP SUB6 …… 三、循环程序设计 ☆循环程序一般包括如下四个部分: (1)初始化 (2)循环体 (3)循环控制 (4)结束 ☆循环程序按结构形式,有单重循环与多重循环。 ☆在多重循环中,只允许外重循环嵌套内重循环。 ☆不允许循环相互交叉,也不允许从循环程序的外部跳入循环程序的内部 有一数据块从片内RAM的30H单元开始存入,设数据块长度为10个单元。根据下式: X+2 X0 Y= 100 X=0 求出Y值,并将Y值放回原处。 ∣X∣ X0 1、题意分析:设置一个计数器控制循环次数,每处理完一个数据,计数器减1 2、程序流程 参考源程序如下: ORG 2000H MOV R0,#10 MOV R1,#30H START: MOV A,@R1 ;取数 JB ACC.7,NEG;若为负数,转NE
您可能关注的文档
最近下载
- 急诊与灾难医学-第二十二章 人为灾难的医学救援.pptx
- 030904《项目实施进度里程碑确认单》.xlsx VIP
- 治疗篇第六章骨伤科四肢病证推拿讲解.ppt
- 2025年广西机场管理集团有限责任公司人员招聘笔试备考题库及答案解析.docx
- 七年级下册英语课件Unit 3《Keep Fit》(Section A 1a-1d).pptx VIP
- 福特嘉年华说明书.pdf
- 医院医疗设备管理员及使用人员岗位职责.pptx VIP
- 江苏省小学科学实验知识竞赛题库附答案.pdf VIP
- 教科版(2017秋)四年级下册科学期末复习训练题(含答案).docx VIP
- 八年级下数学期中测试题(a卷).pdf VIP
文档评论(0)