【主要内容】1.函数微分的定义设函数y=f(x)在点x0的某个邻域内有定义.如果y在点x0处的增量Δy=f(x0+Δx)-f(x0) (其中,Δx是自变量x在点x0处的增量)可表示为Δy=AΔx+o(Δx)(其中,A与Δx无关,o(Δx)表示Δx→0时比Δx高阶的无穷小),则称y=f(x)在点x0处可微,称Δy的线性主部AΔx为y=f(x)在点x0处的微分,记为dy|x=x0(注意:函数y=f(x......
2025-09-30
Keil Cx51编译器支持在C语言源程序中直接编写8051单片机的中断服务程序。Keil Cx51编译器对函数的定义进行了扩展,增加了一个扩展关键词interrupt,它是函数定义时的一个选项,加上这个选项即可将一个函数定义成中断服务函数。
定义中断服务函数的一般形式如下:
函数类型 函数名(形式参数表)[interrupt m][using n]
1.interrupt m修饰符
interrupt m是C51函数中一个非常重要的修饰符,这是因为中断函数必须通过它进行修饰。在C51程序设计中经常用到中断函数用于实现系统的实时性,从而提高程序的处理效率。
在C51程序设计中,当函数定义时用了interrupt m修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按MCS-51系统中断的处理方式自动地把它安排在程序存储器中的相应位置。在该修饰符中,m的取值为0~31,对应的中断情况如下:0——外部中断0;1——定时器/计数器T0;2——外部中断1;3——定时器/计数器T1;4——串行口中断;5——定时器/计数器T2(52系列单片机具有);其他值预留。
编写MCS-51中断函数时应注意如下7项内容:
1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明,都将导致编译出错。
2)中断函数没有返回值。如果试图定义一个返回值,将得不到正确的结果,建议在定义中断函数时将其定义为void类型,以明确说明没有返回值。
3)在任何情况下都不能直接调用中断函数,否则会产生编译错误。因为中断函数的返回是由8051单片机的RETI指令完成的,RETI指令影响8051单片机的硬件中断系统。若在没有实际中断情况下直接调用中断函数,RETI指令的操作结果会产生一个致命的错误。(https://www.chuimin.cn)
4)如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则会输出不正确的结果。
5)编译器对中断函数编译时,会自动在程序开始和结束处加上相应的内容。具体如下:在程序开始处ACC,B,DPH,DPL和PSW入栈,结束时出栈;中断函数未加using n修饰符的,开始时还要将R0~R1入栈,结束时出栈;如中断函数加using n修饰符,则在开始PSW将入栈后还要修改PSW中的工作寄存器组选择位。
6)C51编译器从绝对地址8×m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。
7)中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明,以防止其他程序调用。
编写一个用于统计外部中断0的中断次数的中断服务程序,具体程序如下:
2.using n修饰符
MCS-51单片机有4组工作寄存器,每组8个寄存器,分别用R0~R7表示。修饰符using n用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。对于using n修饰符的使用,要注意以下两点:
1)加入using n后,C51编译时自动在函数的开始处和结束处加入以下指令:
2)using n修饰符不能用于有返回值的函数,因为C51函数的返回值是放在寄存器中的。如果寄存器组改变了,返回值就会出错。
相关文章
【主要内容】1.函数微分的定义设函数y=f(x)在点x0的某个邻域内有定义.如果y在点x0处的增量Δy=f(x0+Δx)-f(x0) (其中,Δx是自变量x在点x0处的增量)可表示为Δy=AΔx+o(Δx)(其中,A与Δx无关,o(Δx)表示Δx→0时比Δx高阶的无穷小),则称y=f(x)在点x0处可微,称Δy的线性主部AΔx为y=f(x)在点x0处的微分,记为dy|x=x0(注意:函数y=f(x......
2025-09-30
包括函数名的命名和类型说明、形式参数的类型说明、变量定义和语句。下面举例说明主函数和自定义函数。函数的定义是平行的,彼此相互独立,不能嵌套定义。函数的类型和函数返回值的类型应保持一致。以两个数求和为例,说明函数的定义。......
2025-09-30
外部中断是由外部信号引起的,需要在芯片上设置引入端。中断请求的撤销。中断响应后要及时清除中断请求标志位。定时中断和脉冲方式中断的撤销是自动的,不需要用户干预。若仅有一个中断源或不考虑中断优先控制时,外部中断初始化要设置中断总允许、外中断允许和中断方式三项。寄存器的内容及位地址表示如下:单片机复位后,IE=00H禁止一切中断。......
2025-09-30
当二端口网络的输入端口接激励信号后,在输出端口得到一个响应信号,输出端口的响应信号与输入端口的激励信号之比,称为二端口网络的传输函数。 求出图10.8 电路在输出端开路时的电压传输函数。传输函数的幅角φ(ω)表示信号传输前后相位变化的关系,通常称为相频特性。图10.8幅频特性曲线和相频特性曲线RC电路;幅频特性曲线;相频特性曲线检验学习结果10.3.1 图10.8 电路接负载阻抗ZL时,求输入阻抗Zin。......
2025-09-29
【主要内容】设二元函数z=f(x,y)在点(x0,y0)的某个邻域内有定义.如果它在点(x0,y0)处的全增量Δz=f(x0+Δx,y0+Δy)-f(x0,y0)可以表示为Δz=AΔx+BΔy+o(ρ)(其中A和B不依赖于Δx,Δy,o(ρ)是比ρ=高阶的无穷小),则称z=f(x,y)在点(x0,y0)处可微,称AΔx+BΔy为z=f(x,y)在点(x0,y0)处的全微分,记为,即注 (ⅰ)二元函......
2025-09-30
从用户的角度划分,函数有两种,即标准库函数和用户自定义函数。2.函数名函数名是用户为自定义函数取的名字,以便调用函数时使用。定义一个返回两个整数最大值的函数max()如下所示:4.reentrant修饰符在C51中,这个修饰符用于把函数定义为可重入函数。在C51中,当函数被定义为可重入函数,C51编译器编译时将会为可重入函数生成一个模块栈,通过这个模块栈来完成参数的传递和局部变量的存放。......
2025-09-30
设C为平面上给定的一条光滑(或逐段光滑)曲线,则沿曲线C有两个方向,若选定其中的一个方向作为正方向,则称曲线C为有向曲线.设曲线C有两个端点A与B,若把从A到B的方向作为曲线C的正方向,则从B到A的方向就是C的负方向,记作C-.对于简单闭曲线,其正方向是指曲线上的点P沿此方向在该曲线前进时,邻近P点的曲线内部始终位于P点的左方,与之相反的方向就是曲线的负方向,而当曲线C为圆周时,逆时针方向就是曲线......
2025-09-30
从上节例2可知,f(z)=ex(cos y+i sin y)在整个复平面上解析,且f′(z)=f(z).容易验证f(z1+z2) =f(z1)+f(z2),据此我们给出复变指数函数的定义.定义1 对任意的复数z =x+iy,定义指数函数为w =ex(cos y+i sin y),记作ez.显然,|ez|=ex >0,而Arg(ez)=y+2kπ(k为整数),从而ez 0.当z 取实数,即y = 0......
2025-09-30
相关推荐