51单片机中using的用法

“using y 这个y是说这个中断函数使用的那个寄存器组就是51里面一般有4个 r0 -- r7寄存器,如果你的终端函数和别的程序用的不是同一个寄存器组则进入中断的时候就不会将寄存器组压入堆栈返回时也不会弹出来节省代码和时间” 这句话是什么意思啊,尤其是后面一句,希望解答的详细点,

其实上面的话说得很清楚了,单片机在进入中断之前,是要先进行现场保护的,有一些寄存器是单片机进入中断时自己压入堆栈的,但在程序里边所用到寄存器r0-r7是不会自动压入堆栈,而是用程序来实现的,这就会占用CPU时间和FLASH空间。你用C语言写单片机中断程序,这些程序代码是由编译软件自动完成的。
如果你的中断函数和别的函数使用的是不同的寄存器组,那么编译软件就不会自动添加寄存器压栈和出栈代码。这当然就省时省代码了噻。追问

能不能讲的简单点,我只想会使用using

追答

简单点,如果你的程序不大或对时间要求不高,你没必要去管单片机使用那个寄存器组。即可以不使用using来说明寄存器组。这样,C语言在编译时编译软件会自动增加寄存器r1-r7的进出栈代码到你的汇编代码中,已保存和恢复寄存器r1-r7的值。 
从感观上来说,你用C语言实现代码里是没有进出栈的那段代码的,而是编译器为保证中断返回后能正常运行而自动添加的。C语言中你也不会直接去操作r1-r7寄存器,而是C语言编译后就可能用到r1-r7寄存器而已,只是你完全不知情。
如果你是完全汇编编程的话,那么你就得自己写代码去实现寄存器r1-r7的保护。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-30
中using使用在C51编程中,用来在中断函数中指定工作寄存器区,工作寄存器共有4个区,分别代表R0~R7地址是:
第0工作区:00H~07H
第1工作区:08H~0FH
第2工作区:10H~17H
第3工作区:18H~1FH
using n,那么n就是第几区,使用方法如下:
void exterint0() interrupt 0 using 1
这表示外部中断0使用第1工作区地址。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网