找回密码
 立即注册
楼主: tzz***

FreeRTOS @STC32G移植来了|重复造车轮

[复制链接]

该用户从未签到

61

主题

628

回帖

1万

积分

荣誉版主

积分
10834
发表于 2024-4-18 20:41:33 | 显示全部楼层
tzz1983 发表于 2024-4-17 10:26
没有BUG哦, 我做了代码都没死机

代码做好了, 按您的要求做的,

(1)收到,谢谢!

(2)以后在编写STCx51单片机程序的时候,对于bit位变量,千万别再写“P21=!P21”这种形式,请写为“P21=~P21”,丢脸。
自己去调研一下为什么,服不服都回复给初学者看看

点评

这是为什么, 我不明白, 多问一次, 再丢一次脸  详情 回复 发表于 2024-4-18 20:52
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

519

回帖

1646

积分

荣誉版主

积分
1646
 楼主| 发表于 2024-4-18 20:52:28 | 显示全部楼层
杨为民 发表于 2024-4-18 20:41
(1)收到,谢谢!

(2)以后在编写STCx51单片机程序的时候,对于bit位变量,千万别再写“P21=!P21”这 ...
千万别再写“P21=!P21”这种形式,请写为“P21=~P21”
这是为什么, 我不明白, 多问一次, 再丢一次脸

点评

张嘴就问,讨奶吃吗?自己去研究  详情 回复 发表于 2024-4-18 21:20
回复 支持 反对 送花

使用道具 举报

该用户从未签到

61

主题

628

回帖

1万

积分

荣誉版主

积分
10834
发表于 2024-4-18 21:20:13 | 显示全部楼层
tzz1983 发表于 2024-4-18 20:52
这是为什么, 我不明白, 多问一次, 再丢一次脸

张嘴就问,讨奶吃吗?自己去研究

点评

我只是怀疑您是意气 P20 = 0X01; P20 = 0X02; 结果都一样, 不信你去试一试, 说明 Cx51编译器处理bit数据时, 不是当普通的长度只有一位数据来处理, 而是当逻辑量(非0即1)来处理,, 用逻辑运算符"!"有问题吗?  详情 回复 发表于 2024-4-18 21:44
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

519

回帖

1646

积分

荣誉版主

积分
1646
 楼主| 发表于 2024-4-18 21:44:48 | 显示全部楼层
杨为民 发表于 2024-4-18 21:20
张嘴就问,讨奶吃吗?自己去研究

我只是怀疑您是意气

P20 = 0X01;
P20 = 0X02;

结果都一样, 不信你去试一试,
说明 Cx51编译器处理bit数据时, 不是当普通的长度只有一位数据来处理,
而是当逻辑量(非0即1)来处理,, 用逻辑运算符"!"有问题吗?

点评

千万别再写“P21=!P21”这种形式,请写为“P21=~P21” 你看清题目了吗?这是你丢第3次脸了!  详情 回复 发表于 2024-4-18 21:49
回复 支持 反对 送花

使用道具 举报

该用户从未签到

61

主题

628

回帖

1万

积分

荣誉版主

积分
10834
发表于 2024-4-18 21:49:27 | 显示全部楼层
tzz1983 发表于 2024-4-18 21:44
我只是怀疑您是意气

P20 = 0X01;

千万别再写“P21=!P21”这种形式,请写为“P21=~P21”



你看清题目了吗?这是你丢第3次脸了!




点评

算了, 不跟你扯这些没用的, 一大把年纪了, 说话那么难听. 什么讨奶不讨奶的. 一个十几行代码都能编到死机为止的. 人人都说要尊老, 可老者没数, 非要为老不..  详情 回复 发表于 2024-4-18 22:00
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

519

回帖

1646

积分

荣誉版主

积分
1646
 楼主| 发表于 2024-4-18 22:00:59 | 显示全部楼层
本帖最后由 tzz1983 于 2024-4-18 22:02 编辑
杨为民 发表于 2024-4-18 21:49
千万别再写“P21=!P21”这种形式,请写为“P21=~P21”

算了, 不跟你扯这些没用的, 一大把年纪了, 说话那么难听.
什么讨奶不讨奶的. 一个十几行代码都能编到死机为止的. 还弄得谁稀罕一样的
人人都说要尊老, 可老者没数, 非要为老不..

点评

tzz1983 牛逼, 敢和永远伟大光荣正确的老小孩, 争输赢~~~  发表于 2024-4-20 02:50
(1)有图有真相,第4次打脸! [attachimg]41771[/attachimg] [attachimg]41772[/attachimg] (2)这是C251编译器对语句“P21 = !P21; //P21翻转表示任务在运行,没有死机哈(致杨总)” 的编译结果,你自己看看  详情 回复 发表于 2024-4-18 22:40
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
  • +1

    楼主威武~

回复 支持 反对 送花

使用道具 举报

该用户从未签到

61

主题

628

回帖

1万

积分

荣誉版主

