首页 理论教育 单片机嵌入式系统学习指导、习题详解与实验指导

单片机嵌入式系统学习指导、习题详解与实验指导

时间:2023-10-18 理论教育 版权反馈
【摘要】:子程序及其参数传递方法 8051指令系统中,提供了两条调用子程序指令ACALL及LCALL,并提供了一条返回主程序的指令RET。中断服务程序 中断服务程序必须包括现场保护、中断服务、现场恢复、中断返回4个部分。2)中断服务程序中要清除中断标志,以免重复进入。表4-1 C51的数据类型C51数据的存储类型 数据的存储类型如表4-2所示。C51和汇编语言的混合编程 混合编程中主要涉及2种情况:C51程序调用汇编程序和汇编程序调用C51程序。

单片机嵌入式系统学习指导、习题详解与实验指导

1.汇编语言程序结构

(1)简单程序结构 简单程序结构执行时,从第一条指令开始顺序执行,直到最后一条指令为止,它是构成较大、较复杂程序的最基本的结构。但它本身只能完成一些简单的任务,所以叫做简单程序。

(2)分支程序结构 在大量的实用程序中,需要对某些指令的执行结果进行判断,根据判断的结果决定程序的走向。判断后有“是”和“非”两种结果,程序也就有两种可能的执行方向,也就是程序产生了分支,形成了分支结构。

(3)循环程序结构 一个程序若包含多次重复执行的程序段,则称为循环结构。循环程序一般包括以下几个部分:

1)循环初值。

2)循环体。

3)循环参数修改。

4)循环控制。

如果循环工作部分又包含新的循环程序,称为循环嵌套,如出现多次嵌套,就称为多重嵌套。而循环工作部分不包含另外的循环体就称为单重循环。

(4)子程序及其参数传递方法 8051指令系统中,提供了两条调用子程序指令ACALL及LCALL,并提供了一条返回主程序的指令RET。调用子程序时,主程序应先把有关的参数存放在约定的位置,子程序在执行时,可以从约定的位置取得参数,当子程序执行完,将得到的结果存入约定的位置,返回主程序后,主程序可以从这些约定的位置读取到需要的结果,这就是参数的传递。参数传递方法有:

1)用累加器或寄存器进行参数的传递。

2)用指针寄存器进行参数的传递。

3)用堆栈进行参数传递。

(5)中断服务程序 中断服务程序必须包括现场保护、中断服务、现场恢复、中断返回4个部分。中断服务程序编写方法与子程序类似,同时应注意以下问题:

1)在中断程序的结尾一定要使用RETI,以便返回到主程序中断处。

2)中断服务程序中要清除中断标志,以免重复进入。具体标志和清除方法参见各中断部分。

3)中断服务程序的长度应尽量短小,以免执行时占用CPU过多时间。所以主程序与中断服务程序之间的数据交换多采用标志位。

4)中断嵌套深度受堆栈区的影响。

2.C51基础

(1)C51的程序结构 程序结构与一般的C语言程序基本相同,由预处理器命令、变量定义、函数组成。

(2)C51的数据类型 数据类型如表4-1所示。(www.xing528.com)

表4-1 C51的数据类型

978-7-111-50307-1-Chapter04-1.jpg

(3)C51数据的存储类型 数据的存储类型如表4-2所示。

表4-2 C51数据的存储类型

978-7-111-50307-1-Chapter04-2.jpg

(4)C51数据的存储模式 数据的存储模式如表4-3所示。

表4-3 C51数据的存储模式

978-7-111-50307-1-Chapter04-3.jpg

(5)关键字sfr

语法:sfr sfr_name=int constant

用于定义单片机中的特殊功能寄存器、片内I/O接口

注:对于片外扩展I/O口,则根据其硬件译码地址,将其视为片外数据存储器的一个单元,使用#define语句进行定义。

(6)关键字interrupt

函数类型函数名(形式参数表)〔interrupt n〕[using n]

interrupt是函数定义时的一个选项,加上这个选项即可以将一个函数定义成中断服务函数。关键字interrupt后面的n是中断号,n的取值范围为0~31,编译器从8n+3处产生中断向量,具体的中断号n和中断向量取决于不同的8051系列单片机芯片

(7)C51和汇编语言的混合编程 混合编程中主要涉及2种情况:C51程序调用汇编程序和汇编程序调用C51程序。要实现混合编程,必须掌握2种编程语言之间函数名的转换规则、参数的传递和函数返回规则、C51程序中调用汇编语言以及汇编程序中调用C51程序的方法。

(8)函数名的转换如表4-4所示。

表4-4函数名的转换

978-7-111-50307-1-Chapter04-4.jpg

(9)参数传递和函数返回规则C51参数传递的规则:所有参数以内部RAM的固定位置传递给程序,若传递位则必须位于内部可位寻址空间中,让调用和被调用程序的顺序和长度(字节/字/字符/整数)一致。内部RAM相同标示的块可共享,进行汇编程序调用前,调用程序在块中填入要传递的参数,调用时程序假定所需值已在块中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