书签 分享 收藏 举报 版权申诉 / 36
上传文档赚钱

类型《单片机原理与应用》课件单片机原理与应用-第四章.pptx

  • 上传人(卖家):momomo
  • 文档编号:5836530
  • 上传时间:2023-05-11
  • 格式:PPTX
  • 页数:36
  • 大小:1.04MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《单片机原理与应用》课件单片机原理与应用-第四章.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    单片机原理与应用 单片机 原理 应用 课件 第四
    资源描述:

    1、第4章MCS-51单片机程序设计方法 学习目标学习目标(1 1)掌握单片机程序设计的步骤和方法。)掌握单片机程序设计的步骤和方法。(2 2)掌握汇编语言源程序的指令格式和常用伪指令的基本功能。)掌握汇编语言源程序的指令格式和常用伪指令的基本功能。(3 3)掌握)掌握C51C51语言源程序的基本结构和常用预处理指令的基本功能。语言源程序的基本结构和常用预处理指令的基本功能。学习重点和难点学习重点和难点(1 1)汇编语言源程序和)汇编语言源程序和C51C51语言源程序编写方法语言源程序编写方法(2 2)伪指令与执行指令的区别和使用方法)伪指令与执行指令的区别和使用方法(3 3)预处理指令的功能及使

    2、用方法)预处理指令的功能及使用方法4.1 程序编制的步骤、方法和技巧 4.1.1 4.1.1 程序编制的步骤程序编制的步骤 1 1、任务分析、任务分析 2 2、算法设计、算法设计 3 3、程序流程设计、程序流程设计 4 4、源程序编辑和编译、源程序编辑和编译 5 5、程序调试、程序调试常用的流程图符号“超级循环”结构初初始始化化开开始始循环扫描、处理4.1.2 编制程序的方法和技巧 一、模块化程序设计方法一、模块化程序设计方法 采用模块化程序设计方法,把一个多功能的复杂程序划分采用模块化程序设计方法,把一个多功能的复杂程序划分为若干个简单的、功能单一的程序模块。为若干个简单的、功能单一的程序模

    3、块。有利于程序的设计和调试有利于程序的设计和调试 有利于程序的优化和分工有利于程序的优化和分工 提高了程序的阅读性和可靠性提高了程序的阅读性和可靠性 使程序的结构层次一目了然使程序的结构层次一目了然 二二.使用高效的程序结构使用高效的程序结构(1 1)分支程序结构)分支程序结构(2 2)循环程序结构)循环程序结构(3 3)子程序结构)子程序结构 采用分支结构、循环结构和子程序结构的优点:采用分支结构、循环结构和子程序结构的优点:可以使程序的长度缩短,占用内存空间缩小,并使程序结构清可以使程序的长度缩短,占用内存空间缩小,并使程序结构清晰简洁。晰简洁。注意:注意:1.1.避免避免“死循环死循环”

    4、现象。现象。2.2.现场保护现场保护 3.3.堆栈操作的压入和弹出的平衡堆栈操作的压入和弹出的平衡。4.2程序的编辑、编译和汇编 4.2.14.2.1汇编语言源程序的编辑和汇编汇编语言源程序的编辑和汇编 1 1 汇编语言指令格式汇编语言指令格式 汇编语言源程序由指令语句、伪指令语句和宏指令语句构成。汇编语言源程序由指令语句、伪指令语句和宏指令语句构成。MCS-51MCS-51单片单片机汇编语言的指令语句格式为:机汇编语言的指令语句格式为:标号:标号:指令助记符指令助记符 操作数操作数1 1 操作数操作数2 2 操作数操作数3 3;注释;注释 LOOP LOOP:MOV AMOV A,#7FH#

    5、7FH;A7FHA7FH 一、标号一、标号 标号是指令语句的符号地址,用于引导对该语句的非顺序访问,通常可以标号是指令语句的符号地址,用于引导对该语句的非顺序访问,通常可以作为转移指令的操作数。作为转移指令的操作数。标号不能使用保留字,如指令助记符、寄存器符号名称、伪指令等;标号不能使用保留字,如指令助记符、寄存器符号名称、伪指令等;标号位于语句的开头位置,由字母、数字或其它特定字符组成,以字母开标号位于语句的开头位置,由字母、数字或其它特定字符组成,以字母开头,头,标号后面必须使用冒号作为分隔符。标号后面必须使用冒号作为分隔符。二、指令助记符二、指令助记符 指令助记符表示指令执行的功能,一般

    6、是该指令功能的英文缩写。指令助记符表示指令执行的功能,一般是该指令功能的英文缩写。它是汇编语句中唯一不可空缺的部分。它是汇编语句中唯一不可空缺的部分。三、操作数三、操作数 操作数用于提供参与运算的数据或进行操作的数据或这些数据的地址。操作数用于提供参与运算的数据或进行操作的数据或这些数据的地址。操作数字段的内容可能包括工作寄存器名、特殊功能寄存器名、符号名、操作数字段的内容可能包括工作寄存器名、特殊功能寄存器名、符号名、标号名、符号标号名、符号“$”“$”(表示程序计数器(表示程序计数器PC PC 的当前值)、常数和表达式等。的当前值)、常数和表达式等。若操作数为十六进制数字,其末尾必须用若操

    7、作数为十六进制数字,其末尾必须用“H”“H”说明,说明,十六进制数以字母十六进制数以字母A A、B B、C C、D D、E E、F F开头,其前面必须添加一个开头,其前面必须添加一个“0”“0”进进行引导说明,行引导说明,例如:例如:0AFH0AFH。若操作数为二进制数字,其末尾必须用若操作数为二进制数字,其末尾必须用“B”“B”说明,说明,例如:例如:01100011B01100011B。若操作数为十进制数字,末尾可以加若操作数为十进制数字,末尾可以加“D”“D”说明,若末尾不加说明,该数说明,若末尾不加说明,该数字默认为十进制数字,例如:字默认为十进制数字,例如:98D98D、9898,均

    8、表示十进制数,均表示十进制数9898。四、注释四、注释 注释不属于汇编语句的功能部分,它只是对语句的说明。注释不属于汇编语句的功能部分,它只是对语句的说明。注释字段可以增加程序的可读性,有助于编程人员的阅读和维护。注释字段可以增加程序的可读性,有助于编程人员的阅读和维护。注释字段必须以分号注释字段必须以分号“;”开头,长度不限,当一行书写不下时,可以换开头,长度不限,当一行书写不下时,可以换行接着书写,但换行时应注意在开头使用分号行接着书写,但换行时应注意在开头使用分号“;”。4.2程序的编辑、编译和汇编 4.2.14.2.1汇编语言源程序的编辑和汇编汇编语言源程序的编辑和汇编 2 2 汇编汇

    9、编 把汇编语言翻译成机器语言的过程称为汇编把汇编语言翻译成机器语言的过程称为汇编3汇编语言常用伪指令 伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。它不是单片机执行的指令,所以没有对应的可执行目标码,汇编后产生的它不是单片机执行的指令,所以没有对应的可执行目标码,汇编后产生的目标程序中不会再出现伪指令。目标程序中不会再出现伪指令。(1)起始地址设定伪指令ORG 格式为:格式为:ORG ORG 表达式表达式 该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放的起该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放

    10、的起始地址。表达式通常为始地址。表达式通常为16 16 进制地址,也可以是已定义的标号地址。进制地址,也可以是已定义的标号地址。如:如:ORG 8000H ORG 8000H STARTSTART:MOV AMOV A,#30H#30H(2)汇编结束伪指令END 格式为:格式为:END END 该指令的功能是结束汇编。该指令的功能是结束汇编。汇编程序遇到汇编程序遇到END END 伪指令后即结束汇编。处于伪指令后即结束汇编。处于END END 之后的程序,汇编之后的程序,汇编程序将不处理。程序将不处理。(3)字节数据定义伪指令DB 格式为:格式为:标号:标号:DB DB 字节数据表字节数据表

    11、功能是从标号指定的地址单元开始,在程序存储器中定义字节数据。功能是从标号指定的地址单元开始,在程序存储器中定义字节数据。DB“Hello World”DB“Hello World”DB 2DB 2,44,66,5 5,1010,1818(4)字数据定义伪指令DW 格式为:格式为:标号:标号:DW DW 字数据表字数据表 功能是从标号指定的地址单元开始,在程序存储器中定义字数据。功能是从标号指定的地址单元开始,在程序存储器中定义字数据。该伪指令将字或字表中的数据根据从左到右的顺序依次存放在指定的存储该伪指令将字或字表中的数据根据从左到右的顺序依次存放在指定的存储单元中。单元中。应特别注意:应特别

    12、注意:16 16 位的二进制数,高位的二进制数,高8 8 位存放在低地址单元,低位存放在低地址单元,低8 8 位存放位存放在高地址单元。在高地址单元。例如:例如:ORG 1400HORG 1400H DATADATA:DW 123FHDW 123FH,8CH8CH 汇编后汇编后(1400H1400H)=12H=12H,(,(1401H1401H)=3FH=3FH,(,(1402H1402H)=00H=00H,(,(1403H1403H)=8CH=8CH。(5)赋值伪指令EQU 格式为:格式为:符号名符号名 EQU EQU 表达式表达式 功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号

    13、名。功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名。SUM EQU 21HSUM EQU 21HNUM EQU 22HNUM EQU 22HLEN EQU 12LEN EQU 12 CLR ACLR A MOV R7,#LENMOV R7,#LENMOV R0,#NUMMOV R0,#NUM LOOP:LOOP:ADD A,R0ADD A,R0 INC R0INC R0 DJNZ R7,LOOPDJNZ R7,LOOP MOV SUM,AMOV SUM,AENDEND(6)位地址符号定义伪指令BIT 格式为:格式为:符号名符号名 BIT BIT 位地址表达式位地址表达式 功能是将

    14、位地址赋给指定的符号名。功能是将位地址赋给指定的符号名。其中,位地址表达式可以是绝对地址,也可以是符号地址。其中,位地址表达式可以是绝对地址,也可以是符号地址。例如:例如:L0 BIT P1.0L0 BIT P1.0;将;将P1.0P1.0的位地址赋给位地址符号的位地址赋给位地址符号L0L0 L1 BIT 20H;L1 BIT 20H;将位地址为将位地址为20H20H的位地址单元定义位地址符号的位地址单元定义位地址符号L1L1 位地址符号用伪指令位地址符号用伪指令BITBIT定义后,不能再重新定义和改变。定义后,不能再重新定义和改变。4.2.2 C51源程序的编辑和编译 1 1C51C51源程

    15、序的编辑源程序的编辑#include /#include /预处理命令,用于包含头文件,宏定义等预处理命令,用于包含头文件,宏定义等#define LED P1#define LED P1 unsigned int m;/unsigned int m;/全局变量说明全局变量说明 void delay_ms(void);/void delay_ms(void);/函数函数1 1声明声明 void delay_us(void);/void delay_us(void);/函数函数2 2声明声明././其他函数声明其他函数声明/*主函数主函数*/void main(void)void main(vo

    16、id)unsigned char i;/unsigned char i;/局部变量说明局部变量说明 /执行语句执行语句 while(1)/while(1)/主循环主循环 /执行语句执行语句 /*其他函数其他函数*/void delay_ms(void)/void delay_ms(void)/函数函数1 1 /执行语句执行语句 void delay_us(void)/void delay_us(void)/函数函数2 2 /执行语句执行语句 编写编写C51C51程序要注意以下几点:程序要注意以下几点:(1 1)函数以)函数以“”“”开始,以开始,以“”“”结束,二者必须成对出现结束,二者必须成

    17、对出现(2 2)C51C51程序没有行号,一行内可以书写多条语句,一条语句也可以分写程序没有行号,一行内可以书写多条语句,一条语句也可以分写在多行上。在多行上。(3 3)每条语句最后必须以一个分号)每条语句最后必须以一个分号“;”“;”结尾结尾(4 4)每个变量必须先定义后引用。)每个变量必须先定义后引用。函数内部定义的变量为局部变量,又称内部变量,只有在定义它的那函数内部定义的变量为局部变量,又称内部变量,只有在定义它的那个函数之内才能够使用。在函数外部定义的变量为全局变量,又称外部变个函数之内才能够使用。在函数外部定义的变量为全局变量,又称外部变量,在定义它的那个程序文件中的函数都可以使用

    18、它。量,在定义它的那个程序文件中的函数都可以使用它。(5 5)对程序语句的注释必须放在双斜杠)对程序语句的注释必须放在双斜杠“/”“/”之后,或者放在之后,或者放在“/“/*.*/”/”之内。之内。2编译 编译就是把文本形式源代码翻译成机器语言形式的目标文件的过程编译就是把文本形式源代码翻译成机器语言形式的目标文件的过程 分为预编译、编译、汇编和链接等阶段分为预编译、编译、汇编和链接等阶段(1 1)预编译)预编译 预编译指的是在正式的编译阶段之前进行的预处理阶段。预编译指的是在正式的编译阶段之前进行的预处理阶段。(2 2)编译)编译 编译程序所要做的工作就是通过词法分析和语法分析,在确认所有的

    19、指令编译程序所要做的工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码或汇编代码都符合语法规则之后,将其翻译成等价的中间代码或汇编代码(3 3)汇编)汇编 汇编是指把汇编代码翻译成目标机器指令的过程。汇编是指把汇编代码翻译成目标机器指令的过程。(4 4)链接)链接 链接的主要工作就是将有关的目标文件彼此相连接,即将在一个文件中引链接的主要工作就是将有关的目标文件彼此相连接,即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个单片机可以识别的目标文

    20、件(标文件成为一个单片机可以识别的目标文件(hexhex文件)。文件)。3C51常用预处理指令预处理指令用途#include包含一个源代码文件#define定义宏#undef取消已定义的宏#if如果给定条件为真,则编译下面代码#elif如果前面的#if给定条件不为真,而当前条件为真,则编译下面代码#endif结束一个#if#else条件编译块#ifdef如果宏已经定义,则编译下面代码#ifndef如果宏没有定义,则编译下面代码#error停止编译并显示错误信息(1 1)文件包含指令)文件包含指令 文件包含指令文件包含指令#include#include的作用是在指令处展开被包含的文件。的作用是

    21、在指令处展开被包含的文件。#include#include#include my.h#include my.h(2 2)宏定义指令)宏定义指令 宏定义指令宏定义指令#define#define的作用是定义一个代表特定内容的标识符。的作用是定义一个代表特定内容的标识符。#define NUM 20#define NUM 20 int arrayNUM;int arrayNUM;(3 3)条件编译指令)条件编译指令 条件编译指令的作用是决定哪些代码被编译,哪些是不被编译的。条件编译指令的作用是决定哪些代码被编译,哪些是不被编译的。#if#if和和#endif#endif指令指令#if#if指令用来

    22、检测关键字后的常量表达式是否为真。如果表达式为真,则指令用来检测关键字后的常量表达式是否为真。如果表达式为真,则编译后面的代码,直到出现编译后面的代码,直到出现#else#else、#elif#elif或或#endif#endif为止;如果表达式为假,为止;如果表达式为假,则不编译后面的代码。则不编译后面的代码。#endif#endif用于终止用于终止#if#if预处理指令。例如:预处理指令。例如:#define RUN 0#define RUN 0 main()main()#if RUN#if RUN printf(Runningn);printf(Runningn);#endif#endi

    23、f printf(Endn);printf(Endn);#ifdef#ifdef和和#ifndef#ifndef#ifdef#ifdef指令的作用是检测关键字后的常量是否被声明过。如果常量被指令的作用是检测关键字后的常量是否被声明过。如果常量被声明过,则编译后面的代码,直到出现声明过,则编译后面的代码,直到出现#else#else、#elif#elif或或#endif#endif为止;如为止;如果常量没有被声明过,则不编译后面的代码。果常量没有被声明过,则不编译后面的代码。#ifndef#ifndef用法与用法与#ifdef#ifdef用法用法相反。例如:相反。例如:#define RUN#d

    24、efine RUN main()main()#ifdef RUN#ifdef RUN printf(Startn);printf(Startn);#endif#endif#ifndef RUN#ifndef RUN printf(Stopn);printf(Stopn);#endif#endif#else#else和和#elif#elif指令指令#else#else指令的作用是用于某个指令的作用是用于某个#if#if指令之后,当前面的指令之后,当前面的#if#if指令的条件不为指令的条件不为真时,就编译真时,就编译#else#else后面的代码,后面的代码,#endif#endif指令将用来终

    25、止上面的条件块。指令将用来终止上面的条件块。#elif#elif预处理指令综合了预处理指令综合了#else#else和和#if#if指令的作用。例如:指令的作用。例如:#define RED#define RED main()main()#ifdef BLUE#ifdef BLUE printf(Bluen);printf(Bluen);#elif defined RED#elif defined RED printf(Redn);printf(Redn);#else#else printf(Greenn);printf(Greenn);#endif#endif 4.3程序设计实例 例题:用例题:用P2P2口作为输出口,控制口作为输出口,控制8 8只发光二极管循环点亮,实现流水灯效只发光二极管循环点亮,实现流水灯效果。电路如图果。电路如图4-34-3所示。所示。本章小结 汇编语言的源程序结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时性强等优点。模块化的程序设计方法 循环结构和子程序 80C51 汇编语言的语句行由4 个字段组成,汇编程序能对这种格式正确地识别。伪指令 汇编语言程序设计是实践性较强的单片机应用技能,不仅需要学习基本程序实例,而且需要在实际应用中进行编程训练,并逐步积累丰富的实践经验。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《单片机原理与应用》课件单片机原理与应用-第四章.pptx
    链接地址:https://www.163wenku.com/p-5836530.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库