共2条
1/1 1 跳转至页
interrupt,using interrupt using 请教
问
问题如下:
如定义一数组uchar array[10] = {0}; uchar index = 0;
在中断程序中如:
写法一:
void serial(void) interrupt 4
{
if (RI)
SBUF = array[index++];
}
写法二:
void serial(void) interrupt 4 using 1
{
if (RI)
SBUF = array[index++];
}
我发现编译后写法二比写法一多用8个RAM,如果直接写成SBUF = array[0];两个写法结果一样。比较后发现SP的起始地址有变化,请KEIL高手分析一下。中断程序不用USING是否更好一点?虽然可能入栈多一点,但RAM空了8个,谢谢!
答 1: re使用using的中断程序工作效率更高,内部所调用的子程序必须与中断程序使用同一组寄存器.其它程序所用的寄存器组与中断程序使用的寄存器组要区分开.也就是说:牺牲空间换取时间 答 2: 就是:牺牲空间换时间,如果中断中局部变量用的少的话不建议比如你的那个中断就没必要切换寄存器组
如定义一数组uchar array[10] = {0}; uchar index = 0;
在中断程序中如:
写法一:
void serial(void) interrupt 4
{
if (RI)
SBUF = array[index++];
}
写法二:
void serial(void) interrupt 4 using 1
{
if (RI)
SBUF = array[index++];
}
我发现编译后写法二比写法一多用8个RAM,如果直接写成SBUF = array[0];两个写法结果一样。比较后发现SP的起始地址有变化,请KEIL高手分析一下。中断程序不用USING是否更好一点?虽然可能入栈多一点,但RAM空了8个,谢谢!
答 1: re使用using的中断程序工作效率更高,内部所调用的子程序必须与中断程序使用同一组寄存器.其它程序所用的寄存器组与中断程序使用的寄存器组要区分开.也就是说:牺牲空间换取时间 答 2: 就是:牺牲空间换时间,如果中断中局部变量用的少的话不建议比如你的那个中断就没必要切换寄存器组
共2条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3XX】LPSPI参数配置说明被打赏¥21元 | |
| 在WT9932C61-TINY上实现超声波测距被打赏¥22元 | |
| 基于WT9932C61-TINY的环境构建及OLED屏驱动测试被打赏¥20元 | |
| 【S32K3XX】Core-to-Core 中断使用被打赏¥21元 | |
| 「AI编程记录--含源码」用一晚上的时间写一个esp32的示波器被打赏¥19元 | |
| STM32C0116DK开发探索记(3)被打赏¥30元 | |
| STM32C0116DK开发探索记(2)被打赏¥24元 | |
| STM32C0116DK开发探索记(1)被打赏¥29元 | |
| 谨防极海G32M3101电机评估板易跌落的陷阱被打赏¥24元 | |
| 【全网首拆】M5STACK ATOM系列开发板拆解 / AtomS3R-CAM摄像头更换方法(提高10倍像素)被打赏¥26元 | |
我要赚赏金
