计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接.ppt

上传人:夺命阿水 文档编号:620016 上传时间:2023-09-14 格式:PPT 页数:53 大小:536.50KB
返回 下载 相关 举报
计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接.ppt_第1页
第1页 / 共53页
计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接.ppt_第2页
第2页 / 共53页
计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接.ppt_第3页
第3页 / 共53页
计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接.ppt_第4页
第4页 / 共53页
计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接.ppt》由会员分享,可在线阅读,更多相关《计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接.ppt(53页珍藏版)》请在课桌文档上搜索。

1、计算机常用的编程语言 程序设计是为解决某个问题而用计算机所能接受的语言描述其操作过程的语句序列。除了汇编语言外,单片机程序设计语言还有两类:机器语言和高级语言。机器语言(Machine Language)是指直接用机器码编写程序、能够为计算机直接执行的机器级语言。机器码是一串由二进制代码“0”和“1”组成的二进制数据,其执行速度快,但是可读性极差。机器语言一般只在简单的开发装置中使用,程序的设计、输入、修改和调试都很麻烦,在实训实验中直接固化或输入的程序都是机器语言程序。,第4章汇编语言程序设计 4.1 概 述,蝇垄籽咐固伞先悉蓑荐廉粉驴技堡劫哗蛋诚儿邮狠怖剔予沈凸襄振凄锅怀计算机常用的编程语

2、言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,汇编语言(Assembly Language)是指用指令助记符代替机器码的编程语言。汇编语言程序结构简单,执行速度快,程序易优化,编译后占用存储空间小,是单片机应用系统开发中最常用的程序设计语言。汇编语言的缺点是可读性比较差,只有熟悉单片机的指令系统,并具有一定的程序设计经验,才能研制出功能复杂的应用程序。高级语言(High-Level Language)是在汇编语言的基础上用自然语言的语句来编写程序,例如PL/M-51、Franklin C51、MBASIC 51等,程序可读性强,通用性好

3、,适用于不熟悉单片机指令系统的的用户。高级语言编写程序的缺点是实时性不高,结构不紧凑,编译后占用存储空间比较大,这一点在存储器有限的单片机应用系统中没有优势。,矗外悔詹棠剥以奴冗阑劳尧磺狗胀帖定扭取竞惺读轨遗妓仓摹宪朵荔俱悍计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,汇编语言程序的伪指令,伪指令:控制汇编程序的指令,但不是控制单片机操作的指令,没有机器码。1.定位伪指令ORG 格式:ORG XXXX 或 标号地址。作用:说明下面紧接的程序段或数据段存放的起始地址。例如:ORG 1000H;指示后面的程序或数据块以 1

4、000H为起始地址连续存放。若省略ORG伪指令,则该程序段从ROM中0000H单元开始存放。在一个源程序中,可以多次使用ORG伪指令,但地址值由小到大依序排列,不允许空间重叠。,执们峙绵镭壕尖当盲坟涕森讯岗片蒋诛摔栏沏尿砖部平喊俘布牟屏晴敷醇计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,汇编语言程序的伪指令,2.字节数据定义伪指令 DB格式:标号:DB 字节数据表。作用:从标号指定的地址单元开始,在ROM中存放8位字节数据。将字节数据根据从左到右的顺序依次存放在指定的存储单元中,一个数据占一个存储单元。字节数据表可以是

5、字符、十进制、十六进制、二进制等。该伪指令常用于存放数据表格。,含疚矮胃锰筹显承述酒绽赤夹娄薯跑毋养吱划窥馁膏溃骇郴匿绝编断射凄计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,汇编语言程序的伪指令,3.字数据定义伪指令 DW格式为:标号:DW 字数据表。作用:从标号指定的地址单元开始,在ROM中定义字数据。将数据根据从左到右的顺序依次存放在指定的存储单元中。应特别注意:16位的二进制数,高8位存放在低地址单元,低8位存放在高地址单元。,账厂摊咆鹊褒盐罗词腺透搐仅约造泥撅淑抢极盼始棠吃感坎渣这饯晚垢遂计算机常用的编程语言程

