- 打卡等级:偶尔看看I
- 打卡总天数:16
- 最近打卡:2025-04-30 08:41:32
荣誉版主
- 积分
- 12882
|
发表于 2024-3-22 23:16:54
|
显示全部楼层
===============================================
(6)LAOXU把题目难度提高了,要求要有4个不同优先级的中断:
void int0(void ) interrupt 0 // 优先级 0
{
strncpy (bb0, a0, 8);
}
void int1(void ) interrupt 1 // 优先级 1
{
strncpy (bb1, a1, 8);
}
void int2(void ) interrupt 2 // 优先级 2
{
strncpy (bb2, a2, 8);
}
void int3(void ) interrupt 3 // 优先级 3
{
strncpy (bb3, a3, 8);
}
void main(void)
{ do{
strncpy (cc, a2, 8);
}while(1);
}
(7)LAOXU认为除了用他会的用汇编语言重新编写“strncpy”函数,没有其他方法可解决,他论证说:
像我 8楼的题目, 底层可实行关中断, 在低级中断中, 就不能用 关中断之法了, 因为一关中断,
影响所有高一层次的中断响应(相当于关闭所有高级中断, 同级或低级中断没影响), 只能采用压栈保护
受影响的那几个 RAM, 但问题是, 这 RAM地址是浮动的(受程序大小及内容影响), 随时可能变更
具体地址, 如何可靠有效保护这几个 RAM ?
当然, 每次编译后, 核对修改这几个保护 RAM地址也行, 需反复编译核对, 确保正确
(8)对于LAOXU新提出的增加了难度的这个问题,各位坛友,大家都来说说除了在C51里重新编写“strncpy”函数的方法外怎么解决,其实解决方法很简单,大家尽量往简单里猜。
LAOXU,这是你出的难题,不会你不知道答案吧?
|
|