打印
[其它产品/技术]

单片机编程,为什么要用C语言?

[复制链接]
221|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2023-12-22 15:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
随着技术的发展,电子产品越来越多,方便了我们的日常生活,大多数电子产品上都有单片机,而单片机是通过执行软件逻辑来实现功能的。而单片机编程最合适的编程语言是汇编语言,但最常用、最普及的却是C语言。那么,单片机为什么要用C语言来编程呢?

1、什么是C语言?
C语言最早是在1972年的时候在DEC PDP-11计算机上首次跑起来的,它的设计者是美国人丹尼斯·麦卡利斯泰尔·里奇,他在贝尔实验室为UNIX操作系统设计的。后来他和同事共同编写了C语言编程标准--K&R,没想到日后C语言会成为广泛的编程语言并风靡全球。而之所以叫做C语言,是因为它是在B语言的基础上而设计出来的。
UNIX操作系统、Linux操作系统、MySQL等都是使用C语言编程实现的。

2、单片机有什么特点?
单片机是可编程器件,他的控制逻辑是通过软件来实现的。在单片机之前,控制逻辑是通过纯硬件来实现的,受硬件逻辑的约束无法实现太复杂的逻辑。而单片机是有指令集的,最开始通过使用汇编来编程,虽然汇编执行效率非常高,但是汇编的可读性和移植性非常差,而C语言正好能弥补汇编的不足。

举例:MOVC  A, @A+DPTR
功能:将 DPTR+A中的值 作为地址,寻找地址中的内容 送到累加器A中


(汇编语言举例)

单片机的寄存器配置。对单片机编程其实就是配置单片机的寄存器和端口配置,而这都是具有时许的,需要精准的控制。
单片机存储和执行程序需要Flash和RAM,而这些资源非常有限。所以,代码的占用空间情况非常重要。
单片机都是有指令集的。学习过单片机汇编的朋友可能会有印象,8051单片机具有111条指令集,并且有7种不同的寻址方式。
#include <stdio.h>
void bubble_sort(int arr[], int len) {
        int i, j, temp;
        for (i = 0; i < len - 1; i++)
                for (j = 0; j < len - 1 - i; j++)
                        if (arr[j] > arr[j + 1]) {
                                temp = arr[j];
                                arr[j] = arr[j + 1];
                                arr[j + 1] = temp;
                        }
}
int main() {
        int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
        int len = sizeof(arr) / sizeof(arr[0]);
        bubble_sort(arr, len);
        int i;
        for (i = 0; i < len; i++)
                printf("%d ", arr[i]);
        return 0;
}

(冒泡排序的C语言实现)

使用特权

评论回复
沙发
OKAKAKO|  楼主 | 2023-12-22 15:54 | 只看该作者
3、为什么要用C语言编程
前文所说,单片机的汇编指令比较难记,可能存在两种情况:一是更换硬件平台,这要重新适配指令集、更新寄存器访问地址,比较麻烦;二是换人维护程序,汇编的可读性比较差需要较长的时间才能理解别人的程序。
而C语言就比较灵活了,正好能弥补汇编的劣势。
不需要**单片机的指令集,只需要通过寄存器的配置就能让单片机正常工作;
C语言有指针、数组、结构体、联合体、枚举等各种类型,大大增强了编程的灵活性和程序处理能力;
C语言方便模块化编程,可以实现代码的规范化。


C语言编程

使用特权

评论回复
板凳
forgot| | 2023-12-25 20:05 | 只看该作者
其实也可以不用c语言给单片机编程的,这不是跟自己过不去嘛

使用特权

评论回复
地板
MessageRing| | 2023-12-26 10:06 | 只看该作者
因为汇编太麻烦了

使用特权

评论回复
5
中国龙芯CDX| | 2024-1-25 11:23 | 只看该作者
总结的很到位

使用特权

评论回复
6
LOVEEVER| | 2024-1-25 12:20 | 只看该作者
C语言就比较灵活了,正好能弥补汇编的劣势。

使用特权

评论回复
7
星辰大海不退缩| | 2024-1-28 15:51 | 只看该作者
主要是汇编太不人性化了,正好C灵活,适用性强

使用特权

评论回复
8
小夏天的大西瓜| | 2024-1-28 16:32 | 只看该作者
单片机是有指令集的,最开始通过使用汇编来编程,虽然汇编执行效率非常高,但是汇编的可读性和移植性非常差,而C语言正好能弥补汇编的不足。

使用特权

评论回复
9
zwsam| | 2024-1-29 10:08 | 只看该作者

使用特权

评论回复
10
发呆爱好者| | 2024-1-29 18:04 | 只看该作者
相对于汇编语言而言,C语言更加的人性化

使用特权

评论回复
11
代码输出机| | 2024-1-29 18:17 | 只看该作者
汇编语言确实是晦涩难懂,还是C语言比较人性化

使用特权

评论回复
12
超能电子| | 2024-1-29 18:32 | 只看该作者
汇编语言不好理解,C语言的诞生,可以解决这个问题。

使用特权

评论回复
13
szt1993| | 2024-1-29 22:09 | 只看该作者
目前IDE基本都是C开发的,肯定兼容性上更好

使用特权

评论回复
14
jf101| | 2024-1-29 22:46 | 只看该作者
C语言就比较灵活了,正好能弥补汇编的劣势。

使用特权

评论回复
15
lix1yr| | 2024-2-6 17:35 | 只看该作者
C语言是一种高效的编程语言,可以直接访问硬件并进行底层编程,这使得它非常适合嵌入式系统和单片机编程

使用特权

评论回复
16
t1ngus4| | 2024-2-6 18:46 | 只看该作者
C语言的代码可以相对容易地移植到不同的单片机平台上,因为它具有较高的可移植性

使用特权

评论回复
17
w2nme1ai7| | 2024-2-6 19:57 | 只看该作者
其实,C有丰富的标准库和第三方库支持,可以简化单片机编程过程,提高开发效率

使用特权

评论回复
18
q1d0mnx| | 2024-2-6 21:28 | 只看该作者
正常来说,C语言允许直接访问内存和硬件,可以进行底层的控制和优化,满足对性能和资源利用率的要求

使用特权

评论回复
19
b5z1giu| | 2024-2-6 22:34 | 只看该作者
我觉得是这样,C语言在单片机编程中具有较高的效率、可移植性和灵活性,因此被广泛应用于嵌入式系统和单片机编程中

使用特权

评论回复
20
chenjun89| | 2024-2-7 10:54 | 只看该作者
C语言入门快,开发效率高。

使用特权

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

本版积分规则

153

主题

1075

帖子

3

粉丝