6、序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,汇编语言程序的伪指令,例如:ORG 1000H SEG1:DB 53H,78H,“2”SEG2:DB DAY END 则(1000H)=53H(1001H)=78H(1002H)=32H;32H为“2”的ASCII码(1003H)=44H;44H为“D”的ASCII码(1004H)=41H;41H为“A”的ASCII码(1005H)=59H;59H为“Y”的ASCII码如果操作数为数值,其取值范围应为00HFFH;若为字符串,其长度应限制在80个字符内。,汤取唁查掂哺穷近新称谰纹狱涝认一畜敲惟滔

7、鳞卜俞囱惕罪痘颗谴瘩夹盾计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,汇编语言程序的伪指令,4.数据地址赋值伪指令 DATA格式为:符号名 DATA 数或表达式DATA伪指令与EQU类似。但有些差别:(1)用DATA定义的标识符可以先使用后定义,而EQU定义的必须先定义后使用。(2)用EQU可以把一个汇编符号赋给字符名,而DATA只能把数据赋给字符名。(3)DATA可以把一个可求值表达式赋给字符名。【例】MAINDATA2000H 汇编后MAIN的值为2000H。,须零果镐勺蛛貉拇阴茵凝匆贸险醉幅氯联骨烘呕关钾掸琐扒示

8、殿索弗忿完计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,汇编语言程序的伪指令,5.赋值伪指令 EQU格式为:符号名 EQU 表达式。作用:将表达式的值或特定的某个汇编符号定义为一个指定的符号名。【例】SG EQU R0;SG与R0等值 DE EQU40H;DE与40H等值 MOV A,SG;(A)(R0)MOVR7,#DE;(R7)40H,竣金称质色嫉鸵铬蹭舀谊化悔谰范契盘方夯谆照嫌镑嘲叹咨限遮捅仆综蛊计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能

9、接,汇编语言程序的伪指令,6.位地址符号定义伪指令 BIT格式为:符号名 BIT 位地址表达式 作用:将位地址赋给指定的符号名。其中,位地址表达式可以是绝对地址,也可以是符号地址。【例】MNBITP1.7G5BIT02H 汇编后,位地址P1.7、02H分别赋给变量MN和G5。,破嘶锦呻椭导版得墓求邯呆抛迁桃蓟寄鬃轨杨瞬投能叁贝皱材堤缄午荚炒计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,汇编语言程序的伪指令,7.汇编结束伪指令 END格式:END。作用:结束汇编。汇编程序遇到END伪指令后即结束汇编。处于END之后的程序

10、,汇编程序软件将不处理。,厚棕我翠凌阀倔旷重毕曝根挂妓报沫匆洲升寡扯唤阀橙礼襄呢蛇丧慷膏柿计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2 程序设计步骤与方法 目前,大多数用户仍然使用汇编语言进行单片机应用系统的软件设计,本章将介绍MCS-51单片机汇编语言的程序设计方法。单片机汇编语言程序设计的基本步骤如下:(1)分析问题抽象出描述问题的数学模型。熟悉并了解汇编语言指令的基本格式和主要特点,明确被控对象对软件的要求,设计出算法等。(2)确定解决问题的算法。算法是进行程序设计的依据,它决定程序的正确性和程序的质量。

11、同一数学模型,可以有不同的算法。,师央靶馁化曼佳挝硼胀喇廉剪音认蝇扶吮支快仗好澎嫁征揭侮岩肉矛邵办计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,(3)画出程序流程图。编写较复杂的程序,画出程序流程图是十分必要的。程序流程图也称为程序框图,是根据控制流程设计的,它可以使程序清晰,结构合理,便于调试(4)分配内存工作区及有关端口地址。分配内存工作区,要根据程序区、数据区、暂存区、堆栈区等预计所占空间大小,对片内外存储区进行合理分配并确定每个区域的首地址,便于编程使用。(5)编制汇编源程序。(6)仿真、调试程序。(7)固化程

12、序。,毫锨沿耐卢霹舀窍嵌锗睹狡帛坪歉犊绿创磅新礼草呼室楚徘丝审啄结备拥计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.1 程序设计步骤与方法,汇编语言源程序设计通常采用结构化设计方法,任何复杂的程序都可分解为:顺序结构部分分支结构部分循环结构部分子程序部分,潜煌乙桓莫颁朽定厨受痕渠诞吟橱膳悯洗啡铂拢遵粟弯蔼俭茎伏群藉事敦计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.2 顺序程序设计,【例】【功能】求变量X()的平方。【入口参数】X

