技术热线: 4007-888-234

PIC单片机 C编程技巧

更新时间: 2019-03-23
阅读量:2587

十年专注单片机方案开发的方案公司英锐恩,分享PIC单片机 C编程技巧——PICC和MPLAB集成。英锐恩现提供服务产品涉及主控芯片:8位单片机、16位单片机、32位单片机及各类运算放大器等。

1、PICC和MPLAB集成

PICC和MPLAB集成:

PICC有自己的文本编辑器,不过是DOS风格的,看来PICC的工程师要专业冷到酷底了...

大家大可不必用它,如果你没什么癖好的话,你不会不用UltraEdit 吧?

1:建立你的工作目录:

建议在C盘根目录下建立一个以A开头的文件夹做为工作目录.因为你会发现它总是在你查找文件时候第

一个跳入你眼中.

2:MPLAB调用PICC.(以MPLAB5.7版本为例子)

启动MPLAB.在Project-->Install Language Tool:

Language Suite----->hi-tech picc

Tool Name ---->PICC Compiler

Executable ---->c:hi-picinpicc.exe (假如你的PICC是默认安装的)

选Command-line

最后OK.

上面这步只需要设定一次,除非你重新安装了MPLAB.

3:创建你的项目文件:(假如你实现用EDIT编辑好了一个叫AA.C的C代码文件)

Project-->New Project-->File Name--->myc (假如我们把项目文件取名字叫MYC.PJT)

右边窗口当然要选择中你的工作目录.然后OK.

4:设定你的PICC工作参数:

Project-->Edit Project

上面4个栏目就用默认的,空的也就让它空着,无所谓的.

需要修改的是:

Development Mode---->选择你的PIC型号.当然要选择Mplab SIM Simulator

让你可以用软件仿真.

Language Tool Suite--->HI-TECH PICC

上面的步骤,你可能会遇见多个提示条,不要管它,一路确定.

下面是PICC编译器的选择项:

双击Project Files 窗口里面的MYC.HEX,出现一个选择拦目.命令很多,大家可以看PICC文本编

辑器里面的HELP,里面有详细说明.

下面就推荐几个常用也是建议用的:

Generate debug info 以及下面的2项.

Produce assembler list file

就在它们后面打勾即可,其它的不要管,除非你有特殊要求.

5:添加你的C代码文件:

当进行了前面几步后,按Add Node 找到AA.C文件就OK了.

6:编译C代码:

最简单的一步:直接按下F10.

编译完后,会出现各种调试信息.C代码对应的汇编代码就是工作目录里面的AA.IST,用EDIT

打开可以看见详细的对比.

7:其它,要是一切都没问题,那么你就可以调试和烧片了,和以往操作无异.

2、如何从汇编转向PICC

首先要求你要有C 语言的基础。PICC 不支持C++,这对于习惯了C++的朋友还得翻翻C 语言的书。C

代码的头文件一定要有#i nclude,它是很多头文件的集合,C 编译器在pic.h 中根据你的芯片自动栽

入相应的其它头文件。这点比汇编好用。载入的头文件中其实是声明芯片的寄存器和一些函数。顺便摘抄

一个片段:

static volatile unsigned char TMR0 @ 0x01;

static volatile unsigned char PCL @ 0x02;

static volatile unsigned char STATUS @ 0x03;

可以看出和汇编的头文件中定义寄存器是差不多的。如下:

TMR0 EQU 0X01;

PCL EQU 0X02;

STATUS EQU 0X03;

都是把无聊的地址定义为大家公认的名字。

一:怎么附值?

如对TMR0 附值,汇编中:

MOVLW 200;

MOVWF TMR0;

当然得保证当前页面在0,不然会出错。

C 语言:

TMR0=200;//无论在任何页面都不会出错。

可以看出来C 是很直接了当的。并且最大好处是操作一个寄存器时候,不用考虑页面的问题。一切由

C 自动完成。

二:怎么位操作?

汇编中的位操作是很容易的。在C 中更简单。C 的头文件中已经对所有可能需要位操作的寄存器的每

一位都有定义名称:

如:PORTA 的每一个I/O 口定义为:RA0、RA1、RA2。。。RA7。OPTION 的每一位定义为:PS0、

PS1、PS2 、PSA 、T0SE、T0CS、INTEDG 、RBPU。可以对其直接进行运算和附值。

(文源网络,侵删)