51单片机中using的用法

“usingy这个y是说这个中断函数使用的那个寄存器组就是51里面一般有4个r0--r7寄存器,如果你的终端函数和别的程序用的不是同一个寄存器组则进入中断的时候就不会将寄... “using y 这个y是说这个中断函数使用的那个寄存器组就是51里面一般有4个 r0 -- r7寄存器,如果你的终端函数和别的程序用的不是同一个寄存器组则进入中断的时候就不会将寄存器组压入堆栈返回时也不会弹出来节省代码和时间” 这句话是什么意思啊,尤其是后面一句,希望解答的详细点, 展开
 我来答
yjjeiqpl
2013-08-14 · TA获得超过281个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:160万
展开全部
其实上面的话说得很清楚了,单片机在进入中断之前,是要先进行现场保护的,有一些寄存器是单片机进入中断时自己压入堆栈的,但在程序里边所用到寄存器r0-r7是不会自动压入堆栈,而是用程序来实现的,这就会占用CPU时间和FLASH空间。你用C语言写单片机中断程序,这些程序代码是由编译软件自动完成的。
如果你的中断函数和别的函数使用的是不同的寄存器组,那么编译软件就不会自动添加寄存器压栈和出栈代码。这当然就省时省代码了噻。
追问
能不能讲的简单点,我只想会使用using
追答
简单点,如果你的程序不大或对时间要求不高,你没必要去管单片机使用那个寄存器组。即可以不使用using来说明寄存器组。这样,C语言在编译时编译软件会自动增加寄存器r1-r7的进出栈代码到你的汇编代码中,已保存和恢复寄存器r1-r7的值。 
从感观上来说,你用C语言实现代码里是没有进出栈的那段代码的,而是编译器为保证中断返回后能正常运行而自动添加的。C语言中你也不会直接去操作r1-r7寄存器,而是C语言编译后就可能用到r1-r7寄存器而已,只是你完全不知情。
如果你是完全汇编编程的话,那么你就得自己写代码去实现寄存器r1-r7的保护。
修者世界
2015-05-30 · TA获得超过5851个赞
知道大有可为答主
回答量:5984
采纳率:61%
帮助的人:808万
展开全部
51单片机中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工作区地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式