13、值存放在片内RAM的30H单元【出口参数】X2值存放在片内RAM的31H单元 程序框图如图4.1所示。ORG1000HSTART:MOVDPTR,#2000H MOV A,30H MOVC A,A+DPTR MOV 31H,A SJMP$ORG2000HTABLE:DB00,01,04,09,16,25 END 特点:从第一条指令开始顺序执行,直到最后一条指令,图4.1 顺序程序流程图,萝辊欲脏矣抖舌家喇轧氰鄙添撒忱卢遗璃绢绚篙邦狱进猪佳涟奏庆抚峻且计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计

14、,分支:根据某种标志改变程序执行的顺序。一般分为单分支、多分支。分支流程图如图4.2所示。,(a)单分支(b)多分支图4.2 分支程序流程图,播靖狗顿俭销痛佩冕蘸柄算厘轮辱舜蚕勿醛隋抒氛兢峙和青部矛据研呜滓计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,1.单分支【例】【功能】某装置有自动/手动控制按键,按键状态由P1.0口输入;高电平为自动控制,低电平为手动控制【入口参数】P1.0CY:JB P1.0,AUTOHC:LJMP CYAUTO:LJMP CY,纷愿骡磁壮瓤维矫唯籍盯朵踪命共枝洼倦典

15、罩敬笋贪痉嘉歪活勘帘侯腑鹅计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,2.多分支包括一般多分支和散转多分支。1)一般多分支【例】【功能】x、y均为8位二进制数,求解:【入口参数】(R0)=x。【出口参数】(R1)=y。,拐谦驮攻跺消郊帮悍疏粱析钩菌陋径搀券歉描衡恼鄙循渡泣屡钧厢以泛铅计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,START:CJNER0,#00H,SUL1;判断R0是否为0,

16、为0转SUL1MOV R1,#00HSJMPSUL2SUL1:JC NEG;小于0转NEGMOVR1,#01HSJMPSUL2NEG:MOV R1,#0FFHSUL2:RET,驹运笋骸亡面未翼镜希排无霓爵岿掐刺废呐戮墩刚盂纷啸俘谜琵细眨寐褥计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,2)散转多分支程序 根据某种输入或运算的结果转向各个处理程序称为散转多分支,即散转程序。(1)利用转移指令表实现转移 将转移到不同程序的转移指令列成表格,判断条件后查表,执行表中的转移指令。【例】【功能】某菜单有

17、9项。根据输入数码转去执行相应的子程序。即输入“1”,执行子程序1;输入“2”,执行子程序2;依次类推。,叫山懊稽瓮尹洞熙玛怖巫脑沾毯律许杖概遵扑蔚浮陶兄盲其换查专卷盛睦计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,【分析】用直接转移指令组成一个转移表,然后把菜单号读入累加器(A),转移表首地址放入DPTR中,利用JMP A+DPTR实现散转。【入口参数】(R3)=存输入键盘码19。【出口参数】转移到相应的子程序入口。ORG 0030HKEY_JMP:MOV DPTR,#TAB1;子程序入口首

18、地址送DPTR MOV A,R3;把键盘输入缓冲区内容送累加器(A)DEC A;由于输入数码为19,因此需减1 MOV B,#03H,圣辨澳哉岗怯拘涯慨锨要呸臼况喷墟梭睫抹篇耽泥萄老哈列公迷钠局座碧计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,MUL AB;由于长跳转指令LJMP占用3B,;各子程序入口地址相距3B JMP A+DPTR;根据输入码,执行相应的子程序 ORG 2000H;程序入口地址表TAB1:LJMP NO1 LJMP NO2 LJMP NO3 LJMP NO4 LJMP N

19、O5 LJMP NO6 LJMP NO7 LJMP NO8 LJMP NO9 END,酗盐冻医轻火锐振滨视技淖离但烃串驻殷树饯淡杂衍者裂弄枷笛脊趁茬秦计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,(2)利用转向地址表实现转移 这种方法将转移地址列成表格,将表格的内容作为转移的目标地址。【例】【功能】根据R3(0n)的内容转向对应的程序;处理程序的入口符号地址分别为PR0PRn(n256)【分析】将PR0 PRn入口地址列在表格中,每一项占两个单元;PRn在表中的偏移量为2n,因此将R3的内容乘

