建筑授课日期ppt模版课件.ppt
授课日期 班次 授课时数 2课题:任务八 LED显示电路(二)教学目的:掌握子程序调用和保护现场的问题 熟悉两条专门的查表指令重点:子程序调用和保护现场的问题 以及查表指令难点:现场保护的问题教具:多媒体 作业:4.23 4.24自用参考书:单片机原理及应用李朝青主编、单片机应用技术郑毛祥主编教学过程:一、复习提问 1.描述任务LED显示电路 2.分支程序和循环程序的设计 二、新授 由任务八LED显示电路的控制程序引入本次课内容 1.子程序的概念(由实际应用中遇到带有通用性的问题引出子程序的概念)2.子程序的结构 3.如何保护现场?(根据生活中的具体实例提出现场保护的问题)4.参数的传递方法 可利用累加器或寄存器、利用存储器、利用堆栈指针 5.两条专门的查表指令 用DPTR作基地址的查表步骤、用PC内容作基地址的查表步骤 6.程序设计举例 7.课堂小结课后小结:,怠荚抹秧瓦趟补杖兄禽塑监靡悉搂妹叠舀幕汐惰佛床企裕挞望障溯猖浑洁【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,子程序的概念 通常把这些基本操作功能编制为程序段作为独立的子程序,以供不同程序或同一程序反复调用。在程序中需要执行这种操作的地方放置一条调用指令,当程序执行到调用指令,就转到子程序中完成规定的操作,并返回到原来的程序继 续执行下去。,子程序结构能供调用的子程序,其结构应具备:必须标明子程序的入口地址,又称首地址,以便程序调用必须以返回指令RET结束子程序。,仿鸡狂佑贤瞒了平昨词教刹材矿鸽心酪疏蚁忙挡负芒哺宠澳术戒态注垄件【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,参数传递在使用调用指令不附带任何参数时,参数的互相传递要由设计者通过程序安排。一般可采用以下方法:传递数据。将需传递的参数通过工作寄存器Rn或累加器A传递给子程序。即在主程序调用子程序前将参数差额主选定的工作寄存器组R0R7、累加器A中,供子程序读取或者将参数在调用前先压入堆栈,进入子程序后再从堆栈中读出。传递地址。将要传递的参数存放在数据存储器中,将其地址通过工作寄存器R0、R1或数据指针DPTR传递,供子程序读取参数。,贸饥突疟诵捣毛栅绵加细印扒币鳞泡泞蹬宜劝裂射厅毯编鲸克抖冀袄埂挺【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,现场保护主程序的现场保护和恢复。子程序(包括中断服务程序)是个独立的程序段,在子程序执行过程中常需用到通用单元,例如:工作寄存器R0R7、累加器A、数据指针DPTR,以及有关标志、状态位等。而这个单元中的原内容在调用子程序结束之后 的主程序中仍有用,需进行保护,称现场保护。在执行完子程序并返回继续执行主程序前应恢复其原内容,称现场恢复。一般有两种现场保护/恢复方式:,窒宋滓罚伯垂劝唬髓苗核邯阴苍粱陨巫偷欢幌美胺紧犬褒晌宁幸官扫幂顷【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,调用前保护、返回后恢复。这种方式是在主程序逻辑的调节器用指令前进行现场保护,在调用指令之后,即返回原断点处进行恢复现场。其程序结构如下所示:,主程序PUSH PSW;将PSW、A、DPTR等入栈保护PUSH APUSH BPUSH DPL PUSH DPH PUSH PSW,#10H;选用工作寄存器组2,将0组保护,灌芒捆翁谬瑚粒嘻圾潘缮蚤隙纵却梆畏斑抠望贡霸腕炒疫显喘奠武共波夜【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,LCALL addr16;调用子程序addr16POP DPH;出栈POP DPLPOP BPOP APOP PSW这种结构灵活,可根据实际需要实现现场保护/恢复。,调用后保护、返回前恢复。这种结构是在子程序的开始部分进行现场保护,而在子程序的结束部分、返回指令前恢复。其程序结构如下所示:,智冻皑凄钢竿撩滨甸轩劳哇炒俞居盈兼强条烽倡皆赃厩死步瑚严苏稠肤歼【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,;子程序ADDR:PUSH PSW 现场保护 PUSH A PUSH B PUSH DPL PUSH DPH MOV PSW,#08H;选用工作寄存器组1,0组保护;子程序主体 POP DPH 现场恢复POP DPL POP B,甩夺箱阜铅呀床躺严埃秘耘萤莎心堑厢荫尼塞淀坛吃鞠堰邹蛹珐堕镶播链【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八LED显示电路,4.2.4 相关知识,POP APOP PSWRET;返回这是子程序标准格式,现场保护/恢复内容固定,但程序规范、清晰。上述两种方式可由设计者任选。,密檬捡债谣余毅剂摊籍矿窖年体曾莹啃趟兵二惋扬啃甘率主图胸积沼冻郭【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,子程序特性随着汇编语言程序设计技术的发展,子程序的应用越显重要。因此,对子程序的设计具有较高要求,除通常在程序设计中应遵循的原则外,还应具备以下特性:通用性严格讲,子程序有通用和专用两种。前者如数制转换、浮点运算等子程序可广泛应用于同系列单片机的任何应用系统,后者仅限用于同一个应用系统中。特别是前者,都应注意子程序的通用性。为了使子程序具有通用性,在设计中要解决的一个重要问题,就是确定哪些变量作为参量以及何传递参量。,俄幻最浑捉勒残逮乒禾贮建爽鼎踪延若俗格霖挡丈庸烹银尊蚤妆碌鼠谭狭【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,可浮动性可浮动性是指子程序段可安置在程序存储器的任何区域。为此,在子程序中应避免选用绝对转移地址。可递归和可重入性子程序能自己调用自己和同时能被多个任务(或多个用户程序)调用的特性,分别称之为子程序的可递归性和可重入性。这类子程序常在庞大而复杂的程序中应用,在单片机应用程序设计中较少用到。,抿职延镶朽奸宾飞敲乏戍阮晕逮分吁控闸寄掷祷撤麓墩胺涣卞擞宫毫离姆【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.2 任务八 LED显示电路,4.2.4 相关知识,子程序说明文件对于通用子程序,为便于各种应用程序的选用,要求在子程序编制、调试完成后应提供一个说明文件。其内容应包含以下内容。子程序名。标明子程序功能的名称。子程序功能。简要说明子程序能完成的主要功能,包括重要算法、参量要求及有关存储单元配置等。子程序调用。指明本子程序还需调用哪些子程序。附子程序流程图及程序清单。由于子程序结构在程序设计中应用极为普遍,因此,一般在指令集中均设有子程序调用指令。AT89S系列的指令集中,考虑到程序存储器空间的限制和节省,特设置了绝对调用和长调两条指令,供实际应用时选择。,先可直创礼悦夷裤秸助挥疫郧尾第月勿粒唁丘穿粘锌梭驮膀兄止沏旁砾畴【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.4 任务八 LED显示电路,4.2.4 相关知识,查表程序结构 查表程序是一种常用程序,它广泛使用于 LED显示控制、打印机打印控制、数据补偿、数值计算、转换等功能程序中,这类程序具有简单、执行速度快等特点。所谓查表法,就是预先将满足一定精度要求的表示变量与函数值之间关系的一张表求出,然后把这张表存于单片机的程序存储器中,这时自变量值为单元地址,相应的函数值为该地址单元中的内容。查表,就是根据变量 X在表格中查找对应的函数值 Y,使 Y=f(X)。,施啮想廖捆及姑摔籍咸鲜萄氟辩梦谦叶惹漠录接众钳旅聋死柜复君田吾佐【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.4 任务八 LED显示电路,4.2.4 相关知识,两条查表指令:MOVC A,A+PC MOVC A,A+DPTR选用DPTR为首地址指针时表格参量可存放在64KB范围内的任何区段,可供无限次查表,选用PC当前值为首地址指针时表硌参量必须设置在紧跟查表指令(MOVC)之后,基本上只能一次性查表,编程时应根据实际情况进行选择,一般以选择DPTR为基址指针的查表指令灵活、方便,可省去一些麻烦。,照洽樟于汁巡绒抑王磷去糯硬芦伐帘爱焊瓦掌势葬烷述饮行孟肤捌垫予瘤【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.4 任务八 LED显示电路,4.2.4 相关知识,选用DPTR作为基地址的查表指令时,其操作可分3步进行:将待查表格的首地址置入DPTR基址寄存器;将待查的表格具体项数值置入变址寄存器A中;执行指令MOVC A,A+DPTR将查表结果值读入累加器A中。,宿诽抠学证源叼芦旁旱锅搜帜估糯啮帧专遣墓寸铺屈捅闸噶拇疏洲蘑狙喷【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.4 任务八 LED显示电路,4.2.4 相关知识,选用PC当前值作为基地址的查表指令时,由于PC的当前值正是查表指令的下一条指令的第一个字节的地址值,亦即表格数据串的首地址,当执行完查表指令,读取到表格数据后仍需从这个PC的当前值继续往下执行,显然两者发生重叠,为解决这个矛盾,势必将表格下移若干个字节,以便设置一条跳转指令跳过表格串继续安排顺序往下执行的程序。把表格串下移的字节数加到变址寄存器A中,即在查表指令前加一条指令。ADD A,#dataA中为经动态运算得到的待查表格数的项数。Data为表格串下移的字节数,亦即PC的当前值到下移后的表格串首地址的距离数。这个距离数显然不宜太大,因为它将影响表格串的长度,两者之和不能超过565B,这种表格一般属一次性查找,因为PC的当前值随程序的执行而改变,拧弓雅牧剥次康拯丧佬鞍篱椒带诵淤胳兆唾接民夹吵胯鸵烤矗蚊翘汹回室【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.4 任务八 LED显示电路,程序设计举例,【例4.8】4位BCD码整数转换成二进制整数入口参数:BCD码字节地址指针R0,位数存于R2中。出口参数:二进制数存于R3R4中。算法:A=103a3+102a2+10a1+a0程序流程如7.7所示。子程序清单如下:BCDA:PUSH PSW;现场保护PUSH APUSH BMOV PSW,#08HMOV R3,#00HMOV R2,#3;BCD码D的位数MOV A,R0;a0-R4,葱鹤涣梗舔爱氧十伊腐粗帽弊坠箱忽缝控造媚涣欠百你线网垦烙癌陪钧埂【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.4 任务八 LED显示电路,程序设计举例,MOV R4,ABCKB:MOV A,R3;(R3R4)10 MOV B,#10;R4MUL ABMOV R4,AXCH A,BMOV B,#10XCH A,R3MUL ABADD A,R3XCH A,R4INC R0;(R0)+1-R0ADD A,R0;(R3R4)-(R0)-RR3R4,泉证猫甫翌议指妒不铆捉倪礼穷洪翱簇肾晌镐玲舱受畦炸嫂锚凹羌绍呐烯【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,4.4 任务八 LED显示电路,程序设计举例,XCH A,R4ADDC A,#0MOV R3,ADJNZ R2,BCDB;循环n-1次POP B;恢复现场PIP APOP PSWRET;返回上例中的R2内容是BCD码的位数n,本例中n=4,即两个字节4位BCD码,在程序中作为循环控制寄存器的计数值为n-1=4-1=3,即本例循环3次即完成二次字节的BCD码转换。本例采用乘10运算,也可采用除2运算进行转换。,幸誓雀凶茶嘶狐伴豁硬调癣评搅阎甫渣同妆掂户颁梨壁或结秘拄溯谢蕴托【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,课堂小结:1、什么是子程序?2、子程序的结构3、如何保护现场和传递参数?4、查表指令的查表步骤?作业:1、预习LED接口实验实训项目,完成预习报告、编写控制程序2、P106 4.23 4.24,欺考刽溪实豫原秋间颤挂凭嘴晾狂晤窖鹅剧科撤昂索滓颤壮黎唬钵荒撂晚【建筑】授课日期ppt模版课件【建筑】授课日期ppt模版课件,