历史上的今天
今天是:2025年12月14日(星期日)
2022年12月14日 | C语言和单片机C语言有何差异?
2022-12-14 来源:zhihu
很多想入门单片机的同学都会先学习C语言再入门单片机,但是学着学着发现明明同样都是C语言,为什么单片机C语言和我当初学的C语言有差异呢?
单片机c语言相对于普通C语言增加了一些基本的指令,还有变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言非常基础部分。
主要的差异具体体现在:
1、单片机中C的语法一般都对 ANSI C有些扩展,及一些特殊写法如C51扩展的 data xdata bit sbit一类的,还有一些中断程序写法 void int() interrput 1一类的。
2、单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短、运行速度高、存储空间小、符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。
3、C是一门高级语言,它需要经过编译成汇编语言机器才能读懂,所以每个平台的编译器编译成对应平台汇编的程序,每个平台的汇编不一样,当然编译器也不一样。 DOS上的TC2 TC3 WINDOWS上的VC 8051的C51都有自已的编译器。具体区别是由编译器决的,只能参考对应的编译手册,即使同种平台不同的编译器对C的扩展也有不同。
4、C只是一种高级语言。它除具有一般高级语言的功能特性外,它可以很好的操作底层的硬件接口。在C语言的基础上,如果你把一些单片机的端口或特殊功能寄存器加于定义,使用的时候会更加方便,写语句的时候,直接直观的编写。这样就差不多是单片机C语言。
回复“我要入门”,可领取C语言学习资料!C语言是我们入门嵌入式单片机所学习的一门语言,也是IOS开发、单片机开发等应用上具有重要应用的一门语言,虽然C语言与单片机C语言、C++、C#等有或小或大的差异,但他们的编译机理、表达形式基本都是大同小异的!
上一篇:为什么别人学单片机这么快
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:48 编辑 活动介绍 恩智浦半导体(NXP Semiconductors)是一家新近独立的半导体公司,由飞利浦公司创立,已拥有五十年的悠久历史,主要提供工程师与设计人员各种半导体产品与软件,为消费电子、安全应用、 ...… 查看全部问答> |
|
为什么我的论文题目那么新。。。 课题:灯泡验光控制器设计 , 网上都找不到相关的资料, 可恶。。。我同学的温控资料网上多得是,,郁闷中。。。 另求篇51的英文论文 毕业设计翻译用3000字就OK ...… 查看全部问答> |
|
不知各位遇到过TI C2000 Piccolo Microcontrollers不能烧写FLASH的问题没? 小弟遇到的问题如下: 软件配置:CCS3.3.82.13+F2802x_CSP_RTM.exe+FlashAPIInterface2802xV1_00a.out+F28027.CMD 硬件配置:TDS510仿真器+F28027最小系统板 问题 ...… 查看全部问答> |
|
该平台可以管理车辆控制系统、导航仪和音响等娱乐设备,并能监控车辆运行及环境信息。通过合理使用STR750的各种通信接口,满足车载控制系统的功能要求。要求按照实际需要设计出一个功能丰富的通用控制平台,进行软硬件系统设计,实现相应的功能。… 查看全部问答> |
|
程序在窗口输入的情况下,一切正常。 但当把数据编入软件,不用输入,直接使用时,会提示错误。 下面这段程序,问题在那里? CByteArray m_1; m_1.SetSize(8); m_1[0]=0x01; m_1[1]=0x03; m_1[2]=0x00; m_1[3]=0x08; m_1[4]=0x00; m_1[5] ...… 查看全部问答> |
|
请教各位大侠,我用MSP430F149驱动光耦来控制VICOR模块的PC端,之前使用一直没有问题,后来客户说打开电源输出的时候有问题:电源接收到打开输出的指令后,开始有输出电压,但是很快降到0,反复操作一直都是这种现象,后来打开电源发现源头在单片机 ...… 查看全部问答> |
|
从\"__irq\"到“interrupt”: #pragma INTERRUPT( int_handler [, interrupt_type] ); interrupt void int_handler() & ...… 查看全部问答> |
|
我想用LM2576实现+36v变-5v,结果,当输入电压从0v开始增加时,在很低的电压附近,电源就保护了。我参照的电路如下,用的是LM2576s-5.0。请问这是什么原因?说明一点,供电电源没有问题。 … 查看全部问答> |