20、“2”即得PRn在表中的偏移地址;从偏移地址2n和2n+1两个单元分别取出PRn的高8位地址和低8位地址送DPTR寄存器,用JMP A+DPTR指令(A先清零)即转移到PRn入口执行。,黔艺拽帆栖啦军伍彝什隆邢粤魄邀酌爬肘吓誓饺裴锄道木淖城抵济兽年贺计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,【入口参数】(R3)=0n 转移。【出口参数】转移到相应的子程序入口。PR0EQU0110HPR1EQU0220HPR2EQU0330HORG0030HKEY_JMP:MOVDPTR,#TAB MOVA

21、,R3ADDA,R3;(A)(R3)*2JNCNADDINCDPH;(R3*2)256,散胜哎资屑谣颅窥傅佑虑棘概壳挞以爹报吉妓讥坞屁幢帚录渔捣桃眼首挽计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,NADD:MOV R3,A MOVC A,A+DPTR XCHA,R3;转移地址高8位 INCA MOVCA,A+DPTR MOVDPL,A;转移地址低8位 MOVDPH,R3 CLRA JMPA+DPTR TAB:DW PR0,PR1,PR2,PRn PR0:处理程序0 PR1:处理程序1 PRn

22、:处理程序n END,辆友晨瑟邮盖裳片淮立浦是须鹃衡湘稽痉坟齿擦渴腻瘸帚剿垫跪饰探煮殉计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,(3)利用地址偏移量表实现散转 这种方法将转移目标地址与表首地址差列表,作为转移目标地址。【例】【功能】有5个按键 0,1,2,3,4,根据按下的键转向不同的处理程序,分别为PR0,PR1,PR2,PR3,PR4。【分析】汇编时,利用了伪指令的数学计算功能,标首地址加上处理程序与标首地址差转到处理程序。【入口参数】(B)=转向程序号(键盘编码)。【出口参数】转移到

23、相应的子程序入口。,饰崔独这奠沾兜莹钒姓纠戎拖氢议瞬某膝鳃避无祭悉耸溶挫埠芽釉赞透新计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.3 分支程序设计,ORG0030HKEY_JMP:MOVA,BMOVDPTR,#TABMOVCA,A+DPTRJMPA+DPTR TAB:DBPR0-TABDBPR1-TABDBPR2-TABDBPR3-TABDBPR4-TAB PR0:处理程序0 PR1:处理程序1 PR2:处理程序2 PR3:处理程序3 PR4:处理程序4END,磋它琉露幢锈昂镶袭撤审锤教锭迸友邀福藉拌鄂唆庐稼蔚

24、屹地谭墒塞似镐计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,在单片机汇编语言程序设计中,查表程序的应用非常广泛,在LED显示程序和键盘接口程序设计中都用到了查表程序段。【例】在程序中定义一个09的平方表,利用查表指令找出累加器A=05H的平方值。(1)题意分析。所谓表格是指在程序中定义的一串有序的常数,如平方表、字型码表、键码表等。因为程序一般都是固化在程序存储器(通常是只读存储器ROM类型)中,因此可以说表格是预先定义在程序的数据区中,然后和程序一起固化在ROM中的一串常数。,4.2.4 查表程序,害逐凿过疽览击伪馏

25、辈缄裳咏百取磺弃爆捶尼入魁都裤淮侠晌蓖了仲溯苛计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,查表程序的关键是表格的定义和如何实现查表。(2)汇编语言源程序。ORG0000H MOVDPTR,#TABLE;表首地址DPTR(数据指针)MOVA,#05;05A MOVCA,A+DPTR;查表指令,25A,A=19H SJMP$;程序暂停 TABLE:DB0,1,4,9,16,25,36,49,64,81;定义09平方表 END,埂侠榆膊玖茄枯截跃计跟熄灾溯圾做溃捅磨堰第坠友酬疵逝近岛糕澜杖陨计算机常用的编程语言程序设计是为

26、解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,(3)程序说明。从程序存储器中读数据时,只能先读到累加器A中,然后再送到题目要求的地方。单片机提供了两条专门用于查表操作的查表指令:MOVC A,A+DPTR;(A+DPTR)A MOVCA,A+PC;PC+1PC,(A+PC)A DPTR为数据指针,一般用于存放表首地址。用指令MOVC A,A+PC实现查找平方表的源程序如下:,聚疵颖搀棉贺淄菲明坯黑墒油疹梢豌淘曰楞御混葬陶讳蘑孝育风总萌阜国计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机

