您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 单片机原理及应用课件(第4讲)
E_mail:zht_sir@126.comAuthor:Zhanghaitao1第4章MCS-51单片机汇编语言程序设计第4章MCS-51单片机汇编语言程序设计4.1程序设计概述4.2顺序结构的程序设计4.3分支结构的程序设计4.4循环结构的程序设计4.5查表程序设计4.6子程序设计E_mail:zht_sir@126.comAuthor:Zhanghaitao2第4章MCS-51单片机汇编语言程序设计§4-2顺序结构的程序顺序结构程序是一种最简单、最基本的程序,按照程序编写的顺序逐条依次执行,直到程序结束。这是程序的最基本的形式,任何程序都离不开这种形式。E_mail:zht_sir@126.comAuthor:Zhanghaitao3第4章MCS-51单片机汇编语言程序设计例4-1:将片外0200H,0201H单元两个无符号数相乘,结果送片内RAM的50H,51H单元E_mail:zht_sir@126.comAuthor:Zhanghaitao4第4章MCS-51单片机汇编语言程序设计例4-2:将片内RAM20H单元中的数拆成两段,每段4位,并将其分别存入21H、22H单元中。低4位存在21H单元,高4位存在22H单元E_mail:zht_sir@126.comAuthor:Zhanghaitao5第4章MCS-51单片机汇编语言程序设计§4-3分支结构的程序分支结构程序是利用条件转移指令,使程序执行到某一指令时,根据条件是否满足,来改变程序执行的顺序。编写分支结构的程序主要在于正确使用转移指令,确定好分支条件。E_mail:zht_sir@126.comAuthor:Zhanghaitao6第4章MCS-51单片机汇编语言程序设计例4-3:•编制程序使y按下式赋值:0,10,00,1xxxyE_mail:zht_sir@126.comAuthor:Zhanghaitao7第4章MCS-51单片机汇编语言程序设计例4-4:散转程序设计E_mail:zht_sir@126.comAuthor:Zhanghaitao8第4章MCS-51单片机汇编语言程序设计§4-4循环结构的程序循环程序是强制CPU重复执行某一指令序列的一种程序结构形式。循环结构程序简化了程序书写,减少了内存占用空间。循环结构的程序一般由5部分组成:初始化,循环体、循环修改、循环控制和结束部分。E_mail:zht_sir@126.comAuthor:Zhanghaitao9第4章MCS-51单片机汇编语言程序设计§4-4循环结构的程序循环控制置初值循环体循环修改结束未完(a)单重循环流程图外循环置初值内循环置初值内循环体内循环控制外循环体外循环控制结束未完未完(b)双重循环流程图E_mail:zht_sir@126.comAuthor:Zhanghaitao10第4章MCS-51单片机汇编语言程序设计例:1、多个单字节数据求和。2、设在DAT开始的片内RAM中存放8个无符号字节数,找出最大值,并暂存在A中。3、测试字符串的长度,字符串起始地址50H,以回车(0DH)结束。4、单片机晶振12MHz,设计软件延时程序,延时1ms。5、冒泡排序(从小到大),数据其实地址为30H,共10个字节。E_mail:zht_sir@126.comAuthor:Zhanghaitao11第4章MCS-51单片机汇编语言程序设计例:课堂练习:6、10个数,去掉一个最大值、一个最小值,求剩余8个数的平均值。7、试编程把以2000H为首地址的连续50个单元的内容按升序排列,存放到以3000H为首地址的存储区中。E_mail:zht_sir@126.comAuthor:Zhanghaitao12第4章MCS-51单片机汇编语言程序设计§4-4查表程序查表可以完成数据转换、补偿和计算功能。例如查表法是对一些复杂的函数运算(如sinx)等,事先把其全部可能范围的函数值按一定的规律编成表格存放在计算机的程序存储器中。当用户程序中需要用到这些函数时,直接按编排好的索引值(或程序号)寻找答案。查表程序指令用MOVCA,@A+DPTRMOVCA,@A+PCE_mail:zht_sir@126.comAuthor:Zhanghaitao13第4章MCS-51单片机汇编语言程序设计例:8、已知数据0~9的平方,设变量x的值在累加器A中,查表后求x2的值放回累加器,试编制程序。E_mail:zht_sir@126.comAuthor:Zhanghaitao14第4章MCS-51单片机汇编语言程序设计例:课堂练习:9、设计一个将十六进制数转换成ASCII码的子程序。设十六进制数存放在R0的低4位,要求转换后的ASCII码送回R0中。10、设片内RAM中以20H开始的单元,连续存放10个非压缩BCD码,试将其转换成ASCII码,存放到片内以50H开始的单元中。E_mail:zht_sir@126.comAuthor:Zhanghaitao15第4章MCS-51单片机汇编语言程序设计§4-5子程序设计在实际问题中,常常会遇到在一个程序中有许多相同的运算或操作,例如多字节的加、减、字符处理等。如果每遇到这些运算和操作,都从头做起,则使程序非常繁琐且浪费内存。因此在实际应用中,通常把这些多次使用的程序段,按一定结构编好,存放在内存中,当需要时,程序可以去调用这些独立的程序段。E_mail:zht_sir@126.comAuthor:Zhanghaitao16第4章MCS-51单片机汇编语言程序设计§4-5子程序设计1.给每个子程序赋予名字;2.现场保护与恢复;3.参数的正确传递;4.子程序说明;E_mail:zht_sir@126.comAuthor:Zhanghaitao17第4章MCS-51单片机汇编语言程序设计例:11、用程序实现y=x12+x22。设x1、x2均小于10,x1存在片内RAM31H单元中,x2存在32H单元中,把y存入33H单元中。1.工作寄存器传递参数E_mail:zht_sir@126.comAuthor:Zhanghaitao18第4章MCS-51单片机汇编语言程序设计例:12.将片内RAM中30H单元开始的10个数据取反后送到片内RAM中40H开始的单元中。2.指针寄存器传递参数13.将R1中的低半字节(低4位)一个十六进制数转换为ASCII码,再放回R1。3.用堆栈传递参数E_mail:zht_sir@126.comAuthor:Zhanghaitao19第4章MCS-51单片机汇编语言程序设计§4-6算术逻辑处理程序4-15、两个双精度(8字节二进制数)相加1.多字节二进制数加法4-16、BCD码的加数与被加数放于ADR1和ADR2开始的片内RAM中,从低位字节到高位字节一次排序存放,字节数据N。设计程序时,用R1做加数的指针,R0做被加数的指针,同时为“和”的指针,字节数放在R3中。2.多字节压缩BCD码相加E_mail:zht_sir@126.comAuthor:Zhanghaitao20第4章MCS-51单片机汇编语言程序设计§4-6算术逻辑处理程序4-17.8字节数据存放在片内RAM60H开始的地址区间,要求取补后放回原地址,起始地址为ADR,字节数为N。3.多字节数求补E_mail:zht_sir@126.comAuthor:Zhanghaitao21第4章MCS-51单片机汇编语言程序设计§4-6算术逻辑处理程序4-18.假设自P0口输入8个数据,已经存在片内RAM60H开始的单元中,求出这八个数据平均值,并将商放在R3、R4中。4.除以2的倍数的处理4-19.设被乘数已经在R5、R4中,乘数已在R3、R2中,4个字节的乘积存放在ADR指出的片内RAM的连续4个单元中,地地址存放积得低位。5.双字节无符号整数相乘E_mail:zht_sir@126.comAuthor:Zhanghaitao22第4章MCS-51单片机汇编语言程序设计§4-7数制转换程序常见的数制转换主要有二进制数与十进制数之间的转换,二进制与十六进制之间的转换4.20将R3中的二进制数转换为非压缩BCD数,存放在片内R0指向的单元,结果放在60H开始的单元中。1.二进制数转换为十进制数E_mail:zht_sir@126.comAuthor:Zhanghaitao23第4章MCS-51单片机汇编语言程序设计§4-7数制转换程序4.21设待转换的16位二进制数C054存放在30H开始的单元中,将其转换结果存放在50H开始的单元。2.双字节二进制数转换为压缩BCD码4.22设待转换数据放在R5(高字节)、R4(低字节)中,转换结果放回原处。3.十进制数转换为二进制数E_mail:zht_sir@126.comAuthor:Zhanghaitao24第4章MCS-51单片机汇编语言程序设计§4-7数制转换程序4.23单字节二进制数转换为2个十六进制ASCII码3.二进制数转换成十六进制数的ASCII码4.24设R0指向片内RAM区,存有20(R3)个十六进制数的ASCII字符串,将ASCII码转换成为十六进制数(R1),然后两两组合成一个字节。4.ASCII字符串转换成为十六进制数,两两组合成一个字节E_mail:zht_sir@126.comAuthor:Zhanghaitao25第4章MCS-51单片机汇编语言程序设计
本文标题:单片机原理及应用课件(第4讲)
链接地址:https://www.777doc.com/doc-4675311 .html