佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: Eneccc

初学者的问题。。

[复制链接]
发表于 30-10-2008 08:45 PM | 显示全部楼层
我是初学者,所以没有意见发表,只想分享一下学习经验。
以一个初学者的角度,我觉得PIC大大是对的。
我ASM和C的程度都是刚刚好ok……
可是在program时,ASM让我很头痛,一个简单的程序需要很多行才能写到,而C只需5-6行就可以有同样的程序。
结果放弃ASM,用C来写。
所以,虽然C会用到更多memory,不过还是偏好C。
回复

使用道具 举报


ADVERTISEMENT

发表于 31-10-2008 09:30 AM | 显示全部楼层
原帖由 zew 于 30-10-2008 08:45 PM 发表
我是初学者,所以没有意见发表,只想分享一下学习经验。
以一个初学者的角度,我觉得PIC大大是对的。
我ASM和C的程度都是刚刚好ok……
可是在program时,ASM让我很头痛,一个简单的程序需要很多行才能 ...


呵呵!是啊!C 语言的确方便,当写普通的单片机用 C 语言就还好。如果写某些操作系统的驱动程序也许就离不开汇编语言了。
回复

使用道具 举报

发表于 6-11-2008 11:10 PM | 显示全部楼层
建议新手还是从 C 开始学起吧。日后如果真的需要到精准的 timing 和快速的运行速度的话,那时也可以用 Inline Assembly 在 C 里面。而且现在的 C Compiler 已经很聪明了,compile 出来的 code 已经是很 optimized 了的。

记得以前在大学参加机械人比赛的时候,我是从 assembly 学起的, MCU 是 PIC16F877A。一旦学会了以后,有人曾建议我改去用 C 来写,可是我就是习惯了 assembly,宁愿抓破头也不要改。后来有机会接触到 C 以后,我觉悟了。从此再也不用去管什么 banking, paging 之类的东西,而且要运行乘,除,甚至浮点数的计算也不是问题。如果不是及时学会 C,我看我的 FYP 也是做不出来了。

以下是一些 C 的好处:
1. Human Readable - 因为 C 的 syntax 都是英文字来得,所以也比较容易明白。记得有一句话是这样说的:一个好的 programmer 不止要会写机器能明白的 code,而且也要会写人类能够明白的 code。

2. Easy to Maintain - C 会比较系统化,所以容易管理。

3. Portable - 当你在开发一个程序到 90% 的时候,突然间老板叫你换去另外一颗 MCU。如果你的程序是用 assembly 写的,那你就得从新写过整个程序。如果是 C,你只需改一点点就可以了。
回复

使用道具 举报

发表于 7-11-2008 12:26 PM | 显示全部楼层
原帖由 rothmans 于 31-10-2008 09:30 AM 发表


呵呵!是啊!C 语言的确方便,当写普通的单片机用 C 语言就还好。如果写某些操作系统的驱动程序也许就离不开汇编语言了。


其实我用 C 设计碰到写流冷汗的问题,不知道怎样解决。。 不知道大大们有遇到过吗?

我不知道 program cycle, 如果用 Microchip 的 RISC assembly 可以知道一个 movf, movlw 需要用多少 nano sec... 但是用 C 的话我就没有概念了。。。 不知道怎样考量起。。。我需要时常跟 PC communication... 所以这个问题真的是我的 bottleneck... 不知道大大们有没有概念呢?
回复

使用道具 举报

发表于 7-11-2008 02:16 PM | 显示全部楼层

回复 44# 半夜鬼 的帖子

为什么你要知道你的 program cycle?很重要吗?你的 MCU 是怎样跟 PC communicate 的?用 UART?如果你不是自己做 software UART,那 program cycle 并不是那么重要的。

评分

参与人数 1积分 +5 收起 理由
pic + 5 我很赞同.

查看全部评分

回复

使用道具 举报

发表于 7-11-2008 06:51 PM | 显示全部楼层
上个sem才学了8051,原来是过时很久的东西了。
只不过我觉得很有趣哦,现在大学第二年了,8051是我第一个接触到比较practical的subject,assignment做银行的排队的那些东西。
回复

使用道具 举报

Follow Us
发表于 7-11-2008 06:56 PM | 显示全部楼层
原帖由 waiweng83 于 6-11-2008 11:10 PM 发表
建议新手还是从 C 开始学起吧。日后如果真的需要到精准的 timing 和快速的运行速度的话,那时也可以用 Inline Assembly 在 C 里面。而且现在的 C Compiler 已经很聪明了,compile 出来的 code 已经是很 optimized 了 ...


c真的方便很多吗?8051能支持c?如果要generate delay的话用c大概怎样写?
不好意思,我还是初学者,上个学期一直学assembly code吧了。
回复

使用道具 举报

发表于 7-11-2008 07:13 PM | 显示全部楼层
原帖由 ~Lucifer~ 于 7-11-2008 06:51 PM 发表
上个sem才学了8051,原来是过时很久的东西了。
只不过我觉得很有趣哦,现在大学第二年了,8051是我第一个接触到比较practical的subject,assignment做银行的排队的那些东西。


哇!你怎么说它(8051) 是过时的东西呢 ?还是很多产品使用它的核心你不知道吗?尤其是台湾和中国。它(8051) 还有比较新的版本你没搜索到吧!就比如说 Silicon Lab ,maxim , Huaya.功能不必其他的 MCU 差。

