whwqm 发表于 2026-3-11 15:28:56

SDCC 的局限性



**SDCC 不是万能的**,在以下场景有局限:
- STC8H 的扩展中断(32-67)需要特殊处理
- 某些专有特性可能不支持
- 需要查阅 SDCC 文档确认支持情况这个结论是正确的吗?请大佬, 出来说说...



whwqm 发表于 2026-3-11 15:41:46

请大家出来讨论!!!

狂热主宰 发表于 2026-3-11 16:29:22

whwqm 发表于 2026-3-11 15:41
请大家出来讨论!!!
底层设计和上层程序通常需要验证测试
后续在使用中反馈
通常有更新

ercircle 发表于 2026-3-11 16:38:27

中断问题:
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=12334&pid=126137

某些专有特性指的是C语言特性还是单片机某功能不能用?后者应该不存在

hsrzq 发表于 2026-3-16 21:21:15

说反了,keil大于32的中断才需要特殊处理,sdcc的最简单,直接用就好了。

猫虎的 发表于 2026-3-17 08:14:59

以前开发AVR时好像用过SDCC,好久之前的事了,几乎全忘了,我就记得好像要先配置软件搭建环境

whwqm 发表于 2026-3-17 11:24:32

sdcc, rtc ,   中断= 36,
void        AUXR_ISR(void) __interrupt (36)    // 直接这样用
{
        P_SW2 |= 0x80;        // 使能 XFR 访问(关键!)
                        i = RTCIF;
                        RTCIF = 0;                //中断标志, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
                        P_SW2 &= ~0x80;        // 恢复 P_SW2
                        if(i & 0x08)        //秒中断
                        {
                                B_1S = 1;                        //用户中断处理代码
                                //    RTC_read();
                                P33=!P33;                //闹钟响铃
                        }
}
这们可以吗....

ercircle 发表于 2026-3-17 11:57:03

whwqm 发表于 2026-3-17 11:24
sdcc, rtc ,   中断= 36,
void        AUXR_ISR(void) __interrupt (36)    // 直接这样用
{


XFR main起始位置开一次后面就不要关了
注意sdcc 中断函数声明至少要出现在main所在文件,否则异常
页: [1]
查看完整版本: SDCC 的局限性