找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7094|回复: 11
收起左侧

单片机是不是所有芯片都可以用C语言编写?

  [复制链接]
ID:555516 发表于 2019-6-16 00:06 | 显示全部楼层 |阅读模式
我在论坛上面见到的代码基本都是用C来写的,那是不是所以芯片都可以用C来写,而且汇编语言用在哪里?它们两者的有什么优缺点?小白在线提问....
回复

使用道具 举报

ID:123289 发表于 2019-6-17 14:50 | 显示全部楼层
计算机只能识别机器码,即0101,根据这些有序排列的机器码的含义(即硬件指令=这些机器码),来运行程序。任何语言的程序最终都必须转成机器码,否则计算机不认识。
但0101的机器码太不方便记意了。于是就用方便记意的语句代替它,这就产生了两个问题:
1、用什么语句替代机器码?
2、谁把它再译回到机器码?
计算机是外国人发明的,自然用了英文的语句,不过又带来了一个新的问题:
一个语句替代多少条机器码指令?这是回答你问题的关键了:
汇编语言:一个语句替代一条机器码指令,因此它最接近机器码,最灵活,也最难掌握。
C语言:一个语句替代一条或多机器码指令,因此它效率高,但不灵活。
至于“谁把它再译回到机器码?”,编程平台帮你完成了,最常用的“翻译”是KELL。
明白上述的道理后,就会明白:
C是由若干条汇编语句组成的。但这些,用C的人看不出来,因为C不关心汇编,就没有必要展示给你看,不过想看也看得到,每次对C程序编译时,也会生成汇编代码。
由于C建立在汇编的基础上,所以它的规矩多且严格,稍不小心,平台就不认识,C语言强力地依赖库函数(各种子程序),但通俗易懂易掌握。
汇编则只依据CPU的指令系统写程序,天马行空,任君游。但要求程序员有很强的逻辑、数学水平。
例如:开方。对C语言是一句话的事,而汇编,如你没有很好的数学基础,是根本无法想像得出来的。不过最终的机器码目标还是一致的。虽然C是一语话的事,也是由汇编写而来的,只不过不需要你写,而是前辈们用汇编写好了,做成了C函数库,你直接引用就可以了。
记住:计算机、单片机只认识机器码!
回复

使用道具 举报

ID:525821 发表于 2019-6-16 04:31 | 显示全部楼层
这个要看是否有编译与下载器。
回复

使用道具 举报

ID:332444 发表于 2019-6-16 06:25 | 显示全部楼层
就我的一知半解来说都是可以用C语言写的,汇编只是最初期的一种语言,编译器最终都转为二进制码给单片机去执行,单片机只能识别二进制命令,汇编的缺点是阅读不便,C语言的有点是接近人的自然语言习惯,语言发展到后面就越接近人的自然思维习惯。
回复

使用道具 举报

ID:67443 发表于 2019-6-16 15:27 | 显示全部楼层
汇编一般用在启动文件
回复

使用道具 举报

ID:455600 发表于 2019-6-16 22:10 | 显示全部楼层
汇编语言可以对某一位进行操作
回复

使用道具 举报

ID:564333 发表于 2019-6-17 10:57 | 显示全部楼层
在单片机一般都不写汇编语言,直接用c语言就行了
回复

使用道具 举报

ID:564333 发表于 2019-6-17 11:07 来自手机 | 显示全部楼层
一般情况下是可以的,但有时候c语言和单片机不匹配
回复

使用道具 举报

ID:564627 发表于 2019-6-17 15:22 | 显示全部楼层
一般情况是可以的
回复

使用道具 举报

ID:565126 发表于 2019-6-17 22:36 | 显示全部楼层
#在这里快速回复#汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
回复

使用道具 举报

ID:565126 发表于 2019-6-17 22:37 | 显示全部楼层
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。

C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。

汇编语言是低级语言,在编写程序的时候会把根据不同的情况指定使用不同的寻址方式,能够对内存和CPU里的通用寄存器直接操纵。不同的单片机系列会有不同的汇编语言
而C语言是高级语言,可以实现跨平台。编写程序无需指定CPU的指令执行情况,一段程序可以在不同体系结构的计算机上使用
回复

使用道具 举报

ID:565305 发表于 2019-6-18 09:37 | 显示全部楼层
准确地说,不是。

因为 C 编译器做的事情,在某些情况下你并不是非常非常了解。

在处理不可重入的快速中断时,如果用 C 做了实现,但是编出来的代码如果不在汇编下检查一下,可能这个中断时序的性能就不够了。如果一头往编译器上研究优化,可能方向都偏了----还不如直接汇编实现呢
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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