微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机C语言编程教程(1)

PIC单片机C语言编程教程(1)

时间:11-22 来源:互联网 点击:
PIC 单片机 C 语言编程简介

C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、

代码的重复利用率高、便于跨平台的代码移植等等,因此 C 语言编程在单片机系统设计中已得到越

来越广泛的运用。针对 PIC 单片机的软件开发,同样可以用 C 语言实现。

但在单片机上用 C 语言写程序和在 PC 机上写程序绝对不能简单等同。现在的 PC 机资

源十分丰富,运算能力强大,因此程序员在写 PC 机的应用程序时几乎不用关心编译后的可

执行代码在运行过程中需要占用多少系统资源,也基本不用担心运行效率有多高。写单片机

C 程序最关键的一点是单片机内的资源非常有限,控制的实时性要求又很高,因此,如

果没有对单片机体系结构和硬件资源作详尽的了解,以笔者的愚见认为是无法写出高质量实

用的 C 语言程序。这就是为什么前面所有章节中的的示范代码全部用基础的汇编指令实现

的原因,希望籍此能使读者对 PIC 单片机的指令体系和硬件资源有深入了解,在这基础之

上再来讨论 C 语言编程,就有水到渠成的感觉。

本书围绕中档系列 PIC 单片机来展开讨论,Microchip 公司自己没有针对中低档系列 PIC

单片机的 C 语言编译器,但很多专业的第三方公司有众多支持 PIC 单片机的 C 语言编译器

提供,常见的有 Hitech、CCS、IAR、Bytecraft 等公司。其中笔者最常用的是 Hitech 公司的

PICC 编译器,它稳定可靠,编译生成的代码效率高,在用 PIC 单片机进行系统设计和开发

的工程师群体中得到广泛认可。其正式完全版软件需要购置,但在其网站上有限时的试用版

供用户评估。另外,Hitech 公司针对广大 PIC 的业余爱好者和初学者还提供了完全免费的学

习版 PICC-Lite 编译器套件,它的使用方式和完全版相同,只是支持的 PIC 单片机型号限制

在 PIC16F84、PIC16F877 和 PIC16F628 等几款。这几款 Flash 型的单片机因其所具备的丰富

的片上资源而最适用于单片机学习入门,因此笔者建议感兴趣的读者可从 PICC-Lite 入手掌

握 PIC 单片机的 C 语言编程。

在此列出几个主要的针对 PIC 单片机的 C 编译器相关连接网址,供读者参考:

Hitech-PICC: www.htsoft.com


IAR:www.iar.com

CCS:www.ccsinfo.com/picc.shtml

ByteCraft:www.bytecraft.com/mpccaps.html


本章将介绍 Hitech-PICC 编译器的一些基本概念,由于篇幅所限将不涉及 C 语言的标准

语法和基础知识介绍,因为在这些方面都有大量的书籍可以参考。重点突出针对 PIC 单片

机的特点而所需要特别注意的地方。

11.2

Hitech-PICC 编译器

PICC 基本上符合 ANSI 标准,除了一点:它不支持函数的递归调用。其主要原因是因

为 PIC 单片机特殊的堆栈结构。在前面介绍 PIC 单片机架构时已经详细说明了 PIC 单片机

中的堆栈是硬件实现的,其深度已随芯片而固定,无法实现需要大量堆栈操作的递归算法;

另外在 PIC 单片机中实现软件堆栈的效率也不是很高,为此,PICC 编译器采用一种叫做“静

态覆盖”的技术以实现对 C 语言函数中的局部变量分配固定的地址空间。经这样处理后产

生出的机器代码效率很高,按笔者实际使用的体会,当代码量超过 4K 字后,C 语言编译出

的代码长度和全部用汇编代码实现时的差别已经不是很大(<10%),当然前提是在整个 C

代码编写过程中须时时处处注意所编写语句的效率,而如果没有对 PIC 单片机的内核结构、

各功能模块及其汇编指令深入了解,要做到这点是很难的。

11.3

MPLAB-IDE 内挂接 PICC

PICC 编译器可以直接挂接在 MPLAB-IDE 集成开发平台下,实现一体化的编译连接和

原代码调试。使用 MPLAB-IDE 内的调试工具 ICE2000、ICD2 和软件模拟器都可以实现原

代码级的程序调试,非常方便。

首先必须在你的计算机中安装PICC编译器,无论是完全版还是学习版都可以和

MPLAB-IDE挂接。安装成功后可以进入IDE,选择菜单项Project Set Language Tool

Locations…,打开语言工具挂接设置对话框,如图 11-1 所示:

%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/7.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/7.jpg" />

图 11-1 MPLAB-IDE 语言工具设置对话框

在对话框中选择“HI-TECH PICC Toolsuite”栏,展开可执

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top