欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    系列单片机程序设计.ppt

    • 资源ID:66725023       资源大小:1.78MB        全文页数:87页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    系列单片机程序设计.ppt

    2010/5/18单片机原理与接口技术第四章第四章 MCS-51系列单片机程序设计系列单片机程序设计4.1 汇编语言程序设计概述n计算机是仿照人的思维方式顺序执行一条条指令来完成特定计算机是仿照人的思维方式顺序执行一条条指令来完成特定任务的机器,计算机程序因此被定义为指令或语句的任务的机器,计算机程序因此被定义为指令或语句的“有序有序集合集合”,程序设计是指编写计算机程序的过程程序设计是指编写计算机程序的过程。n汇编语言是用指令助记符等表示的计算机指令,汇编语言是用指令助记符等表示的计算机指令,采用汇编语采用汇编语言编写的程序被称为汇编语言程序言编写的程序被称为汇编语言程序。汇编语言程序具有代码。汇编语言程序具有代码效率高(编译后的指令代码占用存储空间小)和执行时间短效率高(编译后的指令代码占用存储空间小)和执行时间短等优势和特点。等优势和特点。n由于单片机的存储器等资源有限,单片机应用程序中经常需由于单片机的存储器等资源有限,单片机应用程序中经常需要面对硬件操作,且对程序执行的时间有较为严格的要求或要面对硬件操作,且对程序执行的时间有较为严格的要求或限制。因此,限制。因此,汇编语言程序设计汇编语言程序设计是单片机应用系统设计的重是单片机应用系统设计的重要基础之一。要基础之一。4.1 汇编语言程序设计概述1、汇编语言的特点、汇编语言的特点:汇编语言的特点归纳如下:汇编语言的特点归纳如下:助记符指令与机器指令一一对应;助记符指令与机器指令一一对应;程序代码效率高,占用存储空间小,运行速度快,程序代码效率高,占用存储空间小,运行速度快,汇编语言程序往往是最优化的程序;汇编语言程序往往是最优化的程序;助记符指令(汇编指令)与计算机硬件联系紧密,助记符指令(汇编指令)与计算机硬件联系紧密,要求编程人员对计算机硬件较为熟悉;要求编程人员对计算机硬件较为熟悉;汇编语言程序缺乏通用性,移植性较差。汇编语言程序缺乏通用性,移植性较差。4.1.1 汇编语言的特点及语句格式汇编语言的特点及语句格式4.1 汇编语言程序设计概述2、汇编语言的语句格式、汇编语言的语句格式MCS-51系列单片机汇编语言的语句格式如下:系列单片机汇编语言的语句格式如下:;标号是汇编语句地址的符号表示。标号是汇编语句地址的符号表示。用于规定该语句所执行的操作。用于规定该语句所执行的操作。操作数为汇编指令的操作提供数据或地址操作数为汇编指令的操作提供数据或地址 注释是指对一条汇编语句或一段汇编语言程序注释是指对一条汇编语句或一段汇编语言程序的说明,以增加汇编语言程序的可读性。的说明,以增加汇编语言程序的可读性。4.1.1 汇编语言的特点及语句格式汇编语言的特点及语句格式4.1 汇编语言程序设计概述 1、起始地址定位伪指令、起始地址定位伪指令ORG 格式:格式:标号标号:ORG 操作数操作数 说明:其功能是指出紧接其后的指令的目标代码的说明:其功能是指出紧接其后的指令的目标代码的第一个字节在程序存储器中的绝对地址。例如:第一个字节在程序存储器中的绝对地址。例如:ORG 0030H START:MOV A,#33H .n即定义标号即定义标号START表示的起始地址值为表示的起始地址值为0030H,该,该段程序的指令代码从该地址开始顺序存放。段程序的指令代码从该地址开始顺序存放。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 2、赋值伪指令、赋值伪指令EQU 格式:字符名称格式:字符名称 EQU 操作数操作数 说明:该指令用于说明:该指令用于字符名称赋值字符名称赋值。在同一个源。在同一个源程序中,任何一个字符名称只能赋值一次。且程序中,任何一个字符名称只能赋值一次。且一旦赋值之后,整个源程序中该字符的值就固一旦赋值之后,整个源程序中该字符的值就固定不变了。例如:定不变了。例如:ADPORT EQU 1001Hn即给字符名称即给字符名称ADPORT 赋值赋值16进制数进制数1001H。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 3、数据地址赋值伪指令、数据地址赋值伪指令DATA格式:字符名称格式:字符名称 DATA 操作数操作数说明:说明:DATA伪指令的功能与伪指令的功能与EQU伪指令相似,不同之伪指令相似,不同之处在于处在于DATA伪指令所定义的字符名称伪指令所定义的字符名称可先使用后定可先使用后定义(赋值),也可先定义(赋值)后使用义(赋值),也可先定义(赋值)后使用。在程序。在程序中它常用来定义(赋值)中它常用来定义(赋值)数据地址数据地址。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 4、字节数据赋值伪指令、字节数据赋值伪指令DB格式:格式:标号:标号:DB数据表(字节)数据表(字节)说明:该伪指令用于定义(赋值)若干说明:该伪指令用于定义(赋值)若干字节数据表字节数据表(固定常数),并存放在指定地址单元开始的程序(固定常数),并存放在指定地址单元开始的程序存储器中。存储器中。例如:例如:ORG 0050HTABLE:DB 99H,88H 即表示在地址即表示在地址0050H(标号(标号TABLE)开始定义(赋)开始定义(赋值)两个字节数据(值)两个字节数据(99H,88H)。)。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 5、双字节数据赋值伪指令、双字节数据赋值伪指令DW格式:格式:标号:标号:DW数据表(双字节)数据表(双字节)说明:该伪指令与说明:该伪指令与DB伪指令的不同之处在于伪指令的不同之处在于DW定义(赋值)定义(赋值)的是双字节数据,而的是双字节数据,而DB定义(赋值)的是单字节数据。定义(赋值)的是单字节数据。高高8位数据安排在低地址单元,低位数据安排在低地址单元,低8位数据安排在高地址单元位数据安排在高地址单元。6、预留空间定义伪指令、预留空间定义伪指令DS格式:格式:标号:标号:DS 操作数操作数说明:该伪指令的作用是通知汇编程序,从指定的地址单元开说明:该伪指令的作用是通知汇编程序,从指定的地址单元开始(通常由标号指定首地址),保留由操作数(常数或表达始(通常由标号指定首地址),保留由操作数(常数或表达式)规定的字节空间。式)规定的字节空间。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 7、位地址赋值伪指令、位地址赋值伪指令BIT格式:字符名称格式:字符名称 BIT 位地址位地址说明:该伪指令给字符名称说明:该伪指令给字符名称赋予位地址赋予位地址(片内(片内RAM和和SFR中的中的位地址),常用于位操作程序中。例如:位地址),常用于位操作程序中。例如:FLAG BIT 20H 即将位地址即将位地址20H赋予字符名称赋予字符名称FLAG。8、定义汇编结束伪指令、定义汇编结束伪指令END格式:格式:标号:标号:END说明:汇编结束伪指令说明:汇编结束伪指令END的作用是的作用是通知汇编程序,汇编源程通知汇编程序,汇编源程序到此结束序到此结束。在一个汇编程序中,只允许出现一条。在一个汇编程序中,只允许出现一条END伪指伪指令,且必须安排在整个源程序的末尾处。令,且必须安排在整个源程序的末尾处。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述4.2 基本程序结构基本程序结构1、顺序结构程序2、分支结构程序3、循环结构程序4、子程序5、中断程序基本程序结构4.2 基本程序结构基本程序结构 顺序结构是各类程序中最简单的,也是最基本的顺序结构是各类程序中最简单的,也是最基本的程序结构。顺序结构程序的特征是程序结构。顺序结构程序的特征是整个程序段没有整个程序段没有任何转移指令任何转移指令。主要由数据传递类指令和数据运算。主要由数据传递类指令和数据运算类指令组成,通常用于执行数据传送和较为简单的类指令组成,通常用于执行数据传送和较为简单的算术或逻辑运算任务。算术或逻辑运算任务。4.2.1 顺序结构顺序结构4.2 基本程序结构基本程序结构例例4-1,将内部,将内部 RAM 中中 20H 单元和单元和 30H 单元的无符号数单元的无符号数相加,存入相加,存入R0(高位)和(高位)和R1(低位)中。源程序如下:(低位)中。源程序如下:MOV A,20H ;取出被加数;取出被加数ADD A,30H ;两数相加;两数相加MOV R1,A ;低位存入;低位存入R1CLR A ;ADDC A,#00H ;取进位标志;取进位标志MOV R0,A ;高位存入;高位存入R0RET 4.2.1 顺序结构顺序结构4.2 基本程序结构基本程序结构 分支结构程序利用分支结构程序利用条件转移指令条件转移指令,使程序在执行,使程序在执行某一指令后(产生测试条件),根据所规定的条件某一指令后(产生测试条件),根据所规定的条件满足与否改变其后程序执行的顺序(产生分叉),满足与否改变其后程序执行的顺序(产生分叉),即即根据判断条件的成立与否来确定程序的走向根据判断条件的成立与否来确定程序的走向。分。分支结构程序的特征是程序段中有控制转移类指令支结构程序的特征是程序段中有控制转移类指令(条件转移指令)。(条件转移指令)。依据程序分叉的数目,可将分支结构程序细分为依据程序分叉的数目,可将分支结构程序细分为单分支选择结构单分支选择结构和和多分支选择结构多分支选择结构两类。两类。4.2.2 分支结构分支结构4.2 基本程序结构基本程序结构1、单分支选择结构、单分支选择结构 当程序的判断仅有两个出口(分叉),即两者选一时,称为当程序的判断仅有两个出口(分叉),即两者选一时,称为单分支结构。通常用条件判断指令来选择并确定程序的出口。单分支结构。通常用条件判断指令来选择并确定程序的出口。例例4-3.设内部设内部RAM 40H和和41H单元中存放单元中存放2个个8位无符号二进制位无符号二进制数,试编程找出其中的大数存人数,试编程找出其中的大数存人30H单元中。源程序如下:单元中。源程序如下:MOV A,40H CJNE A,41H,LOOP;取取2个数进行比较个数进行比较 LOOP:JNC LOOP1 ;根据根据CY值,判断单分支出值,判断单分支出 MOV A,41H ;41H单元中是大数单元中是大数 LOOP1:MOV 30H,A ;40H单元中是大数单元中是大数 RET 4.2.2 分支结构分支结构4.2 基本程序结构基本程序结构2、多分支选择结构、多分支选择结构 当程序的判别部分有两个以上的出口(分叉)时,当程序的判别部分有两个以上的出口(分叉)时,称为多分支选择结构。称为多分支选择结构。例例4-4,设变量,设变量X的值存放在内部的值存放在内部RAM的的30H单元中,单元中,编程求解下列函数式,将求得的函数值编程求解下列函数式,将求得的函数值Y存人存人40H单单元。元。X1 (X100)Y 0 (10X100)X一一1 (X10)4.2.2 分支结构分支结构4.2 基本程序结构基本程序结构 MOV A,30H ;取自变量取自变量X值值 CJNE A,#10,LOOP ;与与10比较,比较,A中值不改变中值不改变LOOP:JC LOOP2 ;若;若X100,转,转LOOP3 MOV 40H,00H ;因;因10X100,故,故Y=0 SJMP EXITLOOP2:DEC A ;因;因X100,故,故Y=X1 MOV 40H,AEXIT:RET4.2 基本程序结构基本程序结构 在程序设计中,遇到一段程序需要多次重复执行的情况,在程序设计中,遇到一段程序需要多次重复执行的情况,通常应该采用循环结构程序。通常应该采用循环结构程序。n1、循环结构程序组成、循环结构程序组成 循环结构程序由初始化、循环处理、循环控制和循环结束循环结构程序由初始化、循环处理、循环控制和循环结束4部分组成。部分组成。(1)初始化部分初始化部分 初始化部分设置循环处理之前的初始状态,如初始化部分设置循环处理之前的初始状态,如循环次数、循环次数、变量初值、地址指针初值变量初值、地址指针初值等。等。(2)循环处理部分循环处理部分 循环处理部分又称循环处理部分又称循环体循环体,是,是重复执行的数据处理程序段重复执行的数据处理程序段,它是循环程序的它是循环程序的核心部分核心部分(功能主体)。(功能主体)。4.2.3 循环结构循环结构4.2 基本程序结构基本程序结构(3)循环控制部分循环控制部分控制部分控制部分控制循环继续与否控制循环继续与否。(4)结束部分结束部分结束部分对循环程序全部执行结束后的结果进行结束部分对循环程序全部执行结束后的结果进行分析、处理和保存。分析、处理和保存。循环结构程序一般分为循环结构程序一般分为“单重循环单重循环”和和“多重循多重循环环”两类,循环次数的控制有多种方式,当循环次两类,循环次数的控制有多种方式,当循环次数已知时,可采用循环次数计数器控制循环;若循数已知时,可采用循环次数计数器控制循环;若循环次数未知时,可按条件满足与否控制循环。环次数未知时,可按条件满足与否控制循环。4.2.3 循环结构循环结构4.2 基本程序结构基本程序结构n 2循环程序设计循环程序设计在一个循环程序的循环体中不包含另外的循环结构称为单重在一个循环程序的循环体中不包含另外的循环结构称为单重循环。循环。例例4-5,设某字符串以回车符(,设某字符串以回车符(0DH)为结束标志,并存放在)为结束标志,并存放在内部内部RAM40H单元开始的连续存储单元之中,编写测试字符单元开始的连续存储单元之中,编写测试字符串长度的汇编语言程序。串长度的汇编语言程序。编程思路编程思路 为测试字符串(为测试字符串(0DH)的长度,应使用逐个)的长度,应使用逐个字符依次与回车符字符依次与回车符(ODH)比较的方法。为此需要设一个字符比较的方法。为此需要设一个字符串指针和一个长度计数器,字符串指针用于指定字符,长度串指针和一个长度计数器,字符串指针用于指定字符,长度计数器用于累加字符串的长度。如比较不相等,则长度计数计数器用于累加字符串的长度。如比较不相等,则长度计数器和字符串指针都加器和字符串指针都加1,以继续往下比较;如果比较相等,则,以继续往下比较;如果比较相等,则表示该字符为回车符,字符串结束,长度计数器的值就是字表示该字符为回车符,字符串结束,长度计数器的值就是字符串的长度。符串的长度。4.2.3 循环结构循环结构4.2 基本程序结构基本程序结构n 2循环程序设计循环程序设计 程序如下:程序如下:MOV R7,0FFH ;设长度计数器初值设长度计数器初值 MOV R0,3FH ;字符串指针字符串指针 初值初值LOOP:INC R7 INC R0 CJNE R0,ODH,LOOP RET 4.2.3 循环结构循环结构4.2 基本程序结构基本程序结构 4.2.4 子程序结构子程序结构 在在编编写写程程序序过过程程中中,如如果果遇遇到到在在几几个个程程序序段段中中都都需需要要执执行行某某段段相相同同程程序序的的情情况况(功功能能独独立立),为为减减少少编编程程工工作作量量和和节节省省程程序序存存储储空空间间,就就应应该该采采用用子子程程序序结结构构,将将重重复复执执行行的的相相同同程程序序段段编编写写成成为一个子程序为一个子程序(功能子程序)。(功能子程序)。返回返回调用调用断点断点子程序子程序主程序主程序4.2 基本程序结构基本程序结构MAIN:;进入主程序;进入主程序MOV R0,#03H ;设置入口参数(延时;设置入口参数(延时1)ACALL SUBPRO ;调用子程序;调用子程序 ;子程序返回,继续执行主程序;子程序返回,继续执行主程序;#;子程序入口地址(子程序名称);子程序入口地址(子程序名称):SUBPRO;功能:延时子程序(延时时间由;功能:延时子程序(延时时间由R0初值设置)初值设置);入口参数:;入口参数:R0内存放延时计数初值内存放延时计数初值 ;出口参数:无;出口参数:无;使用寄存器:;使用寄存器:R0、R1;#SUBPRO:MOV R1,#03HDJNZ R1,$DJNZ R0,SUBPRORET ;子程序返回;子程序返回 END 4.2.3 子程序结构子程序结构4.2 基本程序结构基本程序结构单片机中断程序设计主要有以下三个方面:单片机中断程序设计主要有以下三个方面:1、中断向量设置、中断向量设置2、中断初始化、中断初始化3、中断服务程序、中断服务程序 4.2.5 中断程序结构中断程序结构4.2 基本程序结构基本程序结构例例4-7,设,设89C51单片机外中断单片机外中断0(EX0)下降沿有效,每次进入)下降沿有效,每次进入中断服务程序,要求将中断服务程序,要求将89C51单片机的单片机的P1.7P1.0取反。取反。主程序如下:主程序如下:ORG 0000H STAR:AJMP MAIN ;主程序原始入口;主程序原始入口 ORG 0003H ;外部中断;外部中断0中断向量中断向量 AJMP EXTR ;跳转到;跳转到EX0中断服务子程序实际入中断服务子程序实际入口地址口地址 ORG 0030H MAIN:SETB IT0 ;主程序实际入口,边沿触发设置;主程序实际入口,边沿触发设置 SETB EX0 ;外部中断;外部中断0允许允许 SETB EA ;总中断允许;总中断允许HERE:AJMP HERE ;等待再次进入中断服务程序;等待再次进入中断服务程序 4.2.5 中断程序结构中断程序结构4.2 基本程序结构基本程序结构中断服务子程序:中断服务子程序:ORG 1200H EXTR:PUSH PSW ;保护现场;保护现场 CPL A ;累加器;累加器A数据取反数据取反 MOV P1,A ;数据输出至;数据输出至P1端口端口 POP PSW ;恢复现场;恢复现场 RETI ;中断返回;中断返回 4.2.5 中断程序结构中断程序结构4.3 汇编语言程序设计实践汇编语言程序设计实践汇编语言程序设计的一般步骤如下:汇编语言程序设计的一般步骤如下:建立数学模型建立数学模型 用适用的数学方法描述所需要解决的问题;用适用的数学方法描述所需要解决的问题;确定算法确定算法 将数学模型转化为适合单片机处理(顺序执行)将数学模型转化为适合单片机处理(顺序执行)的形式,采用绘制程序流程图等方法表示程序设计的思路和的形式,采用绘制程序流程图等方法表示程序设计的思路和依据。依据。编写源程序编写源程序 采用模块化设计方法,合理划分功能模块,采用模块化设计方法,合理划分功能模块,分配存储器和分配存储器和I/O端口(依据硬件电路)等资源,确定各模块端口(依据硬件电路)等资源,确定各模块内各程序段的结构,编写源程序文件。内各程序段的结构,编写源程序文件。汇编及调试汇编及调试 在集成开发环境的支持下,汇编语言源程序在集成开发环境的支持下,汇编语言源程序经汇编生成目标程序文件,并通过调试以及对运行结果的分经汇编生成目标程序文件,并通过调试以及对运行结果的分析,修正源程序中的错误,达到预期的设计目标。析,修正源程序中的错误,达到预期的设计目标。所所谓谓查查表表,就就是是根根据据变变量量x在在表表格格中中查查找找y,使使yf(x)。函函数数值值y事事先先根根据据变变量量x的的取取值值范范围围计计算算出出,并并按按一一定定规规律律编编成成表表格格存存放放在在计计算算机机的的程程序序存存储储器器中中。当当用用户户程程序序中中需需要要用用这这些些数数据据时时,直直接接按按编编排排的的索索引引值值(或或程程序序号号)寻寻找找答答案案。这这样样编编写写的的程程序序称称为为查查表表程程序序。查查表表程程序序是是一一种种常常用用程程序序,广广泛泛应应用用于于LED显显示示器器控控制制、智智能能化化仪仪表表控控制制、打打印印机机打打印印以以及及数数据据转转换换等等功功能能程程序序中中,具具有有程程序序简简单单、执执行行速速度度快快等等优优点点。查查表表程程序序有有多多种种结结构构形形式式,下下面面举举例例介介绍绍一一种种常常用用的的查查表程序。表程序。4.3.1 查表程序查表程序4.3 汇编语言程序设计实践汇编语言程序设计实践4.3.1 查表程序查表程序 例例4-8,将,将16进制数转换成进制数转换成ASCII码的子程序。假设码的子程序。假设16进制数存放在进制数存放在R0中低中低4位,要求将转换后的位,要求将转换后的ASCII码送回到码送回到R0中。中。设计思路:己知设计思路:己知0-9的的ASCII码为码为30H一一39H,AF的的ASCII码为码为41H一一46H。对十六进制数而言,。对十六进制数而言,0-F是连续的,是连续的,而对应的而对应的ASCII码不连续,查表方法对解决此类问题十分有码不连续,查表方法对解决此类问题十分有效。根据题意,子程序的入口参数和出口参数均通过效。根据题意,子程序的入口参数和出口参数均通过R0传传递,表中所有的值都是单字节,表格长度为递,表中所有的值都是单字节,表格长度为16字节。字节。4.3 汇编语言程序设计实践汇编语言程序设计实践查表子程序:查表子程序:MOV A,R0 ;读取主程序通过;读取主程序通过R0传送的十六进制数传送的十六进制数ANL A,0FH ;屏蔽高;屏蔽高4位,取出低位,取出低4位位ADD A,#02H ;设置变址值(依据表首地址与查表指;设置变址值(依据表首地址与查表指 令所处位置)令所处位置)MOVC A,A+PC ;查表指令(获得对应的;查表指令(获得对应的ASCII码)码)MOV R0,A :通过:通过R0将查表结果传递给主程序将查表结果传递给主程序RETTAB:DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H 程序中因为程序中因为“MOVC A,A+PC”指令与表格首址相隔两个字节,指令与表格首址相隔两个字节,故变址调整值为故变址调整值为2,程序中对应变量,程序中对应变量x的函数值的函数值y为单字节。为单字节。4.3.1 查表程序4.3 汇编语言程序设计实践汇编语言程序设计实践 在在51系列单片机指令集中有单字节的算术运算(加、系列单片机指令集中有单字节的算术运算(加、减、乘、除)指令,但在实际程序设计中经常会遇到减、乘、除)指令,但在实际程序设计中经常会遇到多多字节算术运算问题字节算术运算问题,需要通过编制专门的功能子程序解,需要通过编制专门的功能子程序解决此类问题。决此类问题。例例4-9,多字节无符号数加法运算。假设,多字节无符号数加法运算。假设R0中存放被中存放被加数低位字节地址指针,加数低位字节地址指针,R1中存放加数低位字节地址指中存放加数低位字节地址指针,针,R2中存放字节数,多字节算术运算一般从低字节中存放字节数,多字节算术运算一般从低字节(低位)到高字节(高位)的顺序依次进行。(低位)到高字节(高位)的顺序依次进行。4.3.2 算术运算程序4.3 汇编语言程序设计实践汇编语言程序设计实践汇编源程序如下:汇编源程序如下:ADDBIN:CLR C LOOP1:MOV A,R0;取被加数取被加数 ADDC A,R1;两数相加,带进位两数相加,带进位 MOV R0,A INC R0 INC R1 DJNZ R2,LOOP1;未加完转未加完转LOOP1 JNC LOOP2;无进位转无进位转LOOP2 MOV R0,#0lH RET LOOP2:DEC R0 RET 4.3.2 算术运算程序4.3 汇编语言程序设计实践汇编语言程序设计实践例例4-10,BCD码多字节加法运算。假设码多字节加法运算。假设R0中存放被加数中存放被加数低位字节地址指针,低位字节地址指针,R1中存放加数低位字节地址指针,中存放加数低位字节地址指针,R2中存放字节数。中存放字节数。BCDADD:MOV 20H,R0 MOV 23H,R2 CLR C LP0:MOV A,R0 ;取被加数;取被加数 ADDC A,R1;两数相加;两数相加 DA A ;十进制调整;十进制调整 MOV RO,A INC R0 ;指针加;指针加1 DJN2 R2,LP0 ;做完加法否;做完加法否4.3.2 算术运算程序 MOV R2,23H JNC RETURN ;有无进位;有无进位 MOV R0,#01H INC R3 RETURN:MOV R0,#20H RET 4.3 汇编语言程序设计实践汇编语言程序设计实践例例4-11,如如图图4-2所所示示,MCS-51单单片片机机的的P1作作为为输输出出端端口口,连连接接8只只发发光光二二极极管管。按按该该电电路路工工作作原原理理,P1口口各各位位输输出出“0”时时,将将发发光光二二极极管管点点亮亮;P1口口各各位位输输出出“1”使使发发光光二二极极管管灭灭。分分析析下下述述汇汇编编程程序序运运行行后后,8个个发发光光二二极极管管点点亮的规律。亮的规律。4.3.3 I/O接口控制程序图图4-2 P14-2 P1口口驱动驱动LEDLED示意示意图图4.3 汇编语言程序设计实践汇编语言程序设计实践主程序:主程序:LP:MOV P1,7EH LCALL DELAY MOV P1,0BDH LCALL DELAY MOV P1,#0DBH LCALL DELAY MOV P1,0E7H LCALL DELAY MOV P1,0DBH LCALL DELAY MOV P1,0BDH LCALL DELAY SJMP LP子程序:子程序:DELAY:MOV R2,0FAH L1:MOV R3,#0FAH L2:DJNZ R3,L2 DJNZ R2,L1 RET4.3.3 I/O接口控制程序接口控制程序 例例4-12:按照图按照图4-2所示的电路,试编写控制发光二极管指所示的电路,试编写控制发光二极管指示灯移位的程序,要求示灯移位的程序,要求8个发光二极管依次亮一个,循环左个发光二极管依次亮一个,循环左移,一个一个地亮,直至循环。相关源程序如下移,一个一个地亮,直至循环。相关源程序如下:MOV A,7FH L1:MOV P1,A RL A LCALL DELAY;与例;与例4-11的延时程序相同的延时程序相同 SJMP Ll 4.3.3 I/O接口控制程序4.3 汇编语言程序设计实践汇编语言程序设计实践一个函数的定义由类型、函数名、参数表和函数体四部分一个函数的定义由类型、函数名、参数表和函数体四部分组合而成。一个函数在程序中可以三种形态出现:函数定组合而成。一个函数在程序中可以三种形态出现:函数定义、函数调用、函数说明。义、函数调用、函数说明。C51函数的一般格式为:函数的一般格式为:类型类型 函数名(参数表)函数名(参数表)参数说明;参数说明;数据说明部分;数据说明部分;/注释注释 执行语句部分;执行语句部分;4.4.1 C51程序结构程序结构4.4 面向面向51单片机的单片机的C语言程序语言程序4.4.2 C51数据类型数据类型数据类型数据类型位型(位型(bit)字符型(字符型(char)整型(整型(int)长整型(长整型(long)浮点型(浮点型(float)双精度浮点型(双精度浮点型(double)数组类型(数组类型(array)结构体类型(结构体类型(struct)共用体(共用体(union)枚举(枚举(enum)基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型1.数据类型数据类型KEIL C51编译器支持的数据类型、长度和值域如表编译器支持的数据类型、长度和值域如表4-1所列。所列。数据类型数据类型长度长度/Byte值域值域BitUnsigned charSigned charUnsigned intSigned intUnsigned longSigned longFloatDouble11224440,10255-128127065 535-32 76832 76704 294 967 295-2 147 483 6482 147 483 6471.176E-383.40E+38(6位数字)1.176E-383.40E+38(10位数字)表表4-1 KEIL C51 数据类型数据类型4.4.2 C51数据类型数据类型1.数据类型数据类型 C语言的数据有语言的数据有常量常量、变量变量之分。之分。常量是在程序运行的常量是在程序运行的过程中,其值不能改变的量过程中,其值不能改变的量;变量是在程序运行中,其值可变量是在程序运行中,其值可以改变的量以改变的量。一个变量由两部分构成:变量名和变量值,每。一个变量由两部分构成:变量名和变量值,每一个变量都有一个变量名,在内存中占据一定的存储单元一个变量都有一个变量名,在内存中占据一定的存储单元(地址),并在该内存单元中存放该变量的值。(地址),并在该内存单元中存放该变量的值。常量定义:常量定义:#define CONST 44 /定义常量符号定义常量符号CONST,值为,值为44 变量定义:变量定义:char t;/定义字符型变量,变量名为定义字符型变量,变量名为t C语言中习惯上以小写字母定义变量,以大写字母定义语言中习惯上以小写字母定义变量,以大写字母定义常量。另外由于常量。另外由于51单片机的寄存器及数据总线为单片机的寄存器及数据总线为8位所以在位所以在定义变量时,定义变量时,应尽可能使用无符号字符型应尽可能使用无符号字符型。4.4.2 C51数据类型数据类型1.数据类型数据类型-常量和变量常量和变量 2C51数据存储类型数据存储类型 51系列单片机的程序存储器与数据存储器是分开的,系列单片机的程序存储器与数据存储器是分开的,并独立寻址。并独立寻址。51系列单片机共有如下四个存储空间:系列单片机共有如下四个存储空间:片内程序存储空间;片内程序存储空间;片外程序存储空间;片外程序存储空间;片内数据存储空间;片内数据存储空间;片外数据存储空间。片外数据存储空间。C语言编程时在对常量、变量的定义时,要注意不语言编程时在对常量、变量的定义时,要注意不同功能的常量、变量应存储在不同的存储区,在定义变同功能的常量、变量应存储在不同的存储区,在定义变量或常量时要定义成不同的存储类型(量或常量时要定义成不同的存储类型(data,bdata,idata,pdata,xdata,code)。)。4.4.2 C51数据类型数据类型存储类型存储类型存储空间存储空间databdataidatapdataxdatacode内部内部RAM低低128单元,可直接寻址单元,可直接寻址片内片内RAM位寻址区位寻址区内部内部RAM,间接寻址,间接寻址片外片外RAM,256字节字节片外片外RAM,64KB代码存储区,代码存储区,64KB表表4-2 C51存储类型与单片机存储空间对应关系存储类型与单片机存储空间对应关系4.4.2 C51数据类型数据类型2C51数据存储类型数据存储类型 3特殊功能寄存器的定义特殊功能寄存器的定义 在在51单片机内部单片机内部RAM的高的高128字节,分散着字节,分散着21个特殊个特殊功能寄存器(功能寄存器(SFR),为了能直接访问这些特殊功能寄),为了能直接访问这些特殊功能寄存器,存器,KEIL C51提供一种自主形式的定义方法,此种提供一种自主形式的定义方法,此种方法与标准方法与标准C语言不兼容,只适用于对语言不兼容,只适用于对8051系列单片机系列单片机进行定义。这种定义的方法引入关键字进行定义。这种定义的方法引入关键字“sfr”,如:,如:sfr TMOD=0 x89;/*定时定时/计数器方式控制寄存器地址计数器方式控制寄存器地址为为89H*/。sbit:特殊功能位声明特殊功能位声明,sbit led1=P10;4.4.2 C51数据类型数据类型将其视为将其视为片外数据存储器片外数据存储器的一个单元,利用的一个单元,利用#define语句进行语句进行定义:定义:#define PORTA XBYTE0 x0020/*将将PORTA定义为外部定义为外部I/O口,地址为口,地址为0 x0020*/例例:要通过地址要通过地址0 x0020向外部写数据向外部写数据0 x01,下面分别用汇编语下面分别用汇编语言和言和C语言编程实现:语言编程实现:汇编语言实现:汇编语言实现:MOV DPTR,#0020HMOV A,#01HMOVX DPTR,AC语言实现:语言实现:#define PORTA XBYTE0 x0020PORTA=0 x01;4.4.2 C51数据类型数据类型4片外扩展片外扩展I/O口口 C51的运算符主要包括算术运算、关系运算、逻的运算符主要包括算术运算、关系运算、逻辑运算、位操作运算、自增减运算及复合运算等。其辑运算、位操作运算、自增减运算及复合运算等。其运算符与表达式与运算符与表达式与C语言要求基本一致。语言要求基本一致。4.4.3 C51运算符和表达式运算符和表达式4.4.2 C51数据类型数据类型4.4.3 C51运算符和表达式运算符分类运算符表达式示例优先关系(高低)算术运算符*乘法/除法%求余+加法或正值-减法或负值a+b;(a+b)*c;!算术运算符关系运算符逻辑运算符赋值运算符关系运算符 大于=大于或等于=测试等于!=测试不等于c(a+b)a=bc逻辑运算符&逻辑与|逻辑或!逻辑非c=a&bb=!a位操作运算符&按位与|按位或 按位异或 按位取反 位右移c=a&ba=b1自增减运算符+自加1-自减1+ii+复合运算符算术运算符及位操作运算符复合使用i+=3 C语言程序主要有顺序、选择和循环三种结构。顺序结语言程序主要有顺序、选择和循环三种结构。顺序结构即语句逐条执行,是最基本、最简单的程序结构。选择构即语句逐条执行,是最基本、最简单的程序结构。选择结构和循环结构的相关控制语句分别介绍如下:结构和循环结构的相关控制语句分别介绍如下:1选择结构语句及流程图选择结构语句及流程图 在选择结构中常见的控制语句有:在选择结构中常见的控制语句有:if,else if,switch-case。其中。其中if、else if主要应用在串行多分支结构程序控主要应用在串行多分支结构程序控制中,而制中,而switch-case主要用于并行从分去结构程序的控主要用于并行从分去结构程序的控制中。图制中。图4-3所示为串行多分支结构流程图。所示为串行多分支结构流程图。4.4.4 C51流程控制语句流程控制语句4.4 面向面向51单片机的单片机的C语言程序语言程序图图4-3 串行多分支结构流程图串行多分支结构流程图串行多分支结构串行多分支结构语句的基本形式:语句的基本形式:1)if(表达式表达式)语句;语句;/当括号内的表达式为真,则执行当括号内的表达式为真,则执行内的语句;内的语句;2)if(表达式表达式)语句语句1;else语句语句2;/当括号内的表达式为真,则执行当括号内的表达式为真,则执行内内的语句,否则执行语句的语句,否则执行语句2;3)if(表达式表达式1)语句语句1;else if(表达式表达式2)语句语句2;else语句语句n;/哪一个表达式条件为真,则执行对应哪一个表达式条件为真,则执行对应中的语句,但判断时表达式中的语句,但判断时表达式1的优先的优先级最高,只有条件不满足时,才继续向下判断。级最高,只有条件不满足时,才继续向下判断。4)if(表达式表达式1)if(表达式表达式2)语句语句1;else 语句语句2;/if的嵌套使用,只有当表达式的嵌套使用,只有当表达式1为真时,才进行下一级判断。为真时,才进行下一级判断。1选择结构语句及流程图选择结构语句及流程图 并行多分支结构图图4-4并行多分支结构流程图并行多分支结构流程图switch-case语句表达形式:语句表达形式:switch(表达式表达式1)case 值值1:语句:语句1;break;case 值值2:语句:语句2;break;case 值值N:语句:语句N;break;default:语句语句N+1;1选择结构语句及流程图选择结构语句及流程图4.4.4 C51流程控制语句流程控制语句2 2循环结构语句及流程图循环结构语句及流程图 循环结构中常见的控制语句主要有循环结构中常见

    注意事项

    本文(系列单片机程序设计.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开