|
发表于 30-10-2008 08:45 PM
|
显示全部楼层
我是初学者,所以没有意见发表,只想分享一下学习经验。
以一个初学者的角度,我觉得PIC大大是对的。
我ASM和C的程度都是刚刚好ok……
可是在program时,ASM让我很头痛,一个简单的程序需要很多行才能写到,而C只需5-6行就可以有同样的程序。
结果放弃ASM,用C来写。
所以,虽然C会用到更多memory,不过还是偏好C。
|
|
|
|
|
|
|
|
发表于 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 并不是那么重要的。 |
评分
-
查看全部评分
|
|
|
|
|
|
|
发表于 7-11-2008 06:51 PM
|
显示全部楼层
上个sem才学了8051,原来是过时很久的东西了。
只不过我觉得很有趣哦,现在大学第二年了,8051是我第一个接触到比较practical的subject,assignment做银行的排队的那些东西。 |
|
|
|
|
|
|
|
发表于 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
|
显示全部楼层
|
|
|
|
|
|
|
发表于 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. 我没用过, 不过应该大同小异- void delay_ms (unsigned int milisec)
- {
- unsigned int i;
- for (i = 1; i <= milisec; i++)
- {
- TH0 = 0xF8;
- TL0 = 0xCD;
- TR0 = 1;
- while (!TF0);
- TF0 = 0;
- TR0 = 0;
- }
- }
复制代码
这个是最简单的写法。 不过会占用一个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
|
显示全部楼层
|
|
|
|
|
|
|
发表于 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 等等。。。 |
|
|
|
|
|
|
|
发表于 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 编辑 ] |
|
|
|
|
|
|
| |
本周最热论坛帖子
|