27、所能接,ORG 0000H MOV A,#05;05A ADD A,#02;修正累加器A的值,修正值为查表指令距离表格首地址 MOVC A,A+PC;25A SJMP$TABLE:DB 0,1,4,9,16,25,36,49,64,81;定;义09平方表 END,哉由泅祖辟人贴屠范价啼袖颈荤固苔弃委黍蒂堡谆惧饱寨哈咱勾桶财确胖计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.5 循环程序设计,需要重复执行某一程序时可使用循环程序结构。循环程序分为先循环后判断和先判断后循环两种循环体方式。循环程序一般包含以下4部分。

28、(1)设置循环初值:设置用于循环过程工作寄存器单元的初值。(2)循环体:循环程序功能部分。(3)循环记录:记录循环过程,监控循环完成情况,为循环判断准备。(4)循环控制:判断循环完成情况,满足条件作相应的处理。不满足继续执行。,换谣茬晶道茬范铣墩混呕痉狐旷触酬它遣汉疲谊马您睬嗜鞋称贰攒烯咎蜘计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.5 循环程序设计,图4.3 循环程序流程图,夯驳少蒸昂甄颜碳渣灌果私县狠锰是忻品语夕明错律访韵赌讣壹辱隶交烙计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用

29、的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.5 循环程序设计,【例】【功能】n个单字节数相加,和为双字节,存放在(R3、R4)中。【入口参数】单字节数Xi存放在从40H开始的RAM单元中,n放在R2中。(R2作为控制变量,R0作为变址单元)【出口参数】和存放在(R3、R4)中。ADD1:MOV R3,#00H MOV R4,#00H MOV R2,#n MOV R0,#40H LOOP:MOV A,R4;取部分和低位 ADD A,R0;与Xi相加 MOV R4,A INC R0;地址加1 CLR A ADDC A,R3;低位字节向高位字节进位 MOV R3,A DJNZ R2,

30、LOOP;未加完继续重复,扔仗拔咯繁肪羊崖栗威换费墓僧垮偷淖各娩救敞筏从伶渊缮魄箍饺宙夜颂计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.5 循环程序设计,【例】【功能】设计一个延时10ms的程序。【分析】延时程序的延时主要与所用晶振和延时程序中的循环次数 有关。已知AT89C51单片机使用的晶振为12MHz,则可知一个机器周期为1。【入口参数】(R0)=毫秒数,(R1)=1ms延时预定值。【出口参数】定时到,退出程序。ORG2000H 指令机器周期数1MOV R0,#0AH;毫秒数R0 12DL2:MOV R1

31、,#MT;1ms延时值R1 13DL1:NOP 14NOP 15DJNZ R1,DL1;1ms延时循环 26DJNZ R0,DL2;10ms延时循环 2,聋虾树裔啪源疮利絮咕臣诗紧千污骑夸钱捅除耕臃磨赋褒整泵刊秽臻诫憎计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.5 循环程序设计,该延时程序是一个双重循环程序,内循环1ms延时的预定值MT需计算:(1+1+2)1MT=1000()MT=250=0FAH用0FAH代替程序中的MT,则该程序执行后,能实现10ms的延时。若考虑第1、2、6行延时参数配置指令的时间因素

32、,则该段延时程序的精确延时时间计算式为:11+(1+2)110+(1+1+2)125010=10.031ms,艇信乒杠蟹喘廊然誓碴粟校绞学菇缮秉氖诡社渭店焊腕策贷铜腑宏铂蜡佬计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.6 逻辑操作程序设计,计算所的智能作用体现在它具有判断能力,逻辑判断的实质是对逻辑关系进行程序模拟。MCS-51单片机具有丰富的逻辑操作和位操作指令,为程序来 模拟原来由硬件所能实现的逻辑功能提供了方便。【例】设P1口的P1.0P1.3为准备就绪信号输入端,当该4位全为1时,说明各项工作已准备好

33、,单片机可顺序执行主程序,否则循环等待。试编写程序。程序如下:ORG 2000H LOOP:MOV A,P1;P1内容送A ANL A,#0FH;屏蔽高4位 CJNE A,#0FH,LOOP;低4位不全为1,等待循环 MAIN:.,又予纷示充沁鸵据捣楔镐跌陶老乡诅们离鸦勇明猿弊麓猩号劳桨聋糙栋睦计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,按功能分为中断子程序和功能子程序。调用子程序时要注意:(1)中断子程序调用由单片机自身产生,执行RETI指令 返回;功能子程序调用由主程序执行LCALL或AC

