打印
[技术问答]

单片机C语言和普通的C语言的差异

[复制链接]
1670|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
youtome|  楼主 | 2024-12-20 11:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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语言目标代码混合使用。

具体体现在:

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语言是我们入门编程所学习的一门语言,也是IOS开发、单片机开发等应用上具有重要应用的一门语言,虽然C语言与单片机C语言、C++、C#等有或小或大的差异,但他们的编译机理、表达形式都是一样的!

使用特权

评论回复
沙发
huahuagg| | 2024-12-23 11:50 | 只看该作者
其实差别不大,就是寄存器作为变量和内存地址对待就行了。

使用特权

评论回复
板凳
清芯芯清| | 2025-2-17 17:29 | 只看该作者
单片机的 C 语言 和普通的 C 语言 在语法上是相同的,但由于单片机的硬件资源有限且应用场景特殊,两者在实际开发中存在一些显著差异。

使用特权

评论回复
地板
gra22ce| | 2025-2-17 18:50 | 只看该作者
单片机通常具有以下硬件资源限制:内存有限:RAM 和 Flash 存储空间较小(如几 KB 到几十 KB)。处理能力有限:主频较低(如几 MHz 到几百 MHz)。外设资源有限:GPIO、定时器、ADC、UART 等外设数量有限。因此,单片机 C 语言编程需要特别注意

使用特权

评论回复
5
hight1light| | 2025-2-17 20:21 | 只看该作者
内存管理要注意,避免动态内存分配(如 malloc 和 free),尽量使用静态内存。

使用特权

评论回复
6
teaccch| | 2025-2-17 21:32 | 只看该作者
减少代码体积和运行时间,避免使用复杂的算法或库函数

使用特权

评论回复
7
canfeil| | 2025-2-18 09:12 | 只看该作者
合理使用外设资源,避免冲突。

使用特权

评论回复
8
nqty| | 2025-2-18 10:20 | 只看该作者
寄存器地址,需要查阅单片机数据手册,了解寄存器的地址和功能。

使用特权

评论回复
9
星星点点didi| | 2025-2-18 10:24 | 只看该作者
单片机 C 语言编程通常需要直接操作硬件寄存器,而普通 C 语言编程一般不需要关心底层硬件

使用特权

评论回复
10
wamed| | 2025-2-18 12:10 | 只看该作者
位操作,常用位操作(如 &、|、~、<<、>>)来配置寄存器。

使用特权

评论回复
11
twinkhahale| | 2025-2-18 13:24 | 只看该作者
volatile 关键字,用于防止编译器优化对寄存器的访问。

使用特权

评论回复
12
miltk| | 2025-2-18 14:25 | 只看该作者
单片机 C 语言编程中,中断处理是一个重要部分,而普通 C 语言编程通常不涉及中断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

4046

帖子

2

粉丝