C语言与单片机C语言的区别 急求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言与单片机C语言的区别 急求相关的知识,希望对你有一定的参考价值。

现在学的C语言 发现书本上的C语言和单片机的C语言是有区别的 C语言的基本知道了 但单片机的C语言基本不知道(那些特殊的指令等,) 单片机C语言的基本编程思想也没有 哪位大哥 可以给我这些东西 指导一下 追加分
我现在C语言基本学完了 但单片机还没开始学 只是稍微了解一些

单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。具体体现在:

1、单片机中C的语法一般都对 ANSI C有些扩展,及一些特殊写法 如C51扩展的 data xdata bit sbit 一类的,还有一些中断程序写法 void int() interrput 1 一类的。

2、C是一门语言,由对应平台的编译器编译成对应平台汇编的程序,各平台的汇编不一样,当然编译器也不一样 DOS上的TC2 TC3   WINDOWS上的VC 8051的C51都有自已的编译器 。具体区别是由编译器决的,只能参考对应的编译手册,即使同种平台不同的编译器对C的扩展也有不同。

3、单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。

C51本质就是C,是为在单片机上使用C而出来的,如果C不牢固,还是多掌握一点C再学C51,不过新增的知识也不少,而且基本上跟C无关。

4、C只是一种高级语言。它除具有一般高级语言的功能特性外,它可以很好的操作底层的硬件接口。在C语言的基础上,如果你把一些单片机的端口或特殊功能寄存器加于定义,使之方便于在 写语句的时候,直接直观的编写。这样就差不多是单片机C语言。

C语言的特性差不多都可以用于单片机C语言,因为它们的编译机理都是一样的。

扩展资料:

C语言:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

单片机的C语言:

单片机软件设计使用C语言作为编程开发软件,采用模块化的程序结构,设计了按键模块程序、RFID模块程序、日历时钟模块程序、GPRS模块程序、显示存储模块程序等,并编写系统主程序,将五个程序模块组合在一起,实现单片机控制系统的整体功能。

51单片机支持三种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是目前使用较广的单片机编程语言。

单片机的C语言采用C51编译器(简称C51)。有C51产生的目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用

参考资料:

C语言-百度百科

单片机C语言-百度百科

参考技术A

C语言与单片机C语言的区别:

1、编译器的区别

C语言的编译器有GCC(GNU组织开发的开源免费的编译器)、MinGW(Windows操作系统下的GCC)、Clang(开源的BSD协议的基于LLVM的编译器)、Visual C++ :: cl.exe(Microsoft VC++自带的编译器)。

单片机C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。

2、内容的区别

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

单片机C语言基于C语言的单片机编程语言,是以C语言为基础加以调整的。

3、语言特性的区别

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

单片机C语言基于单片机进行的程序开发,在有周围外设支持的情况下,用软件来控制的部分通过单片机编程来实现。单片机能识别的语言是硬件语言即汇编,因此编程就是围绕汇编来实现。

4、语言优点的区别

C语言简洁紧凑、灵活方便、运算符丰富、数据类型丰富、表达方式灵活实用、允许直接访问物理地址,对硬件进行操作、生成目标代码质量高,程序执行效率高、可移植性好、表达力强。

单片机C语言目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用。

参考资料来源:百度百科——C语言

百度百科——单片机C语言编程