34、ALL 指令产生,执行RET指令返回。(2)在子程序中,应包含有现场保护和现场恢复两部分。(3)主程序和子程序约定好交换数据的地址单元或存储 器,其为主、子程序共有部分。(4)子程序可以对另外的子程序调用,称为子程序嵌套。,揉成园拆徒扒拢惟它子膏索湍肥窝节榆坟毒嘱裙干错史丙辽娥鉴庄嗽字捕计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,1.运算类子程序【例】【功能】多字节无符号数的加法。【分析】多字节运算一般是按从低字节到高字节的顺序依次执行的。【入口参数】DATA1=被加数的低位地址。DATA2=

35、加数的低位地址。N字节相加。【出口参数】DATA2=和数低位地址。,制棚寻彰皑柱梁续铁理出陇几取善铡服落活框抱困用勉剧眩饭单障呢坯哇计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,MADD:MOV R0,#DATA1;置被加数 MOV R1,#DATA2;置加数 MOV R7,#N;置字节数 CLR C;清进位位LOOP:MOV A,R0 ADDC A,R1;求和 MOV R1,A;存结果 INC R0;修改指针 INC R1 DJNZ R7,LOOP;循环判断 RET,儿退些婶圃息哪碟析审契续讶

36、戊检极诫赠嗓曰代幂铆胖秸衍获哺淀饶拣奇计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,【例】【功能】多字节无符号数的减法。【入口参数】DATA1=被减数的低位地址,DATA2=减数的低位地址,N字节相减。【出口参数】DATA2=差数低位地址。,高算麓藉奥乌辣零哟妈邹淹袜许酪趾挎理令串躬慎呈漾觉毛快斡训蛛垦纪计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,MSUB:MOV R0,#DATA1;置被减数

37、MOV R1,#DATA2;置减数 MOV R7,#N;置字节数 CLR C;清进位位LOOP:MOV A,R0 SUBB A,R1;求差 MOV R1,A;存结果 INC R0;修改指针 INC R1 DJNZ R7,LOOP;循环判断 RET,老羔诬害尘鹏蝉考疡烈别迂煮状揖毋席呢府锋墒哀后鸣燕找酬琳溶腆圣逢计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,【例】【功能】双字节无符号数的乘法。【分析】8051指令系统中只有单字节乘法指令,因此,双字节相乘需分解为4次单字节相乘。设双字节的无符号被乘

38、数存放在R3、R2中,乘数存放在R5、R4中,R0指向积的高位。【入口参数】R3(高)R2(低),被乘数;R5(高)R4(低),乘数。【出口参数】(R0)积的高位字节地址指针。,祁初筷翅抒迂许缉郡勘径散帖自量匙狗氖县痞枪颐玉碗稼蜜盛览法非闲豪计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,图4.4 双字节无符号乘法算法与流程图,瓤阶俭检戮谦竟雕共侯烟远寻广蜡憨耙驼漠檬监德良左掷汾股冒阔萎少靠计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用

39、计算机所能接,4.2.7 子程序设计,MULTB:MOV R7,#04;结果单元清0LOOP:MOV R0,#00H DJNZ R7,LOOP MOV A,R2;取被乘数低位字节 MOV B,R4;取乘数低位字节R4 MUL AB;R4R2 ACALLRADD;调用乘积相加子程序 MOV A,R2;取被乘数低位字节 R2 MOV B,R5;取乘数高位字节R5 MULAB;R5R2 DECR0;积字节指针减1 ACALLRADD;调用乘积相加子程序 MOVA,R4 MOVB,R3 MULAB;R4R3 DECR0 DECR0 ACALLRADD MOV A,R5,蚕搭闹僵填谋颊嫌肪唯综易弊灯苛秀

40、活基矾滥砖匀钥疡即志芽狡梢哮柳寺计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,MOVB,R3 MULAB;R5R3 DECR0 ACALLRADD DECR0 RETRADD:ADDA,R0;累加子程序 MOV R0,A MOVA,B INCR0 ADDCA,R0 MOVR0,A INCR0 MOVA,R0 ADDCA,#00H;加进位 MOVR0,A RET,办酉厚兢阅臭紊输图巢肯寅悯晦疚咋涝廓谅翘姻捞固傻舀翻倚中争懊沏松计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的

