打印
[其它应用]

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

[复制链接]
957|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
随着技术的发展,电子产品越来越多,方便了我们的日常生活,大多数电子产品上都有单片机,而单片机是通过执行软件逻辑来实现功能的。而单片机编程最合适的编程语言是汇编语言,但是最常用、最普及的却是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);
        return 0;
}
冒泡排序的C语言实现

3.为什么要用C语言编程
前文所说,单片机的汇编指令比较难记,可能存在两种情况:1)更换硬件平台,这要重新适配指令集、更新寄存器访问地址,比较麻烦;2)换人维护程序,汇编的可读性比较差需要较长的时间才能理解别人的程序。

而C语言就比较灵活了,正好能弥补汇编的劣势。

不需要**单片机的指令集,只需要通过寄存器的配置就能让单片机正常工作;

C语言有指针、数组、结构体、联合体、枚举等各种类型,大大增强了编程的灵活性和程序处理能力;

C语言方便模块化编程,可以实现代码的规范化。



C语言编程

使用特权

评论回复
沙发
zwsam| | 2023-11-24 10:37 | 只看该作者

使用特权

评论回复
板凳
两只袜子| | 2023-12-4 09:21 | 只看该作者
使用C语言进行单片机编程可以提高程序的执行效率、移植性、可读性和开发效率,同时可以结合汇编语言实现更高效和灵活的编程。

使用特权

评论回复
地板
AdaMaYun| | 2023-12-5 15:29 | 只看该作者
C语言就比较灵活了,正好能弥补汇编的劣势

使用特权

评论回复
5
LOVEEVER| | 2023-12-5 17:05 | 只看该作者
简单易用执行效率、移植性、可读性和开发效率

使用特权

评论回复
6
tpgf| | 2023-12-14 11:46 | 只看该作者
我觉得主要是不是从人这方面来说的  c是一种高级语言

使用特权

评论回复
7
观海| | 2023-12-14 12:26 | 只看该作者
肯定是因为c语言最适合单片机编程了

使用特权

评论回复
8
guanjiaer| | 2023-12-14 13:09 | 只看该作者
主要感觉c是将机器和人连接起来最好的语言了

使用特权

评论回复
9
szt1993| | 2023-12-14 19:10 | 只看该作者
C语言最直接接近机器语言

使用特权

评论回复
10
keaibukelian| | 2023-12-14 20:21 | 只看该作者
c语言的可读性很不错  而且向下兼容性也非常出色

使用特权

评论回复
11
heimaojingzhang| | 2023-12-14 20:54 | 只看该作者
感觉c语言就像我们平时说话一样 比较友好

使用特权

评论回复
12
八层楼| | 2023-12-14 21:30 | 只看该作者
我确实 一直都不太会使用汇编语言

使用特权

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

本版积分规则

980

主题

4055

帖子

10

粉丝