参考技术B 准确讲不是C语言与单片机C语言的区别,单片机c语言只是用到了c语言的一丢丢,主要有循环语句,条件语句,宏定义,指针,结构体等,用到的库都是单片机的,至于你说的指令那都是单片机的事,跟c语言没有关系,单片机的指令跟单片机的构架、定义有关系。c语言编程可以不用掌握汇编指令,但是必须掌握各个寄存器的操作以及相关的命令字,因为只有你掌握了寄存器的操作才能用c语言编程指挥单片机。个人建议开始用汇编编程,编写简单的控制程序。这样可以加深对单片机的了解,熟悉各个寄存器;后面就可以用c语言编写规模较大的程序,毕竟c语言容易上手,用起来相对简单! 参考技术C 单片机所用的C语言属于C语言,学单片机初学者不需要把C语言搞得多么好,会用几个关键字if什么的等等就够用了。单片机比纯C语言多了一个东西叫寄存器,其实就是单片机“内部变量”,在头文件中(每个单片机有属于自己的头文件,编译器会自带,你只要知道文件名字就行,比如#include<reg51.h>)帮你定义好了,寄存器的作用就是配置参数,比如51有个寄存器叫P1,当你代码执行完P1=0XFF;时候单片机的8个名字叫P1(P1有8个引脚 P1^0~P1^7)的引脚就会输出高电平,P1=0XF0;那么就是前四个引脚(P1^4~P1^7)是高电平,后四个是低电平。
单片机就是通过C语言的语言方式向单片机寄存器写数据,单片机自己会根据这些数据去控制它的模块比如引脚状态。
参考技术D 你学习到的C语言是标准C语言,也是行业标准,通用性强;而单片机C语言是构建在标准C的基础上的,你先学习了单片机,之后用C语言编程时,根据不同的单片机,还是有差异的,指令的形式会不同,但是实质都是对寄存器的操作;而相同点我认为就是语句的形式不变,基本格式不变,即语法不变;编程的思路也都一样,但是实现某种操作的算法则可以变化多端。
你别急,先学习单片机的硬件知识,并开始边学边编程练习,多看视频,多看书上的实例,自己尝试练习很容易就上手了啊!我只是学习过51单片机,凌阳61单片机和Atmel 的mega128单片机,也是跟你一样的初学者啊!!

急求一道c语言编程的答案!!时间急迫!!快快!!

下面10组题目中任选其一完成。【难度系数:10】

1. 文件压缩及解压缩程序。
题目:设计一种压缩格式的压缩及解压缩程序。
提示:调用已有的压缩及解压缩函数库实现。
参考:下面格式选择一种实现
CAB格式:libmspack,http://www.kyz.uklinux.net/libmspack/
ZIP格式:http://www.zlib.net/,ZLIB Compression Library (PKZIP/GZIP Compression)
UNRAR:http://www.rarlab.com/rar_add.htm

2. 数据加密程序
题目:编写一种加密算法的程序
提示:调用已有的加密函数库或利用算法原理实现。http://www.cryptopp.com/
参考:下面算法选择一种实现
已知的加密算法有许多种,例如:RC6, MARS, Rijndael, Twofish, Serpent, IDEA, DES, Triple DES (DES-EDE2 and DES-EDE3), DESX (DES-XEX3), RC2, RC5, Blowfish, Diamond2, TEA, SAFER, 3-WAY, GOST, SHARK, CAST-128, Square, CBC padded, CBC ciphertext stealing (CTS), CFB, OFB, counter mode, ARC4, SEAL, WAKE, Sapphire, BlumBlumShub, RSA, DSA, ElGamal, Nyberg-Rueppel (NR), BlumGoldwasser, Rabin, Rabin-Williams (RW), LUC, LUCELG, Elliptic Curve Cryptosystems, PKCS#1 v2.0, OAEP, PSSR, IEEE P1363 EMSA2, Diffie-Hellman (DH), Unified Diffie-Hellman (DH2), Menezes-Qu-Vanstone (MQV), LUCDIF, SHA-1, MD2, MD5, HAVAL, RIPEMD-160, Tiger, MD5-MAC, HMAC, XOR-MAC, CBC-MAC, DMAC, Luby-Rackoff, MDC, ANSI X9.17 appendix C, PGP's RandPool

3. 位校验程序
题目:编写数据通信中位校验程序
参考:下面方法选择一种实现
位校验方法有:CRC16、CRC32、CRC8等

4. 常用算法演示程序
题目:编写常用算法的演示程序
参考:下面算法选择一种实现
矩阵旋转算法
Prim算法
拷贝链表的O(n)算法
随机算法
大数阶乘源码
格雷码算法
算术表达式的计算
寻找链表中间节点算法
模式匹配的KMP算法
最小堆/哈希表/二叉树/平衡二叉树/红黑树
最小生成树
Kruskal算法:(贪心)
最短路径Dijkstra 算法

5. 排序算法程序
题目:编写七种排序算法的演示程序
快速排序;
插入排序;
选择排序;
冒泡排序;
堆排序;
归并排序;
基数排序;

6. 高精度计算
题目:高精度计算是指位数较长(超出C语言数据类型范围)的计算问题。
参考:下面要求选择一种实现
高精度加法
高精度减法
高精度乘以低精度
高精度乘以高精度
高精度除以低精度
高精度除以高精度

7. 查找算法
题目:编写查找算法的演示程序
参考:下面算法选择一种实现
顺序查找
折半查找
树形查找

8. 数据结构相关算法
题目:编写链表处理程序
参考:
链表的定位函数
单链表的插入操作
单链表的删除操作
双链表的插入操作(插入新结点q)
双链表的删除操作

9. 用链表实现有序线性表
题目:用链表实现有序线性表
参考:实现的功能
(1)有序线性表的元素是按值从小到大的顺序排列的。本题要求用带表头结点的单链表实现有序线性表。
(2)用户界面要求设计为菜单方式。程序运行后,显示如下功能菜单:
1. 置空表
2. 插入
3. 删除
4. 查找
5. 输出
0. 退出

10. ACM/ICPC试题
题目:编写http://acm.uva.es或http://icpc.baylor.edu/icpc/上的ACM问题集程序
参考:试题自选,要求英文试题内容,全英文程序摘要、基本结构及算法讲解。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MAX_SIZE=100;
void partition1(int A[],int n,int first,int last,int &mid)//划分

int i=first,j=last,x=A[i];
while(i<j)

while(i<j&&A[j]%3!=0)
j--;
if(i<j)

A[i]=A[j];i++;

while(i<j&&A[i]%3==0)
i++;
if(i<j)

A[j]=A[i];
j--;


A[i]=x;
mid=i;

void partition2(int A[],int n,int first,int last,int &mid)//划分

int i=first,j=last,x=A[i];
while(i<j)

while(i<j&&A[j]%3!=1)
j--;
if(i<j)

A[i]=A[j];i++;

while(i<j&&A[i]%3==1)
i++;
if(i<j)

A[j]=A[i];
j--;


A[i]=x;
mid=i;

void QuickSort(int A[],int n,int first,int last)//快速排序

int middle;
if(first<last)

partition1(A,n,first,last,middle);
partition2(A,n,middle+1,last,middle);


void display(int A[],int n)

int i=0;
for(i=0;i<n;i++)
cout<<A[i]<<" ";
cout<<endl;

int main()

int array[MAX_SIZE],i=0,n=1;
srand(time(0));
cout<<"提示:本程序是将一个整型数组调整为这样的数组:所有3的倍数在左边,所有除以 "<<endl;
cout<<"3余1的数放在中间,而所有除以3余2的数放在最右边.要求算法的时间尽可能少. "<<endl;
cout<<endl<<"数组中元素的值在1~n之间变化,请输入n的值:";
cin>>n;
for(i=0;i<MAX_SIZE;i++) //插入随机数
array[i]=rand()%n;
cout<<"排序前:"<<endl;
display(array,MAX_SIZE);
QuickSort(array,MAX_SIZE,0,MAX_SIZE-1);
cout<<"排序后:"<<endl;
display(array,MAX_SIZE);
system("PAUSE");
return 0;

快速排序
参考技术A 4. 常用算法演示程序
题目:编写常用算法的演示程序
参考:下面算法选择一种实现
矩阵旋转算法
Prim算法
拷贝链表的O(n)算法
随机算法
大数阶乘源码
格雷码算法
算术表达式的计算
寻找链表中间节点算法
模式匹配的KMP算法
最小堆/哈希表/二叉树/平衡二叉树/红黑树
最小生成树
Kruskal算法:(贪心)
最短路径Dijkstra 算法本回答被提问者采纳
参考技术B 问问题的该不会是。。。。xgd的吧。。。
你够可以的~~~不想自己做还搜难度系数最大的。。。

自己做个数学型的就行了呗。。那些里有特简单的。
参考技术C 第八个是最简单的,看看书呗~唉数据结构重修- -

以上是关于C语言与单片机C语言的区别 急求的主要内容,如果未能解决你的问题,请参考以下文章

急求一道c语言编程的答案!!时间急迫!!快快!!

c 语言中 bit与sbit的区别

单片机C语言设计里说的可重入函数是啥?和不可重入函数的区别是啥?

C51的数据类型和C语言的数据类型的区别?

C51与ANSI C语言的差异分析

单片机入门必知 | C与单片机C不一样?