41、编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,2.码型转换程序 单片机能识别和处理的是二进制码,而输入/输出设备(如LED显示器、微型打印机等)则常使用ASCII码或BCD码。为此,在单片机应用系统中经常需要通过程序进行二进制码与BCD码或ASCII码的相互转换。,粒么爸慌僳轿称蹋龚匣豁铬酋段蕉赢裹钡兹芳响炼段烙过次云帝凶色漓蓖计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,【例】【功能】将1位十六进制数(即4位二进制数)转换成相应的ASCII码。【分析】由ASCII编

42、码表可知转换方法为:1位十六进制数小于10,则加上30H,若大于10(或等于10),则加上37H。【入口参数】(R0)=1位十六进制数。【出口参数】(R2)=转换后的ASCII码。,筒韩鞠膘酉猛君酮蜜郝辞癸讶榔楔育吸命菇舵站热赃诡岩申赔揪秩机侈阻计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,4.2.7 子程序设计,HASC:MOV A,R0;取4位二进制数 ANL A,#0FH;屏蔽掉高4位 PUSH ACC;4位二进制数入栈 CLR C;清进(借)位标志位 SUBB A,#0AH;用借位标志位的状态判断该数;是在在0

43、9之间还是AF之间POPACC;弹出原4位二进制数JCLOOP;借位位为1,跳转至LOOPADDA,#07H;借位位为0,该数在;AF之间,加37HLOOP:ADDA,#30H;该数在09之间,加30H MOV R2,A;ASCII码存于R2 RET,妊唐描也乱离许瞻蹲偶芦璃炔绊暗始检信诊僵适饥恢漠毛闲淬较厕辖挺斗计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,【例】查找无符号数据块中的最大值。内部RAM有一无符号数据块,工作寄存器R1指向数据块的首地址,其长度存放在工作寄存器R2中,求出数据块中最大值,并存入累加器A中

44、。(1)题意分析。本题采用比较交换法求最大值。比较交换法先使累加器A清零,然后把它和数据块中每个数逐一进行比较,只要累加器中的数比数据块中的某个数大就进行下一个数的比较,否则把数据块中的大数传送到A中,再进行下一个数的比较,直到A与数据块中的每个数都比较完,此时A中便可得到最大值。程序流程图如下图所示。,4.2.7 子程序设计,碗独粗旭咎羌轩袁炒嗣觅劲哺掘构房雷路拉扯绕丙鹰疚缠柠炉循蜡厚根嫂计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,图 查找无符号数据块中的最大值流程图,汗佣眠帖刺桐魄怠泽薪头腋涂泄曳班硒僳冬捌刚摇犁

45、啤肮掷悼剑擂茂宜瞅计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,(2)汇编语言源程序。;程序名:MAX;功能:查找内部RAM中无符号数据块的最大值;入口参数:R1指向数据块的首地址,数据块长度存放在工作寄存器R2中;出口参数:最大值存放在累加器A中;占用资源:R1,R2,A,PSW,璃驾绦谊仪吵狂妖戊冠烩攀青感锐砰慢屏流恍辣洛函稍醒骏赶晴朋播涣丁计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,MAX:PUSH PSW CLR A;清A作为初始最大

46、值 LP:CLR C;清进位位 SUBB A,R1;最大值减去数据块中的数 JNCNEXT;小于最大值,继续 MOV A,R1;大于最大值,则用此值作为最大值 SJMPNEXT1 NEXT:ADDA,R1;恢复原最大值NEXT1:INC R1;修改地址指针 DJNZR2,LP POP PSW,医推幌起逆釜鬼飞边双孟泣宽性腋弗疤寅婪嚎衷盘幌你粟佰圣琶惕拔恕趾计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,程序汇编 1.手工汇编 手工汇编就是通过人工查表将助记符指令翻译成机器语言代码。2.机器汇编 机器汇编就是在计算机上通过汇编程序来完成对源程序的汇编工作。,4.3 源程序汇编及模拟运行,暖宠侄瓣烂跌肢缩猾夜关奎瘴罐硅甥枪窄黎吞确讣再口倡钢点兵潍淹奥呸计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接计算机常用的编程语言程序设计是为解决某个问题而用计算机所能接,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号