单片机的编程技术优秀PPT.ppt
《单片机的编程技术优秀PPT.ppt》由会员分享,可在线阅读,更多相关《单片机的编程技术优秀PPT.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机的编程技术第1页,本讲稿共70页 单片机与一般集成电路的区别在于可编程应单片机与一般集成电路的区别在于可编程应用,程序是单片机应用系统的灵魂。用,程序是单片机应用系统的灵魂。3.1 程序设计的方法和技巧程序设计的方法和技巧3.1.1程序设计流程程序设计流程 由于汇编语言是面向机器的语言,因此对单片机由于汇编语言是面向机器的语言,因此对单片机系统进行程序设计时必须考虑硬件资源的配置。当硬系统进行程序设计时必须考虑硬件资源的配置。当硬件系统设计完成后,可从以下几方面进行程序设计:件系统设计完成后,可从以下几方面进行程序设计:第2页,本讲稿共70页1.分析问题分析问题针对现有条件,明确在程序设
2、计时应该针对现有条件,明确在程序设计时应该“做什么做什么”2.确定算法确定算法解决解决“怎样做怎样做”的问题的问题3.绘制程序流程图绘制程序流程图用图形的方法描绘解决问题的思路用图形的方法描绘解决问题的思路 (常用的程序流程图符号如图(常用的程序流程图符号如图3-1所示)所示)4.分配内存单元分配内存单元确定程序和数据区的起始地址确定程序和数据区的起始地址5.编写源程序编写源程序用指令的形式将程序流程图实现出来用指令的形式将程序流程图实现出来6.汇编汇编用开发机或仿真器将源程序转换成机器码,便于单片机识别用开发机或仿真器将源程序转换成机器码,便于单片机识别7.在线仿真调试在线仿真调试查错、改错
3、,对程序进行优化。查错、改错,对程序进行优化。第3页,本讲稿共70页常用的程序流程图符号如图常用的程序流程图符号如图3-1所示。所示。图图3-1 常用的程序流程图符号常用的程序流程图符号第4页,本讲稿共70页3.1.2 3.1.2 汇编语言编程技巧汇编语言编程技巧 尽量采用模块化程序设计方法尽量采用模块化程序设计方法 ;这种设计方法是把一个完整的程序分成若干个功能相对独立这种设计方法是把一个完整的程序分成若干个功能相对独立的、较小的程序模块,对各个程序模块分别进行设计、编制程序的、较小的程序模块,对各个程序模块分别进行设计、编制程序和调试,最后把各个调试好的程序模块装配起来进行联调,最终和调试
4、,最后把各个调试好的程序模块装配起来进行联调,最终成为一个有实用价值的程序。成为一个有实用价值的程序。模块化程序设计的优点是:对单个程序模块设计和调试模块化程序设计的优点是:对单个程序模块设计和调试比较方便、容易完成,一个模块可以被多个任务共用。比较方便、容易完成,一个模块可以被多个任务共用。尽量采用循环结构和子程序结构尽量采用循环结构和子程序结构;采用循环结构和子程序结构,可以使程序的总容量减小,提高程采用循环结构和子程序结构,可以使程序的总容量减小,提高程序的效率,节省内存。序的效率,节省内存。第5页,本讲稿共70页尽量少用无条件转移指令尽量少用无条件转移指令;少用无条件转移指令,可以保证
5、程序的条理更加清晰,从而减少错误发生。少用无条件转移指令,可以保证程序的条理更加清晰,从而减少错误发生。充分利用累加器;充分利用累加器;累加器是主程序和子程序之间信息传递的桥梁,利用累加器传递入口参数或返累加器是主程序和子程序之间信息传递的桥梁,利用累加器传递入口参数或返回参数比较方便。这时,一般不要把累加器内容压入堆栈。回参数比较方便。这时,一般不要把累加器内容压入堆栈。对于通用子程序要保护现场;对于通用子程序要保护现场;由于子程序的通用性,除了保护子程序入口参数的寄存器内容外,还要对子由于子程序的通用性,除了保护子程序入口参数的寄存器内容外,还要对子程序中用到的其它寄存器内容一并入栈保护。
6、程序中用到的其它寄存器内容一并入栈保护。对于中断处理,还要保护程序状态字对于中断处理,还要保护程序状态字 在中断处理程序中,既要保护处理程序中用到的寄存器内容,还要保护程序状在中断处理程序中,既要保护处理程序中用到的寄存器内容,还要保护程序状态字态字PSWPSW。否则,当中断服务程序执行结束返回主程序时,整个程序的执行可能会被打乱。否则,当中断服务程序执行结束返回主程序时,整个程序的执行可能会被打乱。第6页,本讲稿共70页 80C51单片机汇编语言的语句行由单片机汇编语言的语句行由4个字段组成,个字段组成,汇编程序能对这种格式正确地进行识别。这汇编程序能对这种格式正确地进行识别。这4个字段的个
7、字段的格式为:格式为:标号:标号:操作码操作码操作数操作数;注释;注释 括号内的部分可根据实际情况取舍,各字段之间括号内的部分可根据实际情况取舍,各字段之间要用分隔符分隔。可用作分隔符的符号有冒号、空格、要用分隔符分隔。可用作分隔符的符号有冒号、空格、逗号、分号等。如:逗号、分号等。如:MAIN:MOV A,#68H ;A68H3.1.33.1.3汇编语言的语句格式汇编语言的语句格式第7页,本讲稿共70页1标号标号 标号是指令的符号地址。有了标号,程序中的其它语句才能标号是指令的符号地址。有了标号,程序中的其它语句才能很方便地访问该语句。有关标号的规定为:很方便地访问该语句。有关标号的规定为:
8、标号要由标号要由18个个ASCII码字符组成,但必须以字母开码字符组成,但必须以字母开 头,其余字符可以是字母、数字或其它特定字符。头,其余字符可以是字母、数字或其它特定字符。不能使用汇编语言已经定义了的符号作为标号,如指令不能使用汇编语言已经定义了的符号作为标号,如指令 助记符助记符MOV、伪指令记忆符、伪指令记忆符END以及寄存器的符号名以及寄存器的符号名 称称R1等。等。标号后边必须跟冒号。标号后边必须跟冒号。同一标号在一个程序中只能定义一次,不能重复定义。同一标号在一个程序中只能定义一次,不能重复定义。第8页,本讲稿共70页2操作码操作码 操作码用于规定语句执行的操作。它用指令助记符或
9、伪指令操作码用于规定语句执行的操作。它用指令助记符或伪指令助记符表示,是汇编语句中唯一不能空缺的部分。助记符表示,是汇编语句中唯一不能空缺的部分。3操作数操作数 操作数用于给指令的操作提供数据或地址。在一条语句中,操作数用于给指令的操作提供数据或地址。在一条语句中,可能没有操作数,也可能只有可能没有操作数,也可能只有1个操作数,还可能同时包含个操作数,还可能同时包含23个个操作数。各操作数之间要以逗号分隔。操作数一般以下面几种形式出现:操作数。各操作数之间要以逗号分隔。操作数一般以下面几种形式出现:u常数常数u工作寄存器名工作寄存器名u特殊功能寄存器名特殊功能寄存器名第9页,本讲稿共70页 u
10、标号名标号名u符号符号“$”$”,表示程序计数器,表示程序计数器PCPC的当前值。如:的当前值。如:SJMP$SJMP$u表达式表达式4注释注释 注释不属于语句的功能部分,它只是对语句的解释说明,只要用注释不属于语句的功能部分,它只是对语句的解释说明,只要用“;”开头,就表明以下为注释内容。使用注释可使程序文件的开头,就表明以下为注释内容。使用注释可使程序文件的编制显得更加清楚,便于编程人员的阅读和维护。注释的长度不编制显得更加清楚,便于编程人员的阅读和维护。注释的长度不限,一行不够可以换行接着书写,但换行后仍要以限,一行不够可以换行接着书写,但换行后仍要以“;”开头。开头。第10页,本讲稿共
11、70页 用户根据系统要求用汇编语言或高级语言编好的程序,叫用户根据系统要求用汇编语言或高级语言编好的程序,叫源程序。源程序。3.2.1 3.2.1 源程序的编辑和汇编源程序的编辑和汇编 由于通用微型计算机的普及,现在单片机应用系统的程序设由于通用微型计算机的普及,现在单片机应用系统的程序设计都借助于通用微型计算机。全过程可概括为计都借助于通用微型计算机。全过程可概括为“机器编辑机器编辑交叉交叉汇编汇编串行传送串行传送”三个部骤,如图三个部骤,如图3-23-2所示。所示。3.2 源程序的编制第11页,本讲稿共70页1.编辑编辑 将源程序输入计算机并进行修改的过程就是编辑。将源程序输入计算机并进行
12、修改的过程就是编辑。编辑工作一般编辑工作一般在通用微型计算机上利用各种编辑软件完成,故又称其为机器编辑。在通用微型计算机上利用各种编辑软件完成,故又称其为机器编辑。编辑完成后,生成一个由汇编指令和伪指令共同组成的编辑完成后,生成一个由汇编指令和伪指令共同组成的ASCIIASCII码文件,码文件,其扩展名为其扩展名为“ASM”ASM”。图图3-2 3-2 单片机汇编语言程序的生成过程单片机汇编语言程序的生成过程 第12页,本讲稿共70页 计算机只能识别机器语言,但程序编制人员通常以汇编语言或高计算机只能识别机器语言,但程序编制人员通常以汇编语言或高级语言编制源程序。这样,要让计算机能听从程序编制
13、人员的指挥,就级语言编制源程序。这样,要让计算机能听从程序编制人员的指挥,就必须要必须要将汇编语言或高级语言转换成机器语言,供计算机识别,将汇编语言或高级语言转换成机器语言,供计算机识别,这个过程称为汇编(或编译)。这个过程称为汇编(或编译)。汇编工作常由汇编软件来完成。汇编软件通常具有指令的错误汇编工作常由汇编软件来完成。汇编软件通常具有指令的错误识别与提示能力,为编程者迅速查找源程序中的错误提供了方便。识别与提示能力,为编程者迅速查找源程序中的错误提供了方便。在汇编过程中,我们只能发现源程序中的语法错误和一般性的逻在汇编过程中,我们只能发现源程序中的语法错误和一般性的逻辑错误,但不能检查程
14、序结构上的错误。如果有错误,汇编软件辑错误,但不能检查程序结构上的错误。如果有错误,汇编软件会报告,指出错误位置及错误类型。程序错误被纠正后,要重新会报告,指出错误位置及错误类型。程序错误被纠正后,要重新进行编译调试,直至程序汇编无误为止。进行编译调试,直至程序汇编无误为止。现在常用的汇编方法是交叉汇编,即用现在常用的汇编方法是交叉汇编,即用PCPC机中的汇编程序去机中的汇编程序去汇编汇编80C5180C51单片机中的源程序。汇编后生成的机器码称为目标程序,单片机中的源程序。汇编后生成的机器码称为目标程序,扩展名为扩展名为“OBJOBJ”。该目标程序可通过。该目标程序可通过PCPC机的串行通信
15、接口直接传送机的串行通信接口直接传送到开发系统的到开发系统的RAMRAM中。中。2.汇编汇编第13页,本讲稿共70页 在前面的课题与实训环节中用到的在前面的课题与实训环节中用到的ORGORG和和ENDEND命令就是典型命令就是典型的伪指令,它们是为下一步的汇编工作提供起始地址和结束地的伪指令,它们是为下一步的汇编工作提供起始地址和结束地址的。址的。我们知道,汇编语言程序的机器汇编是由计算机自动完成的,因我们知道,汇编语言程序的机器汇编是由计算机自动完成的,因此在源程序中应该有向汇编程序发出的命令。此在源程序中应该有向汇编程序发出的命令。这种在源程序中出现,通知汇编程序应该如何完成汇编这种在源程
16、序中出现,通知汇编程序应该如何完成汇编工作的指令,就是伪指令。工作的指令,就是伪指令。下面介绍下面介绍80C5180C51单片机常用的伪指令。单片机常用的伪指令。3.2.2 3.2.2 伪指令伪指令第14页,本讲稿共70页1.ORG1.ORG(OriginOrigin)汇编起始命令)汇编起始命令格式格式为:为:ORG 16ORG 16位地址或标号位地址或标号 该命令总是出现在源程序的开始位置。用来规定目标程序(即此命令后该命令总是出现在源程序的开始位置。用来规定目标程序(即此命令后面的程序或数据块)的起始地址。面的程序或数据块)的起始地址。ORGORG后面通常是后面通常是1616位地址,也可以
17、是已定义位地址,也可以是已定义的标号地址或表达式。如的标号地址或表达式。如ORG 1000HORG 1000H。在程序中如果不用在程序中如果不用ORGORG规定起始地址,则汇编得到的目标程序将从规定起始地址,则汇编得到的目标程序将从0000H0000H开始存开始存放。在一个源程序中,放。在一个源程序中,ORGORG指令可以多次使用,但要求地址值要由小到大依序指令可以多次使用,但要求地址值要由小到大依序排列,且不能出现空间上的重叠。排列,且不能出现空间上的重叠。2.END 2.END 汇编结束命令汇编结束命令格式为:格式为:ENDEND 该命令用于中止源程序的汇编工作。该命令用于中止源程序的汇编
18、工作。ENDEND是汇编语言源程序的结束标志,是汇编语言源程序的结束标志,因此在整个源程序中只能有一条因此在整个源程序中只能有一条ENDEND指令,且位于程序的最后。如果指令,且位于程序的最后。如果ENDEND命令命令出现在源程序中间,对其后面的源程序,计算机将不予汇编。出现在源程序中间,对其后面的源程序,计算机将不予汇编。第15页,本讲稿共70页3.EQU3.EQU(EquateEquate)等值命令)等值命令格式为:格式为:标号名标号名 EQU 表达式表达式 该命令用来给标号赋值。赋值以后,其标号值在整个程序该命令用来给标号赋值。赋值以后,其标号值在整个程序中有效。例如:中有效。例如:DA
19、T EQU 30H 4.DB(Define Byte)4.DB(Define Byte)定义字节命令定义字节命令格式为:格式为:标号:标号:DB 字节数据表字节数据表 该命令用于从标号指定的地址开始,连续存放字节数据表,该命令用于从标号指定的地址开始,连续存放字节数据表,常与查表指令常与查表指令MOVC配合使用。其中字节数据表可以是一个配合使用。其中字节数据表可以是一个或多个字节数据、字符串或表达式。例如:或多个字节数据、字符串或表达式。例如:DB “hello”第16页,本讲稿共70页5.DW(Define Word)5.DW(Define Word)定义字命令定义字命令格式为:格式为:标号
20、:标号:DW 字数据表字数据表 该命令用于从标号指定的地址开始,连续存放该命令用于从标号指定的地址开始,连续存放16位字数据位字数据表。该数据表在程序存储器中存放的格式为:高表。该数据表在程序存储器中存放的格式为:高8位存放在低地址位存放在低地址单元,低单元,低8位存放在高地址单元。例如:位存放在高地址单元。例如:ORG 1000HTABLE:DW 1234H,66H 汇编后汇编后,(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=66H。DB和和DW定义的数据表,数的个数不能超过定义的数据表,数的个数不能超过80个。如遇数目较多时,个。如遇数目较多时,可
21、以使用多个定义命令。在可以使用多个定义命令。在80C51程序设计中,常用程序设计中,常用DB来定义数来定义数据,据,DW来定义地址。来定义地址。第17页,本讲稿共70页6.BIT 6.BIT 定义位命令定义位命令 格式为:格式为:标号名标号名 BIT BIT 位地址位地址 该命令用来将位地址赋值给指定的标号名。例如:该命令用来将位地址赋值给指定的标号名。例如:KAIGUAN BIT P1.0KAIGUAN BIT P1.0将将P1.0P1.0的位地址赋值给标号的位地址赋值给标号KAIGUANKAIGUAN,在后面编程时就可以用,在后面编程时就可以用KAIGUANKAIGUAN来代替来代替P1.
22、0P1.0。7.DS(Define Storage)7.DS(Define Storage)定义空间命令定义空间命令格式为:格式为:标号:标号:DS DS 表达式表达式 该命令用于从指定单元开始,预留一定数目的字节单元作存该命令用于从指定单元开始,预留一定数目的字节单元作存储区,供程序运行使用。储区,供程序运行使用。第18页,本讲稿共70页 程序结构通常分为三种形式:顺序结构、分支结构、循程序结构通常分为三种形式:顺序结构、分支结构、循环结构。形式如图环结构。形式如图3-33-3所示。所示。图图3-3 3-3 三种程序结构三种程序结构3.3 3.3 基本程序结构基本程序结构第19页,本讲稿共7
23、0页 顺序程序是最简单的程序结构,它既无分支,又无循环,顺序程序是最简单的程序结构,它既无分支,又无循环,在执行时单片机是按程序中指令的顺序逐条进行的。在执行时单片机是按程序中指令的顺序逐条进行的。编程注意事项:编程注意事项:正确选择程序存放的地址:通常主程序起始地址在正确选择程序存放的地址:通常主程序起始地址在0100H0100H之后,之后,但由于但由于80C5180C51单片机上电后从单片机上电后从0000H0000H开始执行,所以必须在开始执行,所以必须在0000H0000H设一条转移指令,转至主程序首址。设一条转移指令,转至主程序首址。要注意检查所用指令是否合法,在没有把握的情况下,最
24、好查要注意检查所用指令是否合法,在没有把握的情况下,最好查一下指令表。如,下面的指令是非法的:一下指令表。如,下面的指令是非法的:MOVX 2002HMOVX 2002H,2000H2000H 为使程序运行结束时不至于跑飞,可在程序最后加一条暂停指为使程序运行结束时不至于跑飞,可在程序最后加一条暂停指令,如:令,如:SJMP$SJMP$。3.3.13.3.1顺序程序顺序程序第20页,本讲稿共70页例例1 将地址为将地址为2000H、2001H、2002H的片外数据存储单元的内容的片外数据存储单元的内容分别传送到分别传送到2002H、2003H和和2004H单元中去。单元中去。ORG 0000H
25、 AJMP 0100H ;转到主程序起始地址;转到主程序起始地址 ORG 0100H MOV DPTR,#2002H ;最后一个数据的起始地址;最后一个数据的起始地址 MOVX A,DPTR ;2002H单元的数据送单元的数据送A MOV DPTR,#2004H ;最后一个数据的目的地址;最后一个数据的目的地址 MOVX DPTR,A;2002H单元的数据送单元的数据送2004H单元单元 MOV DPTR,#2001H ;中间数据的起始地址;中间数据的起始地址第21页,本讲稿共70页 MOVX A,DPTR ;2001H单元的数据送单元的数据送A MOV DPTR,#2003H ;中间数据的目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 编程 技术 优秀 PPT
限制150内