找回密码
 立即注册
查看: 363|回复: 7

SDCC 的局限性

[复制链接]

3

主题

2

回帖

89

积分

注册会员

积分
89
发表于 2026-3-11 15:28:56 | 显示全部楼层 |阅读模式


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



回复

使用道具 举报 送花

3

主题

2

回帖

89

积分

注册会员

积分
89
 楼主| 发表于 2026-3-11 15:41:46 | 显示全部楼层
请大家出来讨论!!!
回复

使用道具 举报 送花

已绑定手机

74

主题

1003

回帖

3653

积分

论坛元老

初出茅庐&无甚本事

积分
3653
发表于 2026-3-11 16:29:22 | 显示全部楼层
whw*** 发表于 2026-3-11 15:41
请大家出来讨论!!!

底层设计和上层程序通常需要验证测试
后续在使用中反馈
通常有更新
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

121

主题

5082

回帖

1万

积分

超级版主

无情的代码机器

积分
11222
发表于 2026-3-11 16:38:27 | 显示全部楼层
中断问题:
https://www.stcaimcu.com/forum.p ... 2334&pid=126137

某些专有特性指的是C语言特性还是单片机某功能不能用?后者应该不存在
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

34

主题

397

回帖

3963

积分

论坛元老

机长

积分
3963
发表于 2026-3-16 21:21:15 | 显示全部楼层
说反了,keil大于32的中断才需要特殊处理,sdcc的最简单,直接用就好了。
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复

使用道具 举报 送花

19

主题

297

回帖

568

积分

高级会员

积分
568
发表于 2026-3-17 08:14:59 | 显示全部楼层
以前开发AVR时好像用过SDCC,好久之前的事了,几乎全忘了,我就记得好像要先配置软件搭建环境
回复

使用道具 举报 送花

3

主题

2

回帖

89

积分

注册会员

积分
89
 楼主| 发表于 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;                //闹钟响铃
                        }
}
这们可以吗....

点评

XFR main起始位置开一次后面就不要关了 注意sdcc 中断函数声明至少要出现在main所在文件,否则异常  详情 回复 发表于 2026-3-17 11:57
回复

使用道具 举报 送花

已绑定手机

121

主题

5082

回帖

1万

积分

超级版主

无情的代码机器

积分
11222
发表于 2026-3-17 11:57:03 | 显示全部楼层
whw*** 发表于 2026-3-17 11:24
sdcc, rtc ,   中断= 36,
void        AUXR_ISR(void) __interrupt (36)    // 直接这样用
{

XFR main起始位置开一次后面就不要关了
注意sdcc 中断函数声明至少要出现在main所在文件,否则异常
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-23 16:08 , Processed in 0.092469 second(s), 79 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表