积分
10834
发表于 2024-4-18 22:40:37 | 显示全部楼层
tzz1983 发表于 2024-4-18 22:00
算了, 不跟你扯这些没用的, 一大把年纪了, 说话那么难听.
什么讨奶不讨奶的. 一个十几行代码都能编到死机 ...

(1)有图有真相,第4次打脸

C程序.jpg

汇编程序.jpg

(2)这是C251编译器对语句“P21 = !P21;     //P21翻转表示任务在运行,没有死机哈(致杨总)
编译结果,你自己看看用了多少指令?
                                                ; SOURCE LINE # 56
000014 20A103         JB       P21,?C0017
000017 D3             SETB     C
000018 8001           SJMP     ?C0018
               ?C0017:
00001A C3             CLR      C

               ?C0018:
00001B 92A1           MOV      P21,C


(3)这是C251编译器对语句“P21=~P21;”的编译结果
                                                ; SOURCE LINE # 57
00001D B2A1           CPL      P21
你自己看看用了多少指令?



(4)不作死就不会死!让你研究一下,你不会用汇编列表看看编译结果吗?

(5)不学习会落后你不看论坛吗
C51 和 C251 标准库的区别
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7348
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)


其中2楼到4楼就是讨论这个问题呀!

(6)只顾挑别人毛病,不涨自己的知识!这是你亲自在该帖4楼的回复?忘啦?今天还要我再贴一次!
十多个时钟有点夸张,看图



点评 tzz1983
看起来只执行了三条指令,其中包含一个跳转,总共5个时钟呀,怎么说有十几个?  发表于 2024-3-20 11:25








点评

是的, 上面的红字是我回复的, 可那又怎么样呢, 这只能说明我不太在意这种旁支末节, 像这种情况很多,比如: 例1: u8 cnt; if(cnt){......} => if(cnt!=0){......} 例2: u8 cnt; cnt++; if(cn  详情 回复 发表于 2024-4-19 07:56
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

519

回帖

1646

积分

荣誉版主

积分
1646
 楼主| 发表于 2024-4-19 07:56:29 | 显示全部楼层
本帖最后由 tzz1983 于 2024-4-19 09:48 编辑
杨为民 发表于 2024-4-18 22:40
(1)有图有真相,第4次打脸!

是的, 上面的红字是我回复的, 可那又怎么样呢,
这只能说明我不太在意这种旁支末节, 我一点都没感觉到丢脸
像这种情况很多,比如:
例1:  u8 cnt;     if(cnt){......}     =>     if(cnt!=0){......}     
例2:  u8 cnt;     cnt++; if(cnt){......}     =>     if(++cnt){......}        

这样的语句, 执行结果是一样的, 语法也没毛病.  但是编译出来汇编代码会不一样!
谁又会去在意哪条语句的效率更高?  谁又会去说前者是错的还是后者是错的?

对于我来说,通篇回复,最抢眼的莫过于,这一句:
只顾挑别人毛病

是因为我挑了您的刺, 让您不爽了, 然后回头来挑我的刺吧.

可您这刺挑的不痛不痒.

言归正传, P21=~P21; 效率确实是高一些, 该承认的还是得承认, 受教了!

但从另一个角度来说, 使用者C语法和逻辑都没有问题, 结果也是正确的,
严格来说, 这是编译器优化的问题, 不是使用者的问题.
贴帖也说明了C251有这个问题, 而C51就没有!

再者, 看问题的态度:
我认为正常的程序员不要刻意去追求这种"旁支末节"的优化, 没有多少意义,
关键系统代码, 可以用汇编优化, 但这部分很少.

不是关系到系统关键性能的代码, 没有必要去关心反汇编,
把精力放在代码结构和大逻辑层面上来, 收益或许会高一点.



点评

(1)以小人之心度君子之腹,第5次打脸! 你说: 对于我来说,通篇回复,最抢眼的莫过于,这一句: 只顾挑别人毛病 是因为我挑了您的刺, 让您不爽了, 然后回头来挑我的刺吧. 可您这刺挑的不痛不痒. 可是,当初你挑  详情 回复 发表于 2024-4-19 14:00
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
  • +1

    楼主威武~

回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    前天 10:04
  • 签到天数: 38 天

    [LV.5]常住居民I

    0

    主题

    35

    回帖

    232

    积分

    中级会员

    积分
    232
    发表于 2024-4-19 12:07:08 | 显示全部楼层
    stc32G也能跑RTOS嘛   支持支持  得学一下
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 156 天

    [LV.7]常住居民III

    1

    主题

    103

    回帖

    475

    积分

    中级会员

    积分
    475
    发表于 2024-4-19 12:34:50 | 显示全部楼层
    tzz1983 发表于 2024-4-19 07:56
    是的, 上面的红字是我回复的, 可那又怎么样呢,
    这只能说明我不太在意这种旁支末节, 我一点都没感觉到丢脸 ...

    昨天我也试了一下,c51是没问题,二者一样,c251我没有试。c251编译器可能是用的人少,都很久没有更新了, 5.6的版本是2018年的。
    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    • +1

      楼主威武~

    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-2 20:30 , Processed in 0.071628 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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