关键字using与interrupt

来源:互联网 发布:淘宝做任务返利 编辑:程序博客网 时间:2024/05/16 18:35

1、关键字using

(1)在函数的入口处将当前工作寄存器组保护到堆栈中,指定的工作寄存器内容不会改变;

(2)函数返回之前将被保护的工作寄存器组从堆栈中恢复。

(3)带using属性的函数不能返回bit类型的值;

(4)using不能用于外部函数;

(5)51的寄存器组编号为0~3,主函数默认使用0,中断函数应使用与主函数不同的寄存器组;

(6)51有两个优先级(高和低,在IP中指定),默认均为低优先级,优先级相同的中断服务函数可使用相同的寄存器组,不同的必须使用不同的寄存器组。


2、关键字interrupt

(1)在进入中断函数时,特殊功能寄存器ACC、B、DPH、DPL、PSW将被保存入栈,如不切换寄存器组,则将中断函数中所用到的全部工作寄存器入栈;

(2)函数返回之前,所有的寄存器内容出栈;

(3)中断函数不能进行参数传递,即没有参数;

(4)中断函数没有返回值;

(5)中断函数不能被直接调用;

(6)如果在中断函数中调用了其他函数,则被调用的函数所使用的寄存器组必须与中断函数相同;

(7)如果中断函数中用到浮点运算,必须保存浮点寄存器的状态,当没有其他程序执行浮点运算时可以不保存,函数库math.h提供了保存浮点寄存器状态的函数pfsave以及恢复浮点寄存器状态的函数fprestore。




0 0
原创粉丝点击