资源描述:
《《单片机程序设计》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章单片机程序设计§3-1程序设计简介§3-2顺序程序的设计§3-3分支程序的设计§3-4循环程序的设计§3-5常用子程序介绍§3-6查表程序的设计项目引入1.项目描述将0~9这十个数循环送P1口七段LED上显示。2.硬件电路与工作原理让学生根据任务分析硬件要求,画出具体电路,并在实验开发板上接线3.程序设计(给出控制程序)8051START:ORG0100HMAIN:MOVR0,#00HMOVDPTR,#TABLEDISP:MOVA,R0MOVCA,@A+ADPTRMOVP1,AACALLDELAYINCR0CJNER0,#0AH,DISPAJMPMAI
2、NDELAY:MOVR1,#0FFHLOOP0:MOVR2,#0FFHLOOP1:DJNZR2,LOOP1DJNZR1,LOOP0RETTABLE:DB0C0H,0F9H,DB0A4H,0B0HDB99H,92HDB82H,0F8HDB80H,90HENDLED显示电路控制程序单片机汇编语言程序设计的基本步骤如下:(1)题意分析。熟悉并了解汇编语言指令的基本格式和主要特点,明确被控对象对软件的要求,设计出算法等。(2)画出程序流程图。编写较复杂的程序,画出程序流程图是十分必要的。程序流程图也称为程序框图,是根据控制流程设计的,它可以使程序清晰,结构合理,便于
3、调试。(3)分配内存工作区及有关端口地址。分配内存工作区,要根据程序区、数据区、暂存区、堆栈区等预计所占空间大小,对片内外存储区进行合理分配并确定每个区域的首地址,便于编程使用。§3-1程序设计简介(4)编制汇编源程序。(5)仿真、调试程序。(6)固化程序。程序编写做到:占用存储空间少;运行时间短;程序的编制、调试及排错所需时间短;结构清晰,易读、易于移植。按结构化程序设计思想,任何复杂程序都可由顺序结构、分支结构、循环结构等构成。语句3语句2顺序结构入口语句1出口分支结构入口条件满足否?分支1出口YN分支2循环结构入口处理修改条件条件满足否?Y出口N简单程
4、序也就是顺序程序,它是最简单、最基本的程序结构,其特点是按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。不管多么复杂的程序,总是由若干顺序程序段所组成的。本节通过实例介绍简单程序的设计方法。例3.14字节(双字)加法。将内部RAM30H开始的4个单元中存放的4字节十六进制数和内部RAM40H单元开始的4个单元中存放的4字节十六进制数相加,结果存放到40H开始的单元中。§3-2简单顺序程序的设计(1)题意分析。题目的要求如图3.1所示。图3.1例3.1题意分析示意图ORG0000HLJMPMAINMAIN:ORG0080HMOVA,30HADDA,40
5、HMOV40H,A;最低字节加法并送结果MOVA,31HADDCA,41HMOV41H,A;第二字节加法并送结果(2)汇编语言源程序。按照双字节加法的思路,实现4字节加法的源程序如下:MOVA,32HADDCA,42HMOV42H,A;第三字节加法并送结果MOVA,33HADDCA,43HMOV43H,A;第四字节加法并送结果,进位SJMP$;位在CY中END例3.2、设在外RAM的60H单元存有1个字节代码,要求将其分解成两个4位字段,高4位存入原单元的低4位,其低4位存入61H单元的低4位,且要求这两个单元的高4位均为0,试编制完整程序。分析:####¥
6、¥¥¥0000####0000¥¥¥¥ORG0000HLJMPMAINORG0030HMAIN:MOVR0,#30HMOVR1,#40HMOVR7,#08HLOOP:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR7,LOOPSJMP$解: 核心指令ANLORG1000HMODE:MOVR0,#60HMOVXA,@R0MOVB,AANLA,#0F0HSWAPAMOVX@R0,AMOVA,BANLA,#0FHINCR0MOVX@R0,ASJMP$END一、分支结构与分支程序设计结构:根据不同的条件,进行相应的处理。通常用条件转移指令形
7、成简单分支结构。如:判(A)=Z或NZ,转移判(CY)=1或0,转移判(bit)=1或0,转移CJNE比较不相等转移§3-3分支程序的设计例3.3、设a存放在累加器A中,b存放在寄存器B中,要求按下式计算Y值,并将结果Y存于累加器A中,试编写程序。a-b(a≥0)Y=a+b(a<0)解:本题关键是判a是正数,还是负数;由ACC.7便知。ORG1000HBR:JBACC.7,MINUSCLRCSUBBA,BSJMPDONEMINUS:ADDA,BDONE:SJMP$END分支程序实例1.两分支程序设计例3.4两个无符号数比较(两分支)。内部RAM的20H单元和
8、30H单元各存放了一个8位无符号数,请比较这两个数的