您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制汇编语言到C语言的转换-PIC单片机 正文
汇编语言到C语言的转换-PIC单片机

汇编语言到C语言的转换-PIC单片机

点击数:7757 次   录入时间:03-04 11:42:55   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  在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系列单片机中比汇编好用。载人的头文件中,其实是声明芯片的寄存器和一些函数。例如:

42565

  可以看出和汇编的头文件中,对定义寄存器的方法是很类同的。汇编程序对应定义如下:

4288

  上述的两种定义方式,都是把自己的特殊地址定义为大家公认的名字。而对于汇编和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。可以对其直接进行运算和赋值。

42885

  可以看出汇编和C语言的编程是大同小异的,只是C中不需要考虑页面的问题。



www.55dianzi.com

  在汇编中定义一个内存虽是一件很小的问题.却要考虑太多的问题,稍微不注意就会出错。比如16位的运算等。用C就不需要考虑太多。如下实例:
  
  16位的除法(C代码):

4285

42855

42822

42582

  再例举给一个小的C程序代码,用RAO控制一个LED闪烁·

458983

  看看RAO=! RAO的意思:PIC对PORT寄存器操作都是先读取——修改—一写入。上句的含义是程序先读RAO,然后取反,最后把运算后的值重新写入RAO,这就实现了闪烁的功能。




本文关键字:单片机  C语言  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制