授课日期 班次 授课时数2 课题:任务八LED显示电路( 教学目的:掌握子程序调用和保护现场的问题 熟悉两条专门的查表指令 重点:子程序调用和保护现场的问题以及查表指令 难点:现场保护的问题 教具:多媒体 作业:4234.24 自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编 教学过程:一、复习提问 描述任务LED显示电路 2分支程序和循环程序的设计 二、新授 由任务八LED显示电路的控制程序引入本次课内容 子程序的概念(由实际应用中遇到带有通用性的问题引出子程序的概念) 2子程序的结构 3如何保护现场?(根据生活中的具体实例提岀现场保护的问题) 4参数的传递方法 可利用累加器或寄存器、利用存储器、利用堆栈指针 5两条专门的查表指令 用DPTR作基地址的查表步骤、用PC内容作基地址的查表步骤 6程序设计举例 7课堂小结 课后小结
授课日期 班次 授课时数 2 课题: 任务八 LED显示电路(二) 教学目的:掌握子程序调用和保护现场的问题 熟悉两条专门的查表指令 重点: 子程序调用和保护现场的问题 以及查表指令 难点: 现场保护的问题 教具: 多媒体 作业: 4.23 4.24 自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编 教学过程:一、复习提问 1.描述任务LED显示电路 2.分支程序和循环程序的设计 二、新授 由任务八LED显示电路的控制程序引入本次课内容 1.子程序的概念(由实际应用中遇到带有通用性的问题引出子程序的概念) 2.子程序的结构 3.如何保护现场?(根据生活中的具体实例提出现场保护的问题) 4.参数的传递方法 可利用累加器或寄存器、利用存储器、利用堆栈指针 5.两条专门的查表指令 用DPTR作基地址的查表步骤、用PC内容作基地址的查表步骤 6.程序设计举例 7.课堂小结 课后小结:
4.2任务八L示电路 4.2.4相关知识 子程序的概念 通常把这些基本操作功能编制为程序段作为独立的子程序,以供不 同程序或同一程序反复调用。在程序中需要执行这种操作的地方放置 条调用指令,当程序执行到调用指令,就转到子程序中完成规定的操 作,并返回到原来的程序继续执行下去。 子程序结构 能供调用的子程序,其结构应具备: ◆必须标明子程序的入口地址,又称首地址,以便程序调用 ◆必须以返回指令RET结束子程序
4.2 任务八 LED显示电路 4.2.4 相关知识 ➢子程序的概念 通常把这些基本操作功能编制为程序段作为独立的子程序, 以供不 同程序或同一程序反复调用。在程序中需要执行这种操作的地方放置 一条调用指令, 当程序执行到调用指令, 就转到子程序中完成规定的操 作, 并返回到原来的程序继续执行下去。 ➢子程序结构 能供调用的子程序,其结构应具备: ❖必须标明子程序的入口地址,又称首地址,以便程序调用 ❖必须以返回指令RET结束子程序
4.2任务八L示电路 4.2.4相关知识 参数传递 在使用调用指令不附带任何参数时,参数的互相传递要由设计者通过 程序安排。一般可采用以下方法: 令传递数据。将需传递的参数通过工作寄存器R或累加器A传递给子程 序。即在主程序调用子程序前将参数差额主选定的工作寄存器组RR7 累加器A中,供子程序读取或者将参数在调用前先压入堆栈,进入子程 序后再从堆栈中读出。 ◆传递地址。将要传递的参数存放在数据存储器中,将其地址通过工 作寄存器R0、R或数据指针DPTR传递,供子程序读取参数
4.2 任务八 LED显示电路 4.2.4 相关知识 ➢参数传递 在使用调用指令不附带任何参数时,参数的互相传递要由设计者通过 程序安排。一般可采用以下方法: ❖传递数据。将需传递的参数通过工作寄存器Rn或累加器A传递给子程 序。即在主程序调用子程序前将参数差额主选定的工作寄存器组R0~R7、 累加器A中,供子程序读取或者将参数在调用前先压入堆栈,进入子程 序后再从堆栈中读出。 ❖传递地址。将要传递的参数存放在数据存储器中,将其地址通过工 作寄存器R0、R1或数据指针DPTR传递,供子程序读取参数
4.2任务八L示电路 4.2.4相关知识 现场保护 主程序的现场保护和恢复。子程序(包括中断服务程序)是个独 立的程序段,在子程序执行过程中常需用到通用单元,例如:工 作寄存器RR、累加器A、数据指针DPTR,以及有关标志、状 态位等。而这个单元中的原内容在调用子程序结束之后的主程 序中仍有用,需进行保护,称现场保护。在执行完子程序并返回 继续执行主程序前应恢复其原内容,称现场恢复。一般有两种现 场保护/恢复方式
4.2 任务八 LED显示电路 4.2.4 相关知识 ➢现场保护 主程序的现场保护和恢复。子程序(包括中断服务程序)是个独 立的程序段,在子程序执行过程中常需用到通用单元,例如:工 作寄存器R0~R7、累加器A、数据指针DPTR,以及有关标志、状 态位等。而这个单元中的原内容在调用子程序结束之后 的主程 序中仍有用,需进行保护,称现场保护。在执行完子程序并返回 继续执行主程序前应恢复其原内容,称现场恢复。一般有两种现 场保护/恢复方式:
4.2任务八L示电路 4.2.4相关知识 ☆调用前保护、返回后恢复。这种方式是在主程序逻辑的调节器 用指令前进行现场保护,在调用指令之后,即返回原断点处进行 恢复现场。其程序结构如下所示: 主程序 PUSH PSW 将PSW、A、DPTR等入栈保护 PUSH A PUSH B PUSH DPL PUSH DPH PUSH PSW,#10H;选用工作寄存器组2,将0组保护
4.2 任务八 LED显示电路 4.2.4 相关知识 ❖调用前保护、返回后恢复。这种方式是在主程序逻辑的调节器 用指令前进行现场保护,在调用指令之后,即返回原断点处进行 恢复现场。其程序结构如下所示: 主程序 PUSH PSW ;将PSW、A、DPTR等入栈保护 PUSH A PUSH B PUSH DPL PUSH DPH PUSH PSW,#10H ;选用工作寄存器组2,将0组保护
4.2任务八L示电路 4.2.4相关知识 LCALL addr ;调用子程序adr16 POP DPH ;出栈 POP DPL POP B POP A POP PSW 这种结构灵活,可根据实际需要实现现场保护/恢复 ☆调用后保护、返回前恢复。这种结构是在子程序的开始部分进 行现场保护,而在子程序的结束部分、返回指令前恢复。其程序 结构如下所示:
4.2 任务八 LED显示电路 4.2.4 相关知识 LCALL addr16 ;调用子程序addr16 POP DPH ;出栈 POP DPL POP B POP A POP PSW 这种结构灵活,可根据实际需要实现现场保护/恢复。 ❖调用后保护、返回前恢复。这种结构是在子程序的开始部分进 行现场保护,而在子程序的结束部分、返回指令前恢复。其程序 结构如下所示:
4.2任务八L示电路 4.2.4相关知识 ;子程序 ADDR PUSH PSW 现场保扩 PUSH A PUSH B PUSH DPL PUSH DPH MOV PS W,#08H;选用工作寄存器组1,O组保护 ;子程序主体 POP DPH 现场恢复 POP DPL POP B
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
4.2任务八LE示电路 4.2.4相关知识 POP A POP PSW RET ;返回 这是子程序标准格式,现场保护/恢复内容固定,但程序规范、清晰 上述两种方式可由设计者任选
4.2 任务八 LED显示电路 4.2.4 相关知识 POP A POP PSW RET ;返回 这是子程序标准格式,现场保护/恢复内容固定,但程序规范、清晰。 上述两种方式可由设计者任选
4.2任务八L示电路 4.2.4相关知识 子程序特性 随着汇编语言程序设计技术的发展,子程序的应用越显重要。因此, 对子程序的设计具有较高要求,除通常在程序设计中应遵循的原则 外,还应具备以下特性 今通用性 亚格讲,子程序有通用和专用两种。前者如数制转换、浮点运算等 子程序可广泛应用于同系列单片机的任何应用系统,后者仅限用于 同一个应用系统中。特别是前者,都应注意子程序的通用性。 为了使子程序具有通用性,在设计中要解决的一个重要问题,就是 确定哪些变量作为参量以及何传递参量
4.2 任务八 LED显示电路 4.2.4 相关知识 ➢子程序特性 随着汇编语言程序设计技术的发展,子程序的应用越显重要。因此, 对子程序的设计具有较高要求,除通常在程序设计中应遵循的原则 外,还应具备以下特性: ❖通用性 严格讲,子程序有通用和专用两种。前者如数制转换、浮点运算等 子程序可广泛应用于同系列单片机的任何应用系统,后者仅限用于 同一个应用系统中。特别是前者,都应注意子程序的通用性。 为了使子程序具有通用性,在设计中要解决的一个重要问题,就是 确定哪些变量作为参量以及何传递参量
4.2任务八L示电路 4.2.4相关知识 今可浮动性 可浮动性是指子程序段可安置在程序存储器的任何区域。为此, 在子程序中应避免选用绝对转移地址 今可递归和可重入性 子程序能自己调用自己和同时能被多个任务(或多个用户程序) 调用的特性,分别称之为子程序的可递归性和可重入性。这类子 程序常在庞大而复杂的程序中应用,在单片机应用程序设计中较 少用到
4.2 任务八 LED显示电路 4.2.4 相关知识 ❖可浮动性 可浮动性是指子程序段可安置在程序存储器的任何区域。为此, 在子程序中应避免选用绝对转移地址。 ❖可递归和可重入性 子程序能自己调用自己和同时能被多个任务(或多个用户程序) 调用的特性,分别称之为子程序的可递归性和可重入性。这类子 程序常在庞大而复杂的程序中应用,在单片机应用程序设计中较 少用到