张明峰 2004-4-7 于上海 1 of 26
第十一章 PIC单片机的 C 语言编程
11.1 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 单片机