在PIC单片机编程中,最初大多数应用者都采用的是汇编语言,而要把一个应用程序变得更加具有通用性和灵活性,C语言编程也给PIC单片机提供了更加方便的途径。目前,因为HIDE -TECH PICC破解版很多,所以HIDEPICC有比其他PICC有更多的用户,虽然它的编译效率不是最好。最好的是ccs,但没破解版,不过用HIDE PICC精心安排函数一样可以获得很高的编译效率。
使用汇编语言到C语言的转换编程,当然要求要有一定的C语言基础。
但要注意PICC不支持C++,这对于习惯了c++的朋友,还得对C语言有所了解。
对于C语言编程,首先程序代码的头文件一定要有:“#include<pic.h>”。它是很多头文件的集合,C编译器在pic.h中根据你的芯片自动载入相应的其他头文件。这样的头文件,相对来说在PIC系列单片机中比汇编好用。载人的头文件中,其实是声明芯片的寄存器和一些函数。例如:
可以看出和汇编的头文件中,对定义寄存器的方法是很类同的。汇编程序对应定义如下:
上述的两种定义方式,都是把自己的特殊地址定义为大家公认的名字。而对于汇编和C语言编程的种种对比如下,在编程中可以借鉴和参考。
1)寄存器赋值
如对TMRI赋值:
汇编中:MOVLW 200;MOVWF TMR1;当然得保证当前页面在0,不然会出错。
C语言:TMR1=200;//无论在任何页面都不会出错。可以看出来C是很直接了当的。并且最大好处是操作一个寄存器时候,不用考虑页面的问题。一切由C自动完成。
2)寄存器中的位操作
汇编中的位操作是很容易的。在C中更简单。
C的头文件中已经对所有可能需要位操作的寄存器的每一位都有定义名称。如:PORTA的每一个I/O口定义为:
RAO、RA1、RA2------RA7。OPTION的每一位定义为:PSO、PSI、PS2、PSA、TOSE、TOCS、INTEDG、RBPU。可以对其直接进行运算和赋值。
可以看出汇编和C语言的编程是大同小异的,只是C中不需要考虑页面的问题。
在汇编中定义一个内存虽是一件很小的问题.却要考虑太多的问题,稍微不注意就会出错。比如16位的运算等。用C就不需要考虑太多。如下实例:
16位的除法(C代码):
再例举给一个小的C程序代码,用RAO控制一个LED闪烁·
看看RAO=! RAO的意思:PIC对PORT寄存器操作都是先读取——修改—一写入。上句的含义是程序先读RAO,然后取反,最后把运算后的值重新写入RAO,这就实现了闪烁的功能。
上一篇:结合彩票生成程序谈谈VBA教学