找回密码
 立即注册
楼主: 王昱顺

自研C语言编译器发布,STC IDE —— 面向STC32系列及AI8051U的C语言编译器,11/7更新

 火.. [复制链接]

49

主题

612

回帖

5462

积分

荣誉版主

积分
5462
发表于 2026-8-12 11:26:59 | 显示全部楼层
王*** 发表于 2026-8-12 10:59
好的,我看看这部分的实现

问题应该就是出在二维数组上


刚刚把数组 led_state[][8] 改成了一个变量 led_state。
直接给 led_state 赋值,然后逐一判断变量的每个位。
在 led_state = 0x55 和 led_state = 0xAA 的时候
用STC IDE编译之后也可以正确点亮 “绿红绿红绿红绿红” 和 “红绿红绿红绿红绿”
能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复

使用道具 举报 送花

16

主题

134

回帖

1718

积分

金牌会员

积分
1718
发表于 2026-8-12 11:41:45 | 显示全部楼层
太棒了!开发人员辛苦!继续完善!
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-12 11:47:13 | 显示全部楼层
大*** 发表于 2026-8-12 08:52
工程师们辛苦了,经过完善,昨天说的移位运算的方式点灯的程序,今天用STC IDE编译之后也可以点亮LED了。

...

好的,这部分因为是新增加的部分,还没有好好细化
后续会进行一下风格统一和优化的

点评

继续补充 在main函数里的while循环里,用给变量 led_state 赋值的方式改变LED显示效果。 代码1: u8 LEDdata[6] = { 0x00, 0xFF, 0xAA, 0x55, 0x0F, 0xF0, }; u8 LEDframe[12] = { 0, 1, 0, 1, 2, 3, 2, 3, 4, 5  详情 回复 发表于 2026-8-12 12:10
回复

使用道具 举报 送花

49

主题

612

回帖

5462

积分

荣誉版主

积分
5462
发表于 2026-8-12 12:10:04 | 显示全部楼层
王*** 发表于 2026-8-12 11:47
好的,这部分因为是新增加的部分,还没有好好细化
后续会进行一下风格统一和优化的 ...

继续补充


在main函数里的while循环里,用给变量 led_state 赋值的方式改变LED显示效果。

代码1:

u8 LEDdata[6] = { 0x00, 0xFF, 0xAA, 0x55, 0x0F, 0xF0, };
u8 LEDframe[12] = { 0, 1, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, };

……
    while (1)

    {
        // 示例:空循环,或者在这里周期性改变图案
        // 例如让图案闪烁、流动等

         led_state = LEDdata[ LEDframe[ i++ ] ];
         delay_ms( 500 );
         i %= 12;
     }

数组嵌套的方式,LED乱闪。(KEIL编译的能正常闪烁)

代码2:

    while (1)
    {
        // 示例:空循环,或者在这里周期性改变图案
        // 例如让图案闪烁、流动等
        led_state = 0xAA;        delay_ms( 200 );
        led_state = 0x55;        delay_ms( 200 );
        led_state = 0xAA;        delay_ms( 200 );
        led_state = 0x55;        delay_ms( 200 );

        led_state = 0x0F;        delay_ms( 200 );
        led_state = 0xF0;        delay_ms( 200 );
        led_state = 0x0F;        delay_ms( 200 );
        led_state = 0xF0;        delay_ms( 200 );

        led_state = 0xFF;        delay_ms( 200 );
        led_state = 0x00;        delay_ms( 200 );
        led_state = 0xFF;        delay_ms( 200 );
        led_state = 0x00;        delay_ms( 200 );
    }


用直接赋值的方式,正常闪烁。

但是不知道为什么STC-IDE延时200ms,跟KEIL延时500ms的切换速度差不多。已经设置了 WTST=0,delay_ms延时用的nop




点评

目前暂时没有什么参考标准,不过编译器本意就是为了兼容 KEIL 然后针对性的修复一些痛点 我也可以看看 KIEL 的优化方式,做到和 KEIL 一样,也就不必担心准确性问题了  详情 回复 发表于 2026-8-12 13:31
delay问题应该是循环的优化不同导致的,目前还在努力接近keil的优化程度 数组问题应该是支持的较浅,下个版本将会修正这些  详情 回复 发表于 2026-8-12 12:29
能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-12 12:29:37 | 显示全部楼层

delay问题应该是循环的优化不同导致的,目前还在努力接近keil的优化程度
数组问题应该是支持的较浅,下个版本将会修正这些

点评

那么以现有的优化程度,要生成延时函数有没有什么参考标准?ISP生成的慢得有些多  发表于 2026-8-12 12:59
回复

使用道具 举报 送花

28

主题

158

回帖

1166

积分

金牌会员

积分
1166
发表于 2026-8-12 12:53:32 | 显示全部楼层
截图202608121252415033.jpg
这个大一点,把工程名字写上

点评

好的  发表于 2026-8-12 13:31
回复

使用道具 举报 送花

28

主题

158

回帖

1166

积分

金牌会员

积分
1166
发表于 2026-8-12 12:58:12 | 显示全部楼层
截图202608121256493930.jpg
导入文件,应该在 中断这个项目之下,现在只能通过导入目录,新建个项目才行

点评

OK,这确实是个问题,后续改进为默认携带文件夹名字,同时允许修改工程名字这样吧  详情 回复 发表于 2026-8-12 13:32
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-12 13:31:24 | 显示全部楼层

目前暂时没有什么参考标准,不过编译器本意就是为了兼容 KEIL 然后针对性的修复一些痛点
我也可以看看 KIEL 的优化方式,做到和 KEIL 一样,也就不必担心准确性问题了
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-12 13:32:32 | 显示全部楼层
zh*** 发表于 2026-8-12 12:58
导入文件,应该在 中断这个项目之下,现在只能通过导入目录,新建个项目才行 ...

OK,这确实是个问题,后续改进为默认携带文件夹名字,同时允许修改工程名字这样吧
不过导入文件默认就是单文件导入的,浏览器只能拿到文件名字,获取不到路径信息,这个属于浏览器的安全性限制
可能需要考虑一下看看这个怎么改
回复

使用道具 举报 送花

28

主题

158

回帖

1166

积分

金牌会员

积分
1166
发表于 2026-8-12 13:47:59 | 显示全部楼层
王*** 发表于 2026-8-12 13:32
OK,这确实是个问题,后续改进为默认携带文件夹名字,同时允许修改工程名字这样吧
不过导入文件默认就是单 ...

可以用目录导入,工程名还是原来的就行,现在必须换新名

点评

之前是允许的,可能是增加项目管理时出现的一点小问题,下个版本我会进行修复。  详情 回复 发表于 2026-8-12 13:49
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-14 09:28 , Processed in 0.075285 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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