单片机C语言编译器的问题

Posted

tags:

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

我学51的时候用的的Keil(什么编译器就不知道了) .学PIC的时候编译器用的是PICC编译器,学AVR的时候用的是AVR GCC编译器。编译器的不同,多少会造成C语言编程方式的一些差异,请问:当我再接触新的编译器的时候,我查这个编译器的那些资料,能让我知道(中断服务程序格式、I/O口是否支持位操作、加载那些头文件等等)。以前我这些知识都是通过看别人的程序学的,觉得这样学的不系统。希望高人指条明路,让我们刚接触这些东西的时候不会这么茫然。

学习使用新的编译器之前,务必将该编译器的手册快速看一遍。并不需要通读完成,但至少要囫囵吞枣一遍了解这个编译器的基本特点,以及你所关心的那些特性。
一般编译器都会就这几个方面分成较详细的章节,分别予以介绍和说明。

至于I/O是否支持原子级位操作,这是微控制器平台的问题,跟编译器未必直接相关。
参考技术A 单片机C语言编译器不是可以随便换的。

每一种单片机,或者每个系列的单片机,编译器均有不同。
也就是说,单片机适用的编译器是由单片机芯片决定的。
可以根据单片机芯片类型,到对应的官网上去下载编译环境并安装使用。
参考技术B 编译原理就是词法分析,语法分析,语义分析和中间代码的产生,优化,最后是目标代码的生成。因此,所用的语法分析方法不同的话,所产生的结果就会有差别,若是想进一步了解编译的问题,可以看看
编译原理(陈火旺),里面介绍了,编译过程的各个阶段所需要的工作。

单片机初学者编程经常会碰到的问题及处理办法

在刚开始接触单片机学习的时候,尤其是C语言基础比较薄弱的老铁们,经常会碰到很多比较低级的错误,程序编译错误一大堆,但不知道如何解决!

一、程序开发经常容易出现的问题汇总:

①忘记写分号,或分号输入错误,导致程序编译错误。

基本上每个C语言初学者都会碰到这个问题,忘记写分号,或者分号的输入格式错误。

C语言中的每条语言结束都是以分号为标志的,而且分号必须是英文输入模式下的输入。

②大括号不对等,导致编译不通过

C语言程序编程,大括号的左括号和右括号必须一一对应,否则编译提示错误。

③函数未声明,编译提示函数功能违法。

C语言中编程种,调用代码后面书写的函数,必须要先在文件的前面声明,再调用,否则就会报错,如果是调用前面的函数,可以不声明。

为了养成良好的习惯,C文件的所有函数最好都可以在对应的.H文件或本文件的前面声明一下。

④语法错误,“=”和“==”混淆,“&”和“&&”,“|”和“||”用法不能区分。

初学者,对C语言的符号理解不够透彻,导致程序编写逻辑错误。

⑤没有将.C文件加到工程中,导致编译无法通过。

⑥打开工程,.h文件提示感叹号。

从其他地方下载或拷贝的工程,.h经常会提示感叹号,出现这个问题只需要重新编译,感叹号就会消失。

⑦其他问题,没有增加.h文件,没有写main函数,备注格式错误等。

二、如何处理这些问题

每一个软件程序开发者,刚开始学习软件编程的时候,都会出现这些零零碎碎的问题,但大家别慌,出现这些问题都是很正常的,软件开发学习过程都会有这样的经历,当我们敲的代码多了,自然而然就会掌握经验,避免这些问题。

刚开始学习编程,如何处理这些问题?

编译错误的处理办法:

处理方法1:双击提示的错误信息,光标会自动跳转到错误提示处。

在光标跳转到的位置,仔细检查问题,是不是大括号不对应?是不是分号写成了中文输入格式?是不是“|”写成了”||”.

这个是程序编程过程中最常用的方法。

处理方法2: 将编译的错误提示,点击右键复制,然后百度搜索相关信息。

这个办法适合于处理一些较复杂的问题

处理方法3: 向一些有经验的老工程请教。

这种方法是必须是要有人帮助你的情况下才能实现。

我们在单片机学习的过程中,经常会因为一些小的问题很久不能解决和处理而放弃单片机的学习,如果大家没有这样的资源,可以关注无际单片机编程,得到帮助。

三、单片机程序开发,养成良好的编程习惯

①掌握单片机C语言基础

C语言是单片机程序开发的基础,所以单片机开发首先要学习单片机C语言基础。关于C语言开发必须要掌握的知识点如下所示:

这块入门的系统教程可以到无际单片机编程拿,很多零基础的看了反馈都还不错。

②层次分明,大括号对应

1).大括号需要一一对应

2).被包含的大括号内的程序需要右移一个tab按键字符

3).如蓝色框,同一个括号内的程序需要左对齐书写

程序开发逻辑一定要分明,这样不仅方便我们阅读程序代码,也方便我们查找代码程序的错误和警告

④统一的变量定义格式

在C语言编程种,虽然对变量的名词,函数名,端口的定义没有严格的要求,但我们在程序种的变量名称,函数名的格式要尽量统一。

1).变量的定义: 习惯变量的头字母大写,后面字母小写,变量的名称尽量和对应的英文字母一致

例如:unsigned char KeyState;/// 按键的状态

2).端口的定义: 端口定义,名称全部大写  

例如:sbit LED1 = P3^0;  //定义LED1对应的IO是P3.0

3).函数名的书写:

函数的名称一般根据函数的功能来定义的,方便大家阅读,如下:

⑤增加规范的程序备注说明。

对功能比较重要,逻辑较复杂的函数,我们一定要做好程序的备注说明,这不仅方便别人阅读,也方便自己查看,自己写的程序放的时间太久了也容易忘记。

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

单片机c语言中常用的头文件有哪些?分别有啥作用啊?

怎么把c语言程序烧进单片机

单片机中C语言的程序与数据存储

单片机c语言模块化编程

单片机c语言宏定义有几种

Keil 单片机C语言编译软件的使用(涉及指针数组)