[ 本帖最后由 rothmans 于 7-11-2008 07:17 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 7-11-2008 07:16 PM | 显示全部楼层
原帖由 ~Lucifer~ 于 7-11-2008 06:56 PM 发表


c真的方便很多吗?8051能支持c?如果要generate delay的话用c大概怎样写?
不好意思,我还是初学者,上个学期一直学assembly code吧了。


C 的确很方便。
8051 是支持 C 语言的。
使用 C 要延迟可以这么写    for(i = 0; i < time; i++)。
回复

使用道具 举报

发表于 7-11-2008 08:55 PM | 显示全部楼层
其实个人觉得,初学者学51比较可以接触low level hardware的概念,因为它只是个单纯的mcu,当你interface with其他peripheral时,通常需要自己写driver,了解protocol,当然不要太死板,主要在了解概念就行了。这些是我在公司training时了解的,会学51也是因为training的关系,其实之前fyp是学PIC的(真要多谢PIC班主当时无私的帮助 )
回复

使用道具 举报

发表于 7-11-2008 10:09 PM | 显示全部楼层
原帖由 waiweng83 于 6-11-2008 11:10 PM 发表
建议新手还是从 C 开始学起吧。日后如果真的需要到精准的 timing 和快速的运行速度的话,那时也可以用 Inline Assembly 在 C 里面。而且现在的 C Compiler 已经很聪明了,compile 出来的 code 已经是很 optimized 了 ...


你有参加机械人比赛吗?我以前也是有。
我也那时候接触到microcontroller的。
通常我要得精确度c都能handle到。所以没用asm很久了。。。。。。很很很久了。。。。。
回复

使用道具 举报

发表于 7-11-2008 10:11 PM | 显示全部楼层
原帖由 ~Lucifer~ 于 7-11-2008 06:56 PM 发表


c真的方便很多吗?8051能支持c?如果要generate delay的话用c大概怎样写?
不好意思,我还是初学者,上个学期一直学assembly code吧了。


我用keil c51 compiler......很好用的c compiler for 8051.demo 2kb code limitation,普通用途够得了。。。
要免费的有sdcc. 我没用过, 不过应该大同小异
  1. void delay_ms (unsigned int milisec)
  2. {  
  3.    unsigned int i;

  4.    for (i = 1; i <= milisec; i++)
  5.    {
  6.       TH0 = 0xF8;
  7.       TL0 = 0xCD;
  8.       TR0 = 1;

  9.       while (!TF0);
  10.       TF0 = 0;
  11.       TR0 = 0;
  12.    }
  13. }
复制代码


这个是最简单的写法。 不过会占用一个timer,对于timer resource吃紧的8051来说不是很好。 现在我都是用一个timer(interrupt)来shynchronize全部timing relavent的task.包过delay.

[ 本帖最后由 fritlizt 于 7-11-2008 10:15 PM 编辑 ]
回复

使用道具 举报

发表于 7-11-2008 11:55 PM | 显示全部楼层
我也是用着keil c51,其实还有一个很好的compiler, uc51. demo version 8k code memory limitation.license fee也很便宜。但是compiler对syntax的要求超严的,keil可以compiler到的,uc51一大堆error.
回复

使用道具 举报

发表于 8-11-2008 12:06 AM | 显示全部楼层
原帖由 fritlizt 于 7-11-2008 10:09 PM 发表


你有参加机械人比赛吗?我以前也是有。
我也那时候接触到microcontroller的。
通常我要得精确度c都能handle到。所以没用asm很久了。。。。。。很很很久了。。。。。


以前我是参加 Robocon 和 Robofest 的。是 2003 和 2004 年的事了。版主呢?班主是 MMU 的?


原帖由 retnuoc 于 7-11-2008 11:55 PM 发表
我也是用着keil c51,其实还有一个很好的compiler, uc51. demo version 8k code memorylimitation.licensefee也很便宜。但是compiler对syntax的要求超严的,keil可以compiler到的,uc51一大堆error.


Compiler 对 syntax 的要求严格是好事来的。因为你习惯以后,当你换去别的 compiler 时就不会有什么大问题了。

[ 本帖最后由 waiweng83 于 8-11-2008 12:08 AM 编辑 ]
回复

使用道具 举报

发表于 9-11-2008 11:27 AM | 显示全部楼层
请问师傅们都用哪个 c compiler来program pic 啊?
回复

使用道具 举报

发表于 10-11-2008 08:42 AM | 显示全部楼层
原帖由 SolBadguy2 于 9-11-2008 11:27 AM 发表
请问师傅们都用哪个 c compiler来program pic 啊?

如果是我, 我是偏爱 CCS C。
其他的还有Hi-Tech C, MicroC, PICBasic, C18 等等。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 10-11-2008 09:37 AM | 显示全部楼层
我用 Hitech 的 PICC Lite 和 Microchip 的 C18 & C30。
回复

使用道具 举报

发表于 11-11-2008 05:50 PM | 显示全部楼层
原来如此。。用C我要怎样generate delay啊?(如果我用的是CCS)
回复

使用道具 举报

发表于 11-11-2008 06:09 PM | 显示全部楼层
原帖由 SolBadguy2 于 11-11-2008 05:50 PM 发表
原来如此。。用C我要怎样generate delay啊?(如果我用的是CCS)

如果是CCS C,用内建的Delay :
delay_ms(xxx);
delay_us(xxx);


xxx 可以是1-65535。
回复

使用道具 举报

发表于 11-11-2008 09:47 PM | 显示全部楼层
原帖由 pic 于 11-11-2008 06:09 PM 发表

如果是CCS C,用内建的Delay :
delay_ms(xxx);
delay_us(xxx);


xxx 可以是1-65535。

需要include delay header的吗? (不懂哪里看到要include delay.h什么的)
xxx要怎样填啊?如过要2.5ms那样的呢?
是不是:
delay_ms(2);
delay_us(500);
这样对吗?

[ 本帖最后由 SolBadguy2 于 11-11-2008 09:49 PM 编辑 ]
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 20-4-2024 02:27 PM , Processed in 0.068696 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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