找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10595|回复: 14
收起左侧

单片机编程和平时c语言编程的区别

  [复制链接]
ID:470571 发表于 2019-1-20 09:41 | 显示全部楼层 |阅读模式
我这个问题主要是想问,单片机与电脑在对c语言代码处理上有什么不同,不同在哪里,为什么用理解c语言编程的思路却写不好单片机编程等问题,希望有dalao能给我些解释,在下是个菜鸟萌新,实在感谢如果有dalao可以给我解答

回复

使用道具 举报

ID:123289 发表于 2019-1-20 10:41 | 显示全部楼层
计算机只能识别机器码,即0101,根据这些有序排列的机器码的含义(即硬件指令=这些机器码),来运行程序。任何语言的程序最终都必须转成机器码,否则计算机不认识。
但0101的机器码太不方便记意了。于是就用方便记意的语句代替它,这就产生了两个问题:
1、用什么语句替代机器码?
2、谁把它再译回到机器码?
计算机是外国人发明的,自然用了英文的语句,不过又带来了一个新的问题:
一个语句替代多少条机器码指令?这是回答你问题的关键了:
汇编语言:一个语句替代一条机器码指令,因此它最接近机器码,最灵活,也最难掌握。
C语言:一个语句替代一条或多机器码指令,因此它效率高,但不灵活。
至于“谁把它再译回到机器码?”,编程平台帮你完成了,最常用的“翻译”是KELL。
回复

使用道具 举报

ID:123289 发表于 2019-1-20 10:58 | 显示全部楼层
本帖最后由 yzwzfyz 于 2019-1-22 14:38 编辑

明白上述的道理后,就会明白:
C是由若干条汇编语句组成的。但这些,用C的人看不出来,因为C不关心汇编,就没有必要展示给你看,不过想看也看得到,每次对C程序编译时,也会生成汇编代码。
由于C建立在汇编的基础上,所以它的规矩多且严格,稍不小心,平台就不认识,C语言强力地依赖库函数(各种子程序),但通俗易懂易掌握。
汇编则只依据CPU的指令系统写程序,天马行空,任君游。但要求程序员有很强的逻辑、数学水平。
例如:开方。对C语言是一句话的事,而汇编,如你没有很好的数学基础,是根本无法想像得出来的。不过最终的机器码目标还是一致的。虽然C是一语话的事,也是由汇编写而来的,只不过不需要你写,而是前辈们用汇编写好了,做成了C函数库,你直接引用就可以了。
记住:计算机、单片机只认识机器码!
回复

使用道具 举报

ID:277550 发表于 2019-1-20 11:50 | 显示全部楼层

keil安装后,在C51\hlp中有c51.chm 帮助文件,可以看语法等知识
回复

使用道具 举报

ID:439075 发表于 2019-1-20 13:18 | 显示全部楼层
单片机也可以用C语言,和PC机C语言相比,算法是一样的,只是单片机编程要熟悉一些单片机的端口,内部外设资源的配置等,这方面宏定义及指针变量用得较多。
回复

使用道具 举报

ID:469417 发表于 2019-1-20 23:47 | 显示全部楼层
本帖最后由 刀刀见红 于 2019-1-21 04:21 编辑

区别?区别就如同当初你上学,吃穿都是你父母给你提供,你只上学就行,现在你成家了,吃穿要自己解决,要工作,也许边工作边学习!同理,当初在PC上玩C,键盘是怎样输入,显示器是怎样显示不用你操心,现在独立了,那输入输出依然还是存在的,那就得你自己来认识他,操作他!所以说懂了C只是万里长征才走出了第一步,后面路还长,还要勤学苦练!

评分

参与人数 5黑币 +92 收起 理由
jinsheng7533967 + 35 很给力!
Trump1438 + 15 很给力!
yoxi + 15 很给力!
Sawardeakar + 15
#include51.h + 12 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:142059 发表于 2019-1-21 03:43 来自手机 | 显示全部楼层
PC上的C和单片机的C是差不多的,只有设计硬件的函数才可能用不了,比如scanf,printf等,但是在MDK里printf是可以重定向实现调用,而string.h里的大部分函数都是可以直接用,因为都是一些字符处理函数,纯软件,不涉及硬件,说到这应该有个了解了吧,涉及单片机硬件的就和pc上不同,不涉及就一样通用。
回复

使用道具 举报

ID:155507 发表于 2019-1-21 05:47 | 显示全部楼层
头文件不同
集成开发环境不同。
最关键的是一般来说,嵌入式物理资源远比计算机少,比如内存,缓存之类的

你会发现单片机编程的C语言和标准C会有差别,很多单片机C语言在标准C里是不被承认的,这个也能说明单片机和电脑的区别吧。
回复

使用道具 举报

ID:342197 发表于 2019-1-21 09:58 | 显示全部楼层
物理层的硬件结构大不相同,但是单片机C语言与计算机的C语言算法大致一致。
回复

使用道具 举报

ID:168777 发表于 2019-1-21 11:28 | 显示全部楼层
其实主要的语法是一样的,只不过C语言只是一个实现结果的过程,是一种工具,单片机的实现不光要会c语言的语法知识,还需要掌握单片机的硬件知识。这个是从单片机的思路来编程
回复

使用道具 举报

ID:453974 发表于 2019-1-21 12:04 | 显示全部楼层
自认为没啥区别,高级芯片,编程的语言该用上的也都用上了
回复

使用道具 举报

ID:21069 发表于 2019-1-21 13:17 | 显示全部楼层
后面的大家说的越说越靠谱,前面的有一种文不对题的感觉!楼主现在是碰到了C与单片机学习方法不同的困惑,单片机多了许多的硬件的东西(并不是说PC就没有,只是学C时不用我们理会),也多了许多的电路,许多不同属性的新器件。理所当然的这与学C的思路就不一样了.C学的好,并不代表就能搞定单片机,假如说不会模电数电,那就是硬伤,想要的结果整不出来。调试遇到的问题也难分出是硬件还是软件.单片机内部还有独有的定时器,中断,ADC等资源,掌握不了这些就是软伤了。所以说学单片机要掌握的东西很多,是综合技能很强的事物!路很长,多加油!

评分

参与人数 4黑币 +80 收起 理由
areyouok + 35 很给力!
#include51.h + 15 很给力!
刀刀见红 + 15 赞一个!
shuisheng + 15 赞一个!

查看全部评分

回复

使用道具 举报

ID:319023 发表于 2019-1-21 17:37 | 显示全部楼层
单片机编程就是更偏向硬件,C语言 编程自己定义就好了。
回复

使用道具 举报

ID:232052 发表于 2019-1-23 18:25 | 显示全部楼层
其实本质是一样的,只是用电脑编程是遵守电脑的规则去编程,用单片机是用单片机的规则去编程。
回复

使用道具 举报

ID:472248 发表于 2019-1-23 22:06 | 显示全部楼层
首先头文件是不同的
所需实现的功能也不同
单片机c语言一般不会有返回值
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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