学单片机之前要学什么?C语言和单片机有什么关系?

学习单片机之前要学什么?提起这个就想起我当年开始学习单片机的血泪史了。

08年我加入学校的电子实验室,为08年的全国电子大赛做准备。

08年的电子大赛分类3类,硬件设计类、单片机软件类、产品的调试动手类

现在的大赛应该有所改动。

我选择的是软件类,选择这个的原因是我觉得这个更加的神秘,就是这个神秘感让我对软件更加的有兴趣。

刚开始真的是一窍不通,我买了一本C语言书,独自学习了2个月,做了3本笔记,然后又学习了1个月的数字电路,到这个时候,我都快奔溃了,3个月过去了,还是啥都不懂!

这个时候我已经做好放弃的准备了,最后想想:自己选的路,跪着也要走完。

正好那段时间每天也闲得,就抱着边玩边学的态度,说出来你可能不信,不知不觉就把单片机的IO口、定时器、中断、串口通讯这些学会了。

那一刻,我就在想原来单片机开发也没有这么神秘!哈哈!

回顾一下自己的这个学习过程,到现在还是非常的难忘,相信很多的伙伴们可能还和我当年一样,坚持了一段时间,没有进展,一直处于一个入门前期的困惑当中。

其实单片机就是一个工具,在学习这个工具之前还是需要有别的知识作为铺垫。

比如说基本的数字电路基础简单的C语言编程基础

一、电路基础和C语言基础要学习的内容

1.数字电路基础需要学习什么?

掌握电阻、电容,三极管的基本用法,掌握单片机的高低电平的概念基本上就差不多了。

最好的学习渠道就是开发板的原理图,把开发板原理图搞懂基本上就能做一些项目了。

2. C语言编程基础

C语言基础的学习,必须要掌握一些基本的语法,和变量的定义。

具体的学习路径,可以到小破站找无际单片机编程比较系统全面,也是针对单片机来讲的。

学完单片机、电路基础、C语言的知识以后,就可以开始着手做一些项目了,前期先通过小项目开始,比如说电子时钟啥的。

二、C语言和单片机有什么关系?

通过前面的讲解,相信大家已经有一点概念了。

下面再给大家深入讲解下C语言和单片机的关系。

单片机支持C语言汇编来编写程序。

1. 通过C语言来编写

C语言编写的程序,最终需要通过keil工具编译成单片机可以识别的.hex文件的过程:

C程序源码->C编译器->汇编代码->汇编编译器->机器码(.HEX 或.BIN)

2.通过汇编来编写

单片机的程序早期都是汇编代码,汇编代码最接近硬件底层的低级语言,运行的效率比较高。

但汇编语言很很多比较明显的缺点:不方便阅读,移植性差,开发难度大等,随着技术的不断进步,大家就开始逐步的的使用C语言来代替汇编语言,(比较低端的芯片还是需要汇编来开发)。

所以,一般产品开发都是使用C语言,汇编一般是用来做很小的产品,或者单片机的启动文件。

单片机C语言编程,心得都在这里了

这个8*8按键程序的过程中,不管是在自己写还是参考别人程序的过程中,发现自己对C语言有些基本知识点和编程规范有很多不懂的地方,有些是自己以前的编程习惯不好,有些就是基础知识不扎实的表现,所以总结出来。

一、.件与.C文件的关系:

迄今为止,写过的程序都是一些很简单的程序,从来没有想到要自己写.件,也不知道.件到底什么用,与.C文件什么关系。只是最近写键盘程序,参考别人的程序时,发现别人写的严格的程序都带有一个“KEY.H”,里面定义了.C文件里用到的自己写的函数,如Keyhit()、Keyscan()等。

经过查找资料得知,.件就是头文件,估计就是Head的意思吧,这是规范程序结构化设计的需要,既可以实现大型程序的模块化,又可以实现根各模块的连接调试。

1、.件介绍:

在单片机C程序设计中,项目一般按功能模块化进行结构化设计。将一个项目划分为多个功能,每个功能的相关程序放在一个C程序文档中,称之为一个模块,对应的文件名即为模块名。一个模块通常由两个文档组成,一个为头文件*.h,对模块中的数据结构和函数原型进行描述;另一个则为C文件*.c ,对数据实例或对象定义,以及函数算法具体实现。

2、.件的作用

作为项目设计,除了对项目总体功能进行详细描述外,就是对每个模块进行详细定义,也就是给出所有模块的头文件。通常H头文件要定义模块中各函数的功能,以及输入和输出参数的要求。模块的具体实现,由项目组成根据件进行设计、编程、调试完成。为了保密和安全,模块实现后以可连接文件OBJ、或库文件LIB的方式提供给项目其他成员使用。由于不用提供源程序文档,一方面可以公开发行,保证开发人员的所有权;另一方面可以防止别人有意或无意修改产生非一致性,造成版本混乱。所以H头文件是项目的详细设计和团队工作划分的依据,也是对模块进行测试的功能说明。要引用模块内的数据或算法,只要用包含include指定模块H头文件即可。

3、.件的基本组成

/*如下为键盘驱动的头文档*/

#ifndef _KEY_H_ //防重复引用,如果没有定义过_KEY_H_,则编译下句

#define _KEY_H_ //此符号唯一, 表示只要引用过一次,即#i nclude,则定义符号_KEY_H_

/////////////////////////////////////////////////////////////////

char keyhit( void ); //击键否

unsigned char Keyscan( void ); //取键值

/////////////////////////////////////////////////////////////////

#endif

C语言和单片机C语言有何差异?

想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。很多想入门单片机的同学都会先学习C语言再入门单片机,但是学着学着发现明明同样都是C语言,为什么单片机C语言和我当初学的C语言有差异呢?

单片c语言相对于C语言增加了一些基本的指令,还有变量的赋值16进制,当然单片c语言只牵涉到普c语言非常基础部分。

主要的差异具体体现在:

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

2C是一门高级,它需要经过编译成汇编语言机器才能读懂,所以每个平台的编译器编译成对应平台汇编的程,每个平台的汇编不一,当然编译器也不一样 DOSTC2 TC3 WINDOWSVC 8051C51都有自已的编译。具体区别是由编译器决,只能参考对应的编译手,即使同种平台不同的编译器C的扩展也有不同。

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

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

本期先分享到这里,想要进群学习单片机编程的同学可以私信我,回我要入,与我们一起成长,喜欢的可以点个赞关注我们!C语言是我们入门嵌入式单片机所学习的一门语言,也IOS开发、单片机开发等应用上具有重要应用的一门语言,虽C语言与单片C语言C++C#等有或小或大的差异,但他们的编译机理、表达形式基本都是大同小异的

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。