打印

大家有没有用c语言比用汇编还痛苦的时候啊

[复制链接]
5315|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangqi412|  楼主 | 2009-4-12 15:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个东东之前都avr的汇编写的,现在要整个51的版本. 额,好象俺太笨笨,keil比gcc难用多了,编译出来老是有问题, 有时候很浅显的也是,编下,看下反汇编.晕死了. 本来打算全c语言的,现在弄的破破烂烂到处嵌2句汇编.全乱了,狐狸糊涂把自己给绕晕了.    无感无刷电机,转速高,时间要求挺严格的.
评分
参与人数 1威望 +1 收起 理由
shaky + 1

相关帖子

沙发
飞言走笔| | 2009-4-12 15:38 | 只看该作者

慢慢来

慢慢来,看来您对C51不熟悉

使用特权

评论回复
板凳
jerkoh| | 2009-4-12 15:39 | 只看该作者

re

刚转型都这样
慢慢熟悉了编译器会好的

使用特权

评论回复
地板
ayb_ice| | 2009-4-12 16:31 | 只看该作者

不会用,当然痛苦

使用特权

评论回复
5
huangqi412|  楼主 | 2009-4-12 17:34 | 只看该作者

运转起来了倒是,就是把自己绕晕了

使用特权

评论回复
6
李冬发| | 2009-4-12 17:41 | 只看该作者

菜鸟用C可千万别去嵌汇编。

使用特权

评论回复
7
NE5532| | 2009-4-12 18:01 | 只看该作者

有,PIC的C

使用特权

评论回复
8
hotpower| | 2009-4-12 18:35 | 只看该作者

都不痛苦呀~~~

使用特权

评论回复
9
HUANGQI412| | 2009-4-12 18:36 | 只看该作者

呵呵,用avrgcc感觉舒服多了 应该是不熟悉keil

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
shaky + 1
10
酒剑愁| | 2009-4-12 19:46 | 只看该作者

熟悉了 就好了

使用特权

评论回复
11
李冬发| | 2009-4-12 19:51 | 只看该作者

PIC的C是我见过最难用的C了!

使用特权

评论回复
12
十步杀一人| | 2009-4-12 20:59 | 只看该作者

有的

多年锤炼出来的汇编语句,或为抗干扰/省资源/针对专门硬件优化等等经过实际检验的老程序,改用c时发现没有对应语句或字里行间蹩脚,没有办法写的漂亮。
    不过现在MCU已经很便宜,节省资源意义不大,因工艺关系抗干扰也统统不如早年,即使用了那些“秘籍”也多难奏效,需要硬件上采取更多措施,故慢慢在c中写出新的技巧,不用记得多年前那些经验了。

使用特权

评论回复
13
headwolf| | 2009-4-12 21:02 | 只看该作者

估计11楼是对PICC16的BANK处理比较头痛

其实注意点大数组的安排就好了。还有就是注意嵌套层数,毕竟PIC16F只有8级硬件堆栈。PICC18/MCC18用起来应该就比较舒服了。

使用特权

评论回复
14
machunshui| | 2009-4-12 22:46 | 只看该作者

PIC的C很好用

PIC的C很好用.

有些网友出了问题,不想办法找出根源,就乱怪编译器.

有个网友PIC论坛上发帖子:

"wolfererer 发表于 2009-3-21 17:01 PIC 单片机  ←返回版面  按此察看该网友的资料 按此把**加入收藏夹 按此编辑本帖

27楼: 这算不算bug




芯片使用         pic16f877a

运行环境         MPLAB 8.10

编译器              PICC9.60 PL0

程序如下:


#include <pic.h>

__CONFIG(HS & WDTEN & PWRTEN & BOREN & LVPDIS & DEBUGDIS & PROTECT);

void main()
{
     unsigned char array[2];
     array[0] = 0x44;
     array[1] = ~array[0];
     if(array[1] == (~array[0]))
            RB0 = 0;
     else
            RB1 = 0;                       //程序跳到了这里    
}

这是为什么?

编译器Bug?"







其实这个非常好验证,找个标准编译器,例如VC,TC,验证一下,

结果同PICC一样,和PICC屁关系没有

要是不一样,VC,TC肯定有问题了.

使用特权

评论回复
15
machunshui| | 2009-4-12 23:09 | 只看该作者

李冬发一只说PICC 的 SWITCH 有问题

李冬发一只说PICC 的 SWITCH 有问题,

请举个有问题的例子代码.

大家讨论讨论.

如果真有问题,我也可以学习学习,避免错误.


这些基本的东西,只要愿意,一定是可以讨论清楚的,不可知论,推测不可取

使用特权

评论回复
16
machunshui| | 2009-4-12 23:30 | 只看该作者

建议用PICC的看一下张明峰的<>

建议用PICC的看一下张明峰的<<PIC 单片机的C 语言编程>>.

C基础比较好的,化一天时间应该差不多了.

这个教程里面讲的非常准确,

在21IC论坛里面张明峰应该算少有的几位大家了.

使用特权

评论回复
17
因特网用户| | 2009-4-13 00:14 | 只看该作者

无刷直流电机?做驱动吗

使用特权

评论回复
18
李冬发| | 2009-4-13 01:19 | 只看该作者

machunshui,不好用和不能用是2个概念的

    那个switch特例当时没被保留下来,硬盘经历几次倒塌,好多东西都不再了。
    是2005年的事,一个SF6检测装置上用到PIC,这个电路是从别人手上接过来的。要是我不会选用PIC,因为本人对PIC不熟。不会不轻易去用一个不熟习的东西。再说原来的16c54/16c57留给我的好印象,让我有恐PIC症。
    有3个case,很简单的,结果不对;改成if就对了...。

    编译器有BUG太正常不过了。

    可能是91年,花了720RMB买了套BC3.1(21张720kB的3.5"盘)。这个版本的浮点库就是错的,不是一般的晕。而且是在初始化那段代码有错,只要进行2万多次的浮点运算就报浮点运算错。弄得我的一个远动程序中的浮点型非要改成长整型才行。

    这里顺便提一下一个C++的问题。C++是可以边定义边使用的,很方便。其实方便是有代价的:在一些特殊的条件下,会出现先使用后定义的情形,且编译器能通过,但后果却是非常严重的--结果不正确,你还很难查出问题点。

使用特权

评论回复
19
度一零| | 2009-4-13 04:17 | 只看该作者

nec的C

nec的C 晕死
出错时不知道它提示什么.

Renesas的C还行

使用特权

评论回复
20
machunshui| | 2009-4-13 08:48 | 只看该作者

李冬发,如果自己没用全力求证确认,就说编译器有错误不合适

实际上,绝大部分不是编译器的问题.
作为广泛使用的编译器绝对不会有大的正常语法方面的大的BUG.

李冬发,如果自己没用全力求证确认,就说编译器有错误不合适.

另外,你的C++问题,最好给出问题代码,

否则没法求证,

说也没有意义

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

622

主题

24960

帖子

